iText:成功调整一页pdf的大小,但是当pdf文档中有多个页面时会失败 [英] iText: Successfully resize one page pdf, but fail when there are multiple pages in the pdf document
本文介绍了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屋!
查看全文