如何在 itext7 C# 中将页面大小从 A3 缩放到 A4?
How to scale the page size from A3 to A4 in itext7 C #?
我尝试将 HTML 转换为 A4 页面大小的 PDF。但是内容太长,PDF 分成了 2 页。我只想把它放在一页上。所以我的想法是将 PDF 转换为 A3 大小,然后缩小到 A4 大小。
但另一个问题是从 A3 页面大小缩小到 A4 页面大小。
1) 将您的 html 转换为 A3 尺寸的文档
2) 遍历页面并将每个页面复制为 formXObject
3) 对于每个页面 formXObject:
a) 用 0.5 系数缩放它;
b) 添加到生成的文档中。
合适的Java代码如下(移植到C#应该没有问题,因为iText的API是一样的):
// 1
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(baos));
pdfDocument.setDefaultPageSize(PageSize.A3);
HtmlConverter.convertToPdf(new FileInputStream(sourcePath), pdfDocument);
PdfDocument resultantDocument = new PdfDocument(new PdfWriter(destPath));
pdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
// 2
for (int i = 1; i <= pdfDocument.getNumberOfPages(); i++) {
PdfPage page = pdfDocument.getPage(i);
PdfFormXObject formXObject = page.copyAsFormXObject(resultantDocument);
PdfCanvas pdfCanvas = new PdfCanvas(resultantDocument.addNewPage());
// 3a and 3b
pdfCanvas.addXObject(formXObject, 0.5f, 0, 0, 0.5f, 0, 0);
}
pdfDocument.close();
resultantDocument.close();
我尝试将 HTML 转换为 A4 页面大小的 PDF。但是内容太长,PDF 分成了 2 页。我只想把它放在一页上。所以我的想法是将 PDF 转换为 A3 大小,然后缩小到 A4 大小。 但另一个问题是从 A3 页面大小缩小到 A4 页面大小。
1) 将您的 html 转换为 A3 尺寸的文档
2) 遍历页面并将每个页面复制为 formXObject
3) 对于每个页面 formXObject:
a) 用 0.5 系数缩放它;
b) 添加到生成的文档中。
合适的Java代码如下(移植到C#应该没有问题,因为iText的API是一样的):
// 1
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(baos));
pdfDocument.setDefaultPageSize(PageSize.A3);
HtmlConverter.convertToPdf(new FileInputStream(sourcePath), pdfDocument);
PdfDocument resultantDocument = new PdfDocument(new PdfWriter(destPath));
pdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
// 2
for (int i = 1; i <= pdfDocument.getNumberOfPages(); i++) {
PdfPage page = pdfDocument.getPage(i);
PdfFormXObject formXObject = page.copyAsFormXObject(resultantDocument);
PdfCanvas pdfCanvas = new PdfCanvas(resultantDocument.addNewPage());
// 3a and 3b
pdfCanvas.addXObject(formXObject, 0.5f, 0, 0, 0.5f, 0, 0);
}
pdfDocument.close();
resultantDocument.close();