如何在iTextSharp中制作多页页面?

use*_*149 1 c# itext

我有用 iTextSharp 制作的单页文档(A4 尺寸,纵向)。现在我复制第一页,将其粘贴为第二页 - 有两个相同的页面。在 Acrobat Reader 中,可以选择每页打印多张纸 - 因此我可以将这 2 页横向打印在 1 页上。

如何仅使用 iTextSharp 达到相同的效果?

Bru*_*gie 5

请阅读有关如何使用 iText 7 的教程,更具体地说第 6 章:重用现有 PDF 文档

在该章中,您将找到一个名为的示例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();
Run Code Online (Sandbox Code Playgroud)

在此示例中,我们将现有 PDF 的 4 页添加到一页中。该原理称为N-upping,即用 2 的幂替换 N。在示例中,我们进行 4-upping;你想要2-up。将 4-up 示例更改为 2-up 示例只需应用一些简单的数学即可。

您还将受益于阅读此常见问题解答条目:如何将 A4 尺寸的 PDF 转换为 PDF 小册子?如果您仍在使用旧版本的 iText,您可以阅读iText 5 版本的常见问题解答条目