使用PDFBox合并Pdf文件

Rau*_*han 4 java pdf merge pdfbox

我必须使用Apache的PdfBox合并两个pdf文件。我已经采取了物理pdf文件。下面是代码:

PDFMergerUtility ut = new PDFMergerUtility();
ut.addSource(path1);
ut.addSource(path2);
ut.setDestinationFileName(path3);
ut.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
Run Code Online (Sandbox Code Playgroud)

文件已完美合并,但是具有一些约束,如下所示:

  1. 我正在代码本身中创建第一个文件,因此它是PDDocument对象。
  2. 我必须与第一个文件合并的文件是字节数组格式。
  3. 我不需要保存合并的文件,但需要将其转换为字节数组。

请任何人帮助我达到此要求。

Til*_*err 5

呼叫PDFMergerUtility.appendDocument(PDDocument destination, PDDocument source)而不是合并。要从字节数组加载,请调用PDDocument.load(array)

顺便说一句:我不鼓励合并您自己创建的PDDocument对象,如果您有字体子集,这将失败(请参阅问题PDFBOX-3243)。最好将它们保存起来(例如在中ByteArrayOutputStream),然后重新加载然后合并。要从ByteArrayOutputStream获取字节数组,请使用ByteArrayOutputStream.tobytearray()

  • `ByteArrayOutputStream baos = new ByteArrayOutputStream(); doc.save(baos); doc.close(); doc = PDDocument.load(baos.toByteArray());` (2认同)