我试图将HTML转换为A4页面大小的PDF。但是内容太长,PDF分为两页。我只想把它分成一页。所以我的想法是转换为PDF A3大小,然后缩小为A4大小。 但是另一个问题是将页面尺寸从A3缩小到A4。
答案 0 :(得分:2)
1)将您的html转换为A3大小的文档
2)遍历页面并将每个页面复制为一个formXObject
3)对于每个页面formXObject:
a)用0.5的系数对其进行缩放;
b)添加到生成的文档中。
适当的Java代码如下(由于iText的API相同,因此将其移植到C#应该没有问题):
// 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();