我有多个PDF文档,我正在合并到一个文档中。目标是创建一个全新的大纲。这些子文档中的每一个都可以有自己的轮廓,我需要删除它们并在每个文档的大纲中有一个条目。如果我单击合并文档中的大纲,则必须将用户带到插入子文档的特定页面。
我正在合并并删除现有的大纲如下:
InputStream intputSteam = googleDriveService.executeMediaAsInputStream(fileId);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
PdfDocument pdfDocument1 = new PdfDocument(new PdfReader(bais));
PdfDocument pdfDocument2 = new PdfDocument(new PdfReader(intputSteam));
PdfDocument mergedDocument = new PdfDocument(new PdfWriter(baos));
PdfMerger merger = new PdfMerger(mergedDocument);
merger.setCloseSourceDocuments(true)
.merge(pdfDocument1, 1, pdfDocument1.getNumberOfPages())
.merge(pdfDocument2, 1, pdfDocument2.getNumberOfPages());
mergedDocument.getCatalog().remove(PdfName.Outlines);
mergedDocument.close();
合并后的文档会上传到Google云端硬盘。稍后在执行中,合并的文档将从Google云端硬盘加载到内存中,我将添加如下大纲:
InputStream inputStream = driveService.files().get(fileId).executeMediaAsInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfReader pdfReader = new PdfReader(inputStream);
PdfWriter pdfWriter = new PdfWriter(baos);
PdfDocument doc = new PdfDocument(pdfReader, pdfWriter);
PdfOutline pdfOutine = doc.getOutlines(false);
pdfOutine.addOutline("test #1").addAction(PdfAction.createGoTo(PdfExplicitDestination.createFit(5)));
doc.close();
//将文档上传到Google云端硬盘
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
File fileMetadata = new File();
fileMetadata.setName("generated-doc.pdf");
InputStreamContent inputStreamContent = new InputStreamContent("application/pdf", bais);
driveService.files().create(fileMetadata, inputStreamContent)
.execute();
在生成的文档中,子文档中的大纲已被删除,但尚未添加新大纲。我添加大纲的方式有问题吗?