Проблема с вашим документом заключается в следующем: каждая страница разделяет много (возможно, даже все) шрифтов / xobjets документа.Копируя страницы, iText не знает, нужны ли ресурсы на странице: он просто копирует их, и поэтому вы получаете такие огромные PDF-файлы.
Опция, которую вы ищете - iText pdfSweep
.
Общим назначением является редактирование содержимого какой-либо страницы, однако помимо этого pdfSweep
также оптимизирует страницы при редактировании.
Итак, как решить проблему?
a) Укажите область редактирования как вырожденный прямоугольник
b) Очистите страницы (разделенных документов или исходного документа).):
PdfCleanUpLocation dummyLocation = new PdfCleanUpLocation(1, new Rectangle(0, 0, 0, 0), null);
PdfDocument pdfDocument = new PdfDocument(new PdfReader(input), new PdfWriter(output));
PdfCleanUpTool cleaner = (cleanUpLocations == null)
? new PdfCleanUpTool(pdfDocument, true)
: new PdfCleanUpTool(pdfDocument, cleanUpLocations);
cleaner.cleanUp();
pdfDocument.close();
Я пробовал этот подход для обработки первого из ваших результирующих документов (который представляет первую страницу).
Размер документа до pdfSweep
обработка: 9282 КБ.
Размер документа после pdfSweep
обработка: 549 КБ.