【问题标题】:How to get content of a PDF file page by page having base64 of the whole file content?如何逐页获取具有整个文件内容的base64的PDF文件内容?
【发布时间】:2015-03-09 02:59:48
【问题描述】:

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

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

假设 PDF 文件有 5 页。如何在base64中获取每个页面的内容?我已经用谷歌搜索了它,但找不到任何东西。任何帮助表示赞赏。

【问题讨论】:

标签: java parsing pdf base64


【解决方案1】:

一般来说,甚至不可能逐页分离 native PDF 文件的内容(如您将看到的,当文件是 base64 编码时,不可能这样做)。

PDF 文件的最一般结构按以下顺序排列:

  1. PDF 标题
  2. PDF 对象(文件正文)
  3. PDF 外部参照表(目录,为每个 PDF 对象提供文件偏移位置)
  4. PDF 预告片

您不能假设 PDF 对象在文件中的出现顺序与页面在 PDF 查看器中出现的顺序相同。

如果您提取单个页面,该页面本身需要是一个有效的 PDF 文档:包含(按相同顺序)标题、对象、外部参照和预告片,其中外部参照和预告片需要重新构建以使其匹配新文档(不能简单地从原始文档复制外部参照和预告片)。

因此,您需要完全对 base64 编码文件进行解码,然后才能考虑访问生成的 PDF 的单个页面。

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

  1. 将完整的 base64 文件解码为有效的 5 页 PDF 文档。
  2. 将 5 页 PDF 文档拆分为 5 个单独的 1 页 PDF 文档。
    (为此,您需要了解“PDF 游戏规则”,或使用 PDF知道的图书馆)
  3. 使用 base64 对每个 1 页的 PDF 文档进行编码。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我有整个文件的 Base64。有没有办法在不解码的情况下逐页拆分?
    • @Sara 不,除非它有特殊的分隔符,用于分隔 base64 的每个页面块。
    • 是的,这正是我想要的。应该有一些标准的分隔符来分隔每一页
    • @Sara 要么你应该知道它,要么自己添加一个不与 base64 字符集冲突的。您可以在此处查看标准设置:en.wikipedia.org/wiki/Base64
    • PDF 页面之间没有特殊的分隔符。因此,base64 编码的 PDF 也不会有这样的事情。请参阅我关于 PDF 文件结构的回答。
    猜你喜欢
    • 2016-08-17
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2022-11-23
    • 2013-01-16
    相关资源
    最近更新 更多