java - 将 PDF 与 iText 2.1.7 合并会导致它们缩小

标签 java pdf itext

我正在使用 iText 2.1.7 将一些 PDF 文档合并为一个 PDF。下面的代码似乎工作得很好,但在某些情况下,渲染的 PDF 似乎会稍微缩小,例如如果在处理之前直接打印,则缩放为 PDF 的 90%。

有办法保持当前大小吗?

private void doMerge(List<InputStream> list, OutputStream outputStream) throws DocumentException, IOException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, outputStream);
        document.open();
        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
                PdfImportedPage page = writer.getImportedPage(reader, i);
                //add the page to the destination pdf
                cb.addTemplate(page, 0, 0);
            }
        }
        outputStream.flush();
        document.close();
        outputStream.close();
    }

最佳答案

该 API 已在该版本中可用。我什至建议使用 PdfSmartCopy 而不是 PdfCopy (或 PdfCopyFields 如果表单字段在里面)。

private PdfSmartCopy copier;

public void SomeMainMethod(){

 Document finalPdf = new Document();
 copier = new PdfSmartCopy(finalPdf, outputstream);
 //Start adding pdfs
 finalPdf.open();

 //add n documents
 addDocuments(...);

 finalPdf.close();
 formCopier.close();
}

public void addDocument(InputStream pdfDocument, int startPage, int endPage){
 PdfReader reader= new PdfReader(pdfDocument);

 int startPage = 1;
 int endPage = reader.getNumberOfPages();

 for (int i = startPage; i <= endPage; i++) {
    copier.addPage(this.copier.getImportedPage(reader,i));
 }

 if(copier!=null){
 //Important: Free Memory!
    copier.flush();
    copier.freeReader(reader);
 }
 if (reader!=null) {
    reader.close();
    reader=null;
 }
 pdfDocument.close();
}

关于java - 将 PDF 与 iText 2.1.7 合并会导致它们缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53123985/

相关文章:

c# - 使用itextsharp将图像设置为pdf中的水印的问题

java - Android 通过 kotlin 返回非空字体

java - LIBGDX,安卓 : deadlock killing app when when returning captured picture

java - 告诉intelliJ在java项目中使用scalac编译模块?

pdf - ps2pdf错误? pdf 输出相对于 ps 输出旋转

pdf - 如何在手机浏览器上显示pdf?

php - 使用 php 在 PDF 中嵌入视频/flash

java - 使用 ITextRenderer 生成 PDF 表单 HTML

javascript - iText PDFReader 打开速度极慢

java - HTMLUnit 认为提交按钮是文本输入