Пожалуйста, прочитайте учебник о том, как использовать IText 7, более конкретно Chapter 6: Reusing existing PDF documents
В этой главе вы найдете пример под названием TheGoldenGateBridge_N_up
:
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC));
//Original page
PdfPage origPage = sourcePdf.getPage(1);
Rectangle orig = origPage.getPageSize();
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
//N-up page
PageSize nUpPageSize = PageSize.A4.rotate();
PdfPage page = pdf.addNewPage(nUpPageSize);
PdfCanvas canvas = new PdfCanvas(page);
//Scale page
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
nUpPageSize.getWidth()/orig.getWidth()/2f,
nUpPageSize.getHeight()/orig.getHeight()/2f);
canvas.concatMatrix(transformationMatrix);
//Add pages to N-up page
canvas.addXObject(pageCopy, 0, orig.getHeight());
canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight());
canvas.addXObject(pageCopy, 0, 0);
canvas.addXObject(pageCopy, orig.getWidth(), 0);
// close the documents
pdf.close();
sourcePdf.close();
В этом примере мы добавляем 4 страницы существующего PDF на одну страницу. Принцип называется N-upping, в котором вы заменяете N силой 2. В примере мы делаем 4-upping; вы хотите 2-upping. Изменение примера 4-up в примере 2-up - это только вопрос применения простой математики.
Вам также будет полезно прочитать эту запись в FAQ: How to convert an A4 size PDF to a PDF booklet? Если вы все еще используете старую версию iText, вы можете прочитать iText 5 version of the FAQ entry.
Примечание: Я вижу проголосовавший и важный комментарий. Обратите внимание, что ваш вопрос серьезно испорчен, потому что вы не указываете, какую версию iText вы используете (я предполагаю самый последний), и вы не публикуете какой-либо код, который показывает, что вы пробовали (это не делается на Переполнение стека).
_Research; эксперимент; отлаживать; спросите об этом; эксперимент; отлаживать; корабль!_. [ask] - – MickyD