red6 / pdfcompare

A simple Java library to compare two PDF files
Apache License 2.0
220 stars 66 forks source link

Exception while compaing pdfs #99

Closed greenhalos closed 3 years ago

greenhalos commented 3 years ago

I get an exception when comparing two PDFs:

de.redsix.pdfcompare.RenderingException: Error while rendering page 1 of expected document
    at de.redsix.pdfcompare.PdfComparator.getImage(PdfComparator.java:495)
    at de.redsix.pdfcompare.PdfComparator.lambda$drawImage$13(PdfComparator.java:455)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(boolean)'
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205)
    at de.redsix.pdfcompare.PdfComparator.getImage(PdfComparator.java:487)
    ... 4 common frames omitted
Caused by: java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(boolean)'
    at org.apache.pdfbox.pdmodel.font.CMapManager.parseCMap(CMapManager.java:74)
    at org.apache.pdfbox.pdmodel.font.PDFont.readCMap(PDFont.java:214)
    at org.apache.pdfbox.pdmodel.font.PDFont.loadUnicodeCmap(PDFont.java:147)
    at org.apache.pdfbox.pdmodel.font.PDFont.<init>(PDFont.java:115)
    at org.apache.pdfbox.pdmodel.font.PDType0Font.<init>(PDType0Font.java:180)
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:97)
    at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:146)
    at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:66)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:933)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:514)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:492)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:155)
    at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:277)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:347)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:268)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:240)
    at de.redsix.pdfcompare.PdfComparator.renderPageAsImage(PdfComparator.java:535)
    at de.redsix.pdfcompare.PdfComparator.lambda$drawImage$10(PdfComparator.java:452)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    ... 3 common frames omitted

As far as my observations go it is because of a wrong version of org.apache.pdfbox:fontbox:2.0.19 which should match the version of org.apache.pdfbox:pdfbox:2.0.24

finsterwalder commented 3 years ago

Are you using the current version of PdfCompare? That uses PdfBox 2.0.24. Do you include a different version of PdfBox yourself?

greenhalos commented 3 years ago

I updated to 1.1.59.

Never mind, after further investigations I saw that another dependency uses org.apache.pdfbox:fontbox:2.0.19, that is the reason.

I will close this issue.

Thanks for providing pdfcompare :wave: