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

时间:2018-10-22 14:44:01

标签: java pdf itext

我有以下代码段可以合并两个单页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。

1 个答案:

答案 0 :(得分:0)

第一个生成的文档是使用flying-saucer library生成的。它由setting the page size in the css修复。

我对问题所在的位置的假设完全错误。抱歉。