我有以下代码段可以合并两个单页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页面。在构建服务器上,共有三个页面:
前两页似乎是字母格式,而最后一页似乎是A4页面。
我该如何解决?
编辑:一些额外的信息。本地操作系统是Windows。构建系统运行Linux。
答案 0 :(得分:0)
第一个生成的文档是使用flying-saucer library生成的。它由setting the page size in the css修复。
我对问题所在的位置的假设完全错误。抱歉。