iText:成功调整一页pdf的大小,但是当pdf文档中有多个页面时会失败 [英] iText: Successfully resize one page pdf, but fail when there are multiple pages in the pdf document

查看:1728
本文介绍了iText:成功调整一页pdf的大小,但是当pdf文档中有多个页面时会失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将pdf中的每个页面的大小调整为合法大小。以下是我到目前为止的内容

I need to resize every page in my pdf from letter to legal size. Here is what I got so far

 public void resize (float x, float y, float scale) throws Exception {
    PdfReader reader = new PdfReader(pdfIn);
    Document doc = new Document(PageSize.LEGAL, 0, 0, 0, 0);
    PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(pdfOut));
    doc.open();
    PdfContentByte cb = writer.getDirectContent();
    for(int i=1; i<=reader.getNumberOfPages(); i++){
        PdfImportedPage page = writer.getImportedPage(reader, i);
        cb.addTemplate(page, scale, 0, 0, scale, x, y);
    }
    doc.close();
}

即使调整大小正确,输出pdf也只包含1页。请帮忙吗?

Even though the resize is correct, the output pdf only contain 1 page. Any help please?

推荐答案

以下是答案。我在循环中需要 doc.newPage(),阅读 Marc B 对我原始问题的评论以获取更多信息

Here is the answer. I need doc.newPage() in the loop, read Marc B comment on my original question for more information

public void resize (float x, float y, float scale) throws Exception {
    PdfReader reader = new PdfReader(pdfIn);
    Document doc = new Document(PageSize.LEGAL, 0, 0, 0, 0);
    PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(pdfOut));
    doc.open();
    PdfContentByte cb = writer.getDirectContent();
    for(int i=1; i<=reader.getNumberOfPages(); i++){
        doc.newPage();
        PdfImportedPage page = writer.getImportedPage(reader, i);
        cb.addTemplate(page, scale, 0, 0, scale, x, y);
    }
    doc.close();
}

这篇关于iText:成功调整一页pdf的大小,但是当pdf文档中有多个页面时会失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆