猿问

使用 iText 在 Java 中合并 PDF 时出现意外的不同页面大小

我有以下代码片段来合并两个单页 PDF 文件(第一个和第二个):


byte[] codes = IOUtils.toByteArray(resource.getURI());

PdfReader first = new PdfReader(firstBytes);

PdfReader second = new PdfReader(secondBytes);

Document document = new Document(PageSize.A4);

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

PdfCopy copy = new PdfCopy(document, byteArrayOutputStream);

document.open();

copy.addDocument(first);

copy.addDocument(second);

document.close();

return byteArrayOutputStream.toByteArray();

接下来我有以下测试:


byte[] generated = new Merger(...).generate(...); // Location of the snippet above

File file = new File("dir", "generated.pdf");

FileUtils.writeByteArrayToFile(file , generated);

PdfReader pdfReader = new PdfReader(new FileInputStream(file));

assertThat(pdfReader.getNumberOfPages()).isEqualTo(2);

此测试在本地运行良好,但在我们的构建服务器上失败。


在本地生成的 PDF 看起来只包含两个 A4 页面在构建服务器上有三个页面:


第一个文件

一页空白

第二个文件

前两页好像是letter格式,而最后一页好像是A4纸。


我该如何解决?


编辑:一些额外的信息。本地操作系统是 Windows。构建系统运行Linux。


狐的传说
浏览 468回答 1
1回答

神不在的星期二

第一个生成的文档是使用飞碟库生成的。它是通过在 css 中设置页面大小来修复的。我对问题所在位置的假设是完全错误的。对不起。
随时随地看视频慕课网APP

相关分类

Java
我要回答