gpt4 book ai didi

scala - OpenPDF/iText 损坏的文件

转载 作者:行者123 更新时间:2023-12-04 17:30:17 25 4
gpt4 key购买 nike

我一直在尝试在 Scala 中重新实现 OpenPDF 1.2.4 和 1.2.11 中的连接示例:

def mergePdfs(docs: Seq[Array[Byte]]): Array[Byte] = {
log.debug(s"merging ${docs.size} PDFs")
val output = new ByteArrayOutputStream()
val document = new Document()
val copy = new PdfCopy(document, output)
getPageSize(docs.headOption) foreach document.setPageSize
document.open()
docs foreach { doc =>
val reader = new PdfReader(doc)
1 to reader.getNumberOfPages foreach { pageNum =>
copy.addPage(copy.getImportedPage(reader, pageNum))
}
}
document.close()
output.toByteArray
}

Here Here是一个示例输出文档。我从 this 的两个副本生成它然后是三份 this .

我看到两个问题:

- 文档已损坏(只能在 FireFox 中打开),部分原因是标题和第一个对象之间有一行乱七八糟的东西。删除有问题的行并不能修复客户端代码中的文档错误,谢谢@mkl!

  • 有些页面(通常是一页,但不确定)显示为空白。没有我见过的模式。此外,每个页面的文本在文件中出现两次。例如在上面的例子中:
$ strings out.pdf | grep "A Simple PDF File" | wc -l | tr -d ' '
6

在一个案例中,我使用 vim 删除了第一个内容流,这导致文本出现在第一页上。

我是否以某种方式滥用了 API?

最佳答案

结果文件的前 17465 个字节是代码的实际结果(“这个的两个副本,然后这个的三个副本”)。 31181 字节文件的剩余字节由其他 PDF 的片段组成。

在评论中,您说您“使用生成的字节数组调用 Files.write”。您使用的是哪个 OpenOption?可能是 CREATE 而不是 TRUNCATE_EXISTING

关于scala - OpenPDF/iText 损坏的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55296370/

25 4 0
文章推荐: object - 为什么 HTML anchor 标记不包装可缩放的 SVG