如何逐页获取具有整个文件内容的base64的PDF文件内容?

How to get content of a PDF file page by page having base64 of the whole file content?

我有一个 base64 格式的 PDF 文件的内容,如 JVBERi0xLjIgDSXi48/T...

如何解析它以获取它的每一页的base64?

假设PDF文件有5页。如何获取base64中每个页面的内容?我已经 google 它但找不到任何东西。感谢任何帮助。

您可能想澄清您的答案。从你的措辞中看不出你是想用base64编码还是解码。

假设你想解码(因为你说你有 base64),有可用的标准库: Decode Base64 data in Java

一般来说,native PDF 文件的内容一页一页地分开是不可能的(当文件是 base64 编码时就不可能这样做,因为你会看到的)。

PDF 文件最一般的结构是,按以下顺序:

  1. PDF header
  2. PDF objects(文件body)
  3. PDF 外部参照 table(table 的内容,给出每个 PDF 的文件偏移位置 object)
  4. PDF 预告片

您不能假定 PDF object 在文件中的显示顺序与页面在 PDF 查看器中的显示顺序相同。

如果您提取单个页面,该页面本身需要是一个有效的 PDF 文档:包含(以相同的顺序)header、objects、外部参照和尾部,其中外部参照和trailer 需要是 re-constructed 新的,这样它们才能匹配新文档(不能简单地从原始文档复制外部参照和预告片)。

因此,您需要 de-code 完全 base64 编码文件,然后才能考虑访问生成的 PDF 的单页。

要从已使用 base64 编码的 5 页 PDF 文档中获取所有单独的 PDF 页面作为 base64,您必须执行以下步骤:

  1. De-code 将完整的 base64 文件转换为有效的 5 页 PDF 文档。
  2. 将 5 页 PDF 文档拆分为 5 个单独的 1 页 PDF 文档。
    (为此你需要知道 "rules of the PDF game",或者使用知道的 PDF 库)
  3. 使用 base64 对每个 1 页 PDF 文档进行编码。