在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){
}
答案 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