编辑PDF时,iText7(PDFSweep)抛出IllegalStateException错误

时间:2018-10-15 17:17:08

标签: itext

当我将pdfAutoSweep.cleanUp(pdf)用于特定的PDF时,出现此异常:

  java.lang.IllegalStateException: Coordinate outside allowed range at   
 com.itextpdf.kernel.pdf.canvas.parser.clipper.ClipperBase.rangeTest(ClipperBase.java:76)
at com.itextpdf.kernel.pdf.canvas.parser.clipper.ClipperBase.rangeTest(ClipperBase.java:78)
at com.itextpdf.kernel.pdf.canvas.parser.clipper.ClipperBase.addPath(ClipperBase.java:149)
at com.itextpdf.kernel.pdf.canvas.parser.clipper.ClipperBase.addPaths(ClipperBase.java:321)
at com.itextpdf.kernel.pdf.canvas.parser.clipper.ClipperOffset.execute(ClipperOffset.java:404)
at com.itextpdf.pdfcleanup.PdfCleanUpFilter.filterStrokePath(PdfCleanUpFilter.java:454)
at com.itextpdf.pdfcleanup.PdfCleanUpFilter.filterStrokePath(PdfCleanUpFilter.java:223)
at com.itextpdf.pdfcleanup.PdfCleanUpProcessor.writePath(PdfCleanUpProcessor.java:763)
at com.itextpdf.pdfcleanup.PdfCleanUpProcessor.filterContent(PdfCleanUpProcessor.java:481)
at com.itextpdf.pdfcleanup.PdfCleanUpProcessor.invokeOperator(PdfCleanUpProcessor.java:402)
at com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor.processContent(PdfCanvasProcessor.java:281)
at com.itextpdf.pdfcleanup.PdfCleanUpProcessor.processContent(PdfCleanUpProcessor.java:377)
at com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor.processPageContent(PdfCanvasProcessor.java:302)
at com.itextpdf.pdfcleanup.PdfCleanUpProcessor.processPageContent(PdfCleanUpProcessor.java:186)
at com.itextpdf.pdfcleanup.PdfCleanUpTool.cleanUpPage(PdfCleanUpTool.java:304)
at com.itextpdf.pdfcleanup.PdfCleanUpTool.cleanUp(PdfCleanUpTool.java:275)
at com.itextpdf.pdfcleanup.autosweep.PdfAutoSweep.cleanUp(PdfAutoSweep.java:190)
at com.q1d.insider.redaction.PDFRedactor.removeContent(PDFRedactor.java:98)
at com.q1d.insider.redaction.PDFRedactor.main(PDFRedactor.java:250)

您可以使用以下链接下载PDF:https://drive.google.com/open?id=106xgE0CcGjGqEovPauUfHF-eyO0XJIYL

1 个答案:

答案 0 :(得分:1)

您的异常是由于pdfSweep中的常量引起的。 每当pdfSweep需要修改内容时,可能需要修改基础内容(例如,线条绘制操作,表格,图像等)

您可以想象,涉及很多几何。在内部,iText倾向于使用整数作为坐标。但是PDF文档使用浮点数。

或者,引用API

  

在清理带有线条艺术的文档时,有很多   带浮点数的计算。全部翻译   乘以该系数就可以得出定点数。改变它   调整计算的准确性。

pdfSweep中有一个特定的常量可以处理转换。该常数的默认值有时可能会导致计算过程中途出现infinite浮点值。

解决该问题的方法是更改​​常数。

常量是floatMultiplier中的pdfCleanupTool