iText7 (PDFSweep) выдает ошибку IllegalStateException при редактировании PDF - PullRequest
0 голосов
/ 15 октября 2018

когда я использую 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 голосов
/ 18 октября 2018

Ваше исключение вызвано из-за константы в pdfSweep.Всякий раз, когда pdfSweep необходимо что-то редактировать, ему может потребоваться изменить базовый контент (например, операции рисования линий, таблицы, изображения и т. Д.)

Как вы можете себе представить, задействовано много геометрии.Внутренне iText предпочитает работать с целыми числами для координат.Однако PDF-документы работают с числами с плавающей запятой.

Или, чтобы процитировать API

Когда документ с штриховыми рисунками очищается, существует много вычислений с числами с плавающей запятой,Все они переводятся в числа с фиксированной запятой путем умножения на этот коэффициент.Измените его, чтобы настроить точность вычислений.

В pdfSweep есть специальная константа, которая обрабатывает преобразование.Значение по умолчанию этой константы может иногда приводить к infinite значению с плавающей точкой в ​​середине вычислений.

Чтобы решить эту проблему, нужно изменить константу.

Константа - floatMultiplierв pdfCleanupTool

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...