如何在itext7 C#中将页面大小从A3缩放到A4?

时间:2019-05-30 11:21:59

标签: c# itext7

我试图将HTML转换为A4页面大小的PDF。但是内容太长,PDF分为两页。我只想把它分成一页。所以我的想法是转换为PDF A3大小,然后缩小为A4大小。 但是另一个问题是将页面尺寸从A3缩小到A4。

1 个答案:

答案 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();