Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iText-将一个PDF的一部分添加到另一个PDF中_Pdf_Merge_Itext_Crop - Fatal编程技术网

iText-将一个PDF的一部分添加到另一个PDF中

iText-将一个PDF的一部分添加到另一个PDF中,pdf,merge,itext,crop,Pdf,Merge,Itext,Crop,我有两个PDF。一个是主PDF,另一个有一个图像,我需要插入到第一个。同样在第二个PDF中,插入该图像后,我需要连接第二个PDF的其余部分。解决方案是将带有图像的PDF页面叠加到主PDF上。然后连接它的其余部分。“design_section”是包含图像的PDF。此代码将执行以下操作: PdfReader confirmation_section = new PdfReader(SOURCE); PdfReader design_section = new PdfReader(S

我有两个PDF。一个是主PDF,另一个有一个图像,我需要插入到第一个。同样在第二个PDF中,插入该图像后,我需要连接第二个PDF的其余部分。

解决方案是将带有图像的PDF页面叠加到主PDF上。然后连接它的其余部分。“design_section”是包含图像的PDF。此代码将执行以下操作:

    PdfReader confirmation_section = new PdfReader(SOURCE);
    PdfReader design_section = new PdfReader(SOURCE2);

    PdfStamper stamper = new PdfStamper(confirmation_section, new FileOutputStream(RESULT));
    PdfImportedPage page = stamper.getImportedPage(design_section, 1);
    int c = confirmation_section.getNumberOfPages();
    PdfContentByte background;
    for (int i = 1; i <= c; i++) {
        background = stamper.getUnderContent(i);
        if(i == c)
            background.addTemplate(page, 0, 0);
    }


    int d = design_section.getNumberOfPages();

    if(d > 1)  {
        for(int f = 2; f <= d; f++) {
            stamper.insertPage(c + f, confirmation_section.getPageSize(1));
            page = stamper.getImportedPage(design_section, f);
            stamper.getOverContent(c + f - 1).addTemplate(page, 0, 0);
            System.out.println("here we are in the loop c + f is: " + (c + f));
        }
    }

    stamper.close();
PdfReader确认\u部分=新的PdfReader(来源);
PdfReader设计_部分=新PdfReader(来源2);
PdfStamper压模=新PdfStamper(确认部分,新文件输出流(结果));
PDFIImportedPage=母版。getImportedPage(设计部分,1);
int c=确认_section.getNumberOfPages();
PdfContentByte背景;
对于(int i=1;i 1){

因为(intf=2;f谢谢你的跟进。我确实读了很多很多遍)))嗯,老实说,至少有6次。我知道这只是一个摘录,我确信书中有更多有价值的信息,但尽管如此,我还是没有找到我想要的。在这篇文章中,它在哪里讨论、比较和区分PdfCopy PDFStamper和PDFReader/Writer,例如,从上添加页面将PDF转换为另一个?

可能会显示方法。将“addTemplate()”重命名为“addPage()”如何-导入的页面只是非常特殊的模板,任何模板都可以使用
addTemplate
添加。因此,按照您的建议重命名都是不合适的。模板具有特殊的含义。它意味着类似于接口或抽象类的东西。它是您可以构建的通用工作框架。在我看来,我对它没有做任何修改上面的“模板”…看看pdf 995(编辑),有非常非常清晰的用户界面。iText应该在类中使用这些术语。术语如“合并现有pdf”“提取pdf页面”(我知道),iText是一个图书馆,这只是为了灵感。)如果iText真的很开心,好的。)然后是PdfCopy PDFStamper和PDFReader/Writer。我们真的需要这三个吗?在图书馆的架构方向上,这里不需要去修饰一下吗?我最后在这三个方面进行了多次交互在我开始工作之前。每次迭代都是一个死胡同,给定的PDF合并例程有一些隐藏的限制,然后我会尝试下一个……这似乎很愚蠢……这些工具都有自己的用途。如果你阅读我书第6章中的概述表,你可以很容易地选择你需要的类: