PDFBox将PDF文件作为页面插入另一个PDF文件

时间:2017-12-12 18:32:28

标签: java pdfbox smb

在java web应用程序中使用PDFBox。 我有一个PDF文件,代表多张图纸或蓝图。还有其他PDF文件表示对父文件的修改。我想将这些页面插入到第1页和第2页之间的父PDF文件中。

我找到了关于合并和添加页面的文章,但不是我在这里需要的。

某些方向会非常有用。

到目前为止我的代码:

try{

                InputStream in = null;
                OutputStream out = null;
                PDDocument document = null;

                String parentfile = "";
                for(DLDrawingFile dldf: dldwg.getDldrawingfileList()){
                    System.out.println("DocsVisionDrawingList: AcrobatRotateAndMerge_3: " + dldf.getDrawingnumber() + " " + dldf.getTypeID());

                    if(parentfile.equals("") && dldf.getTypeID().equals("DRAWING")){

                        NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(attachmentRoot_DOMAIN,attachmentRoot_ID,attachmentRoot_PW);

                        SmbFile file = new SmbFile("smb:" + dldf.getDldrawingfile(), auth);
                        file.connect();

                        File file2 = new File(dldf.getDldrawingfile()); 

                        in = new BufferedInputStream(new SmbFileInputStream(file));

                        document = PDDocument.load(in);

                        parentfile = dldf.getDldrawingfile();
                        System.out.println("DocsVisionDrawingList: AcrobatRotateAndMerge_3: Parent: " + parentfile);
                    }
                    else{
                        System.out.println("DocsVisionDrawingList: AcrobatRotateAndMerge_3: Child: " + dldf.getDldrawingfile());
                        //this is where the child files would be iterated over.

                    }
                }

            }
            catch(Exception e){

            }

1 个答案:

答案 0 :(得分:0)

警告 一个好的初学者解决方案。但是,在下面的注释中,MLK提到它不完整。。此方法的另一个问题是,它仅在最后一段代码时才起作用,因为它关闭了COSStream,这将阻止您添加任何将来的代码。文字

我知道这是旧帖子,但是如果其他人遇到相同的问题,这是为我工作的anwser。蒂尔曼·豪舍尔的方法对我有用

PDDocument document = new PDDocument();
for (int numberOfPages = 0; numberOfPages < 10; numberOfPages++) {
            //Creating a blank page
            PDPage blankPage = new PDPage();
            //Adding the blank page to the document
            document.addPage(blankPage);
        }
PDPageTree mergePD = document.getPages();
PDDocument doc1 = PDDocument.load(file1);
PDDocument doc2 = PDDocument.load(file2);



//the left argument is the page number of the pdf that is being inserted
   //the right argument is the page number of the original pdf that places the inserted pdf

mergePD.insertAfter(doc1.getPage(0),document.getPage(0)); //creates a new page after page 0
mergePD.insertAfter(doc2.getPage(0),document.getPage(1)); //creates a new page after page 1