【发布时间】:2014-10-25 14:33:58
【问题描述】:
我在使用 iText 合并不同宽度的文档时遇到问题。
下面是我用来合并的代码。
public static void doMerge(List<InputStream> list, OutputStream outputStream) throws Exception {
Rectangle pagesize = new Rectangle(1700f, 20f);
com.itextpdf.text.Document document = new com.itextpdf.text.Document(pagesize);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
document.setPageSize(pagesize);
com.itextpdf.text.pdf.PdfContentByte cb = writer.getDirectContent();
for (InputStream in : list){
PdfReader reader = new PdfReader(in);
for (int i = 1; i <= reader.getNumberOfPages(); i++){
document.newPage();
//import the page from source pdf
com.itextpdf.text.pdf.PdfImportedPage page = writer.getImportedPage(reader, i);
//calculate the y for merging it from top
float y = document.getPageSize().getHeight() - page.getHeight();
//add the page to the destination pdf
cb.addTemplate(page, 0, y);
}
reader.close();
in.close();
}
outputStream.flush();
document.close();
outputStream.close();
}
pdf 的第一页宽 14 英寸,高 13 英寸。文档上的所有其他页面总是比它小。
我想将所有文档完全合并到一个文档中。
我不知道如何设置单个合并文档的宽度和高度。
我认为Rectangle pagesize = new Rectangle(1700f, 20f); 应该这样做,但它不起作用意味着如果将其更改为Rectangle pagesize = new Rectangle(1700f, 200f);,则文档无效。
请进一步指导我。
【问题讨论】:
-
您想保留原始 PDF 的尺寸吗?在这种情况下,您应该改用
PdfCopy。