Я следовал руководству по этому URL-адресу: http://developers.itextpdf.com/content/itext-7-jump-start-tutorial/chapter-6-reusing-existing-pdf-documents
Следуя этому руководству, у меня возникла проблема, когда некоторый контент из PDF-файла не был скопирован в целевой PDF-файл при использовании copyAsFormXObject (для которого я отправил запрос в службу поддержки). Альтернативой, которую я нашел в то же время, было то, что я мог использовать метод copyPagesTo PdfDocument и просто открыть страницу, которая была скопирована с помощью getPage, в целевом PDF-файле. Исходя из этого, я могу создать PdfCanvas из существующей страницы и выполнить наши преобразования (например, масштабирование) на объекте.
Кажется, это работает точно так же, как код в вышеупомянутом руководстве, за исключением того, что PDF-файлы, которые я нашел, где содержимое не было скопировано, теперь кажется, что содержимое скопировано.
Есть ли какие-либо недостатки в использовании метода copyPagesTo для копирования содержимого, в отличие от того, что предлагает руководство (copyAsFormXObject)? Производительность, память или посторонний невидимый контент и т.д.?
Код, демонстрирующий эту проблему:
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument origPdf = new PdfDocument(new PdfReader(src));
PdfPage origPage = origPdf.getPage(1);
PdfPage page = pdf.addNewPage();
PdfCanvas canvas = new PdfCanvas(page);
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
canvas.addXObject(pageCopy, 0, 0);
pdf.close();
origPdf.close();
Код, которого нет:
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument origPdf = new PdfDocument(new PdfReader(src));
origPdf.copyPagesTo(1,2,pdf);
pdf.close();
origPdf.close();
PdfFormXObject
. Я должен проверить и добавить это, потому что любому, кто знаком с PDF, очевидно, что страница имеет запись/Annots
, но эти/Annots
никогда не могут быть частью XObject. Если это не ясно из учебника, пожалуйста, объясните, как я могу улучшить текст. - person Bruno Lowagie   schedule 01.09.2016