当我将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
答案 0 :(得分:1)
您的异常是由于pdfSweep
中的常量引起的。
每当pdfSweep
需要修改内容时,可能需要修改基础内容(例如,线条绘制操作,表格,图像等)
您可以想象,涉及很多几何。在内部,iText倾向于使用整数作为坐标。但是PDF文档使用浮点数。
或者,引用API
在清理带有线条艺术的文档时,有很多 带浮点数的计算。全部翻译 乘以该系数就可以得出定点数。改变它 调整计算的准确性。
pdfSweep中有一个特定的常量可以处理转换。该常数的默认值有时可能会导致计算过程中途出现infinite
浮点值。
解决该问题的方法是更改常数。
常量是floatMultiplier
中的pdfCleanupTool