Используя Apache PDFBox, я редактирую существующий документ, и я хотел бы взять одну страницу из этого документа и просто клонировать его, копируя все содержащиеся в нем элементы. Как дополнительный поворот, я хотел бы получить ссылку на все PDField
s для любых полей формы на этой вновь клонированной странице. Вот код, который я пытался до сих пор:pdfbox: как клонировать страницу
PDPage newPage = new PDPage(lastPage.getCOSDictionary());
PDFCloneUtility cloner = new PDFCloneUtility(pdfDoc);
pdfDoc.addPage(newPage);
cloner.cloneMerge(lastPage, newPage);
// there doesn't seem to be an API to read the fields from the page, need to filter them out from the document.
List<PDField> newFields = readPdfFields(pdfDoc);
Iterator<PDField> i = newFields.iterator();
while (i.hasNext()) {
if (i.next().getWidget().getPage() != newPage)
i.remove();
}
readPdfFields
это вспомогательный метод, я написал, чтобы получить все поля документа с помощью AcroForm.
Но этот код, по-видимому, приводит к некоторому сбою/зависанию в моей JVM - я не смог отлаживать то, что происходит, но я предполагаю, что на самом деле это не правильный способ клонирования страницы. Что?
Я не могу помочь вам клонировать страницу с PDFbox, но страница в формате pdf - это не то, что вы можете подумать. Например, acrofields не являются частью страницы. Acrofields находятся в каталоге (pdf root element) и указывают на страницы, где они должны появляться. Клонирование полей на новую страницу требует создания всех полей с новым именем и добавления их в массив acrofields со ссылкой на вашу новую страницу или, если поля должны быть одинаковыми полями, вам нужно добавить новую страницу к массиву страниц каждого поля. – thst
@thth, я вижу. Кажется, я немного из глубины. Мои знания в PDF ограничены. Есть, по крайней мере, эти первые четыре строки, чтобы получить мне новую страницу с (неформатными) элементами старой страницы в них? – Dan
Как я уже сказал, я не могу помочь вам с использованием PDFBox. Но stackoverflow может помочь: Посмотрите на этот вопрос [клонирование страницы]. Загружается PDF-файл, и его страницы импортируются в один и тот же pdf-файл. Но это также должно работать и на ваш сценарий. Извините за то, что вы не стали более полезными! –
thst