We keep getting this error while converting HTML documents to PDF documents
com.aspose.pdf.internal.ms.System.lh: Invalid operation
at com.aspose.pdf.internal.l108t.l6if.lI(Unknown Source)
at com.aspose.pdf.internal.l108h.l1j.lI(Unknown Source)
at com.aspose.pdf.internal.l108h.ld.lf(Unknown Source)
Gradle dependency in use:
implementation (group: ‘com.aspose’, name: ‘aspose-pdf’, version: ‘25.4’)
Code:
public void convertHtmlStringToPdf(String htmlContent, ByteArrayOutputStream outputStream) throws Exception {
// Use Aspose.PDF’s HtmlLoadOptions to load HTML content
long asposeProcessingTime= Instant.now().toEpochMilli();
HtmlFragment htmlFragment = new HtmlFragment(htmlContent);
HtmlLoadOptions options = new HtmlLoadOptions();
htmlFragment.setHtmlLoadOptions(options);
options.setHtmlMediaType(HtmlMediaType.Screen);
options.setInputEncoding(ENCODING_UTF);
Document pdfDoc = new Document();
TextState textState = getDefaultFont();
pdfDoc.getPageInfo().setDefaultTextState(textState);
pdfDoc.getPages().add().getParagraphs().add(htmlFragment);
pdfDoc.save(outputStream);
pdfDoc.close();
}
Steps taken to try and resolve this error:
- We have added necessary fonts like Microsoft core fonts and symbol.ttf to the container , but we still keep getting this error.
- Added fallback font:
 private static @NotNull TextState getDefaultFont() {
 //Setting Default Font
 FontRepository.getSources().add(new FolderFontSource(“/usr/local/share/fonts”));
 FontRepository.getSources().add(new FolderFontSource(“src/main/resources/static/fonts”)); //For passing the test case in local environment
 Font font = FontRepository.findFont(“NotoSans-Light”);
 TextState tstate = new TextState();
 tstate.setFont(font);
 return tstate;
 }
Despite taken above steps , the error keeps happening.
Can some help determine the root cause of this error and help us resolve this error.
Any help in this regards will be highly appreciated.
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              @prateek.saxena01
The error you’re encountering, com.aspose.pdf.internal.ms.System.lh: Invalid operation, typically indicates an issue with the input HTML content or the way it’s being processed. Here’s a structured approach to diagnose and resolve the issue:
Cause:
The error may stem from invalid HTML content, incorrect font configurations, or outdated library versions.
Solution:
- 
Check HTML Content: Ensure that the HTML content you are trying to convert is well-formed and valid. Invalid HTML can lead to unexpected behavior during conversion. 
- 
Update Aspose.PDF Version: You’re currently using version 25.4. Consider updating to the latest version of Aspose.PDF, as there may have been bug fixes or improvements related to HTML to PDF conversion.
 
- 
Review Font Configuration: Since you’ve already added necessary fonts, double-check that the font names used in your HTML match the fonts available in your environment. You can also try using a different font to see if the issue persists. 
- 
Set HtmlLoadOptions: Experiment with different settings in HtmlLoadOptions. For example, try settingoptions.setHtmlMediaType(HtmlMediaType.Print)instead ofHtmlMediaType.Screento see if it makes a difference.
 
- 
Error Handling: Implement error handling to catch exceptions and log more details about the HTML content being processed. This can help identify specific issues with the input. 
Next Steps:
Here’s a slight modification to your existing code to include error handling:
public void convertHtmlStringToPdf(String htmlContent, ByteArrayOutputStream outputStream) {
    Document pdfDoc = null; // Initialize pdfDoc here
    try {
        HtmlFragment htmlFragment = new HtmlFragment(htmlContent);
        HtmlLoadOptions options = new HtmlLoadOptions();
        options.setHtmlMediaType(HtmlMediaType.Print); // Try changing this
        options.setInputEncoding(ENCODING_UTF);
        htmlFragment.setHtmlLoadOptions(options);
        
        pdfDoc = new Document();
        TextState textState = getDefaultFont();
        pdfDoc.getPageInfo().setDefaultTextState(textState);
        pdfDoc.getPages().add().getParagraphs().add(htmlFragment);
        pdfDoc.save(outputStream);
    } catch (Exception e) {
        e.printStackTrace(); // Log the exception for debugging
    } finally {
        if (pdfDoc != null) {
            pdfDoc.close();
        }
    }
}
Please try these steps and let me know if they help resolve the issue or if you need further assistance!