#itext
#itext
Вопрос:
У меня более 200 документов PDF. Я хочу объединить все эти документы и добавить изображение на все страницы. Я также хочу создать титульный лист для объединенного PDF.
Комментарии:
1. Вы манипулируете существующим документом или создаете PDF-файл с нуля? Также: вам нужно приложить больше усилий к вашему вопросу: что вы имеете в виду, когда говорите «редактировать первую страницу»? Вы хотите что-то добавить? Вы хотите что-то изменить? Я проголосую за то, чтобы закрыть вопрос как «Непонятно, о чем спрашивают», если вы не уточните.
2. В have 200 pdf я хочу объединить все PDF-файлы и на всех страницах, которые мне нужны, добавить изображение. после объединения всех PDF-файлов я хочу создать титульный лист для объединенного PDF-файла.
Ответ №1:
Пожалуйста, взгляните на пример MergeWithToc2.
В этом примере мы используем PdfCopy
для объединения документов страницу за страницей. В упрощенном виде этот код выглядит следующим образом:
Document document = new Document();
PdfCopy copy = new PdfCopy(document, baos);
document.open();
PdfImportedPage page;
for (Map.Entry<String, PdfReader> entry : filesToMerge.entrySet()) {
page = copy.getImportedPage(entry.getValue(), i);
copy.addPage(page);
}
document.close();
Поскольку вы хотите изменить содержимое каждой страницы, вам также необходимо создать PageStamp
объект:
PageStamp stamp;
for ( ... ) {
stamp = copy.createPageStamp(page);
// do stuff with stamp.getUnderContent() or stamp.getOverContent();
stamp.alterContents();
}
Поскольку вы хотите добавить Image
, я бы использовал stamp.getOverContent().addImage(img, x, y)
.
Как вы можете видеть, мы также добавляем страницу с оглавлением (занимает 1 страницу) в конце. Мы хотим, чтобы эта страница была первой, поэтому мы переставляем страницы следующим образом:
reader = new PdfReader(baos.toByteArray());
n = reader.getNumberOfPages();
reader.selectPages(String.format("%d, 1-%d", n, n-1));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
stamper.close();
Пример MergeWithToc2 прекрасно объединяет эти разные части в один пример. Есть и другие варианты. Вы могли бы, например, создать титульную страницу в совершенно отдельном документе, а затем впоследствии объединить сопроводительную заметку и объединенный документ.