Если подход, предложенный в комментариях (создание в памяти документов для слияния / добавления), невозможен из-за проблем с производительностью, и вы не возражаете против добавления контента на новую страницу в документе, вы можете попробовать этот подход:
public static void main(String[] args) throws Exception {
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(DEST));
addContent(new Paragraph("Document Title"), pdfDocument);
mergePdf(new PdfDocument(new PdfReader(SRC)), pdfDocument);
addContent(new Div().add(new Image(ImageDataFactory.create("path_to_image"))), pdfDocument);
pdfDocument.close();
}
public static void mergePdf(PdfDocument in, PdfDocument pdfDocument) throws Exception {
in.copyPagesTo(1, in.getNumberOfPages(), pdfDocument, new PdfPageFormCopier());
}
public static void addContent(IBlockElement content, PdfDocument pdfDocument) throws Exception {
Document document = new Document(pdfDocument);
pdfDocument.addNewPage();
document.add(new AreaBreak(AreaBreakType.LAST_PAGE));
document.add(content);
}
Я написал пример кода на Java, но iText для Java и .NET используют одну и ту же кодовую базу, поэтому это не должно быть проблемой.
При таком подходе мы заставляем iText добавить новую страницу перед добавлением контента в высокоуровневый класс Document.Если вы хотите добавить изображения с использованием этого подхода, вам нужно будет обернуть их в IBlockElement, чтобы этот метод работал.Наиболее подходящим элементом будет Div one.
С уважением, Кевин