【问题标题】:Incremental changes to PDFPDF 的增量更改
【发布时间】:2018-08-31 00:28:30
【问题描述】:

我有一个 PDF 文件保存为数据库中的字节数组。用户可以从网站打开此 PDF 并进行更新。目前,整个新的 pdf 保存在现有的 pdf 之上。我正在寻找解决方案,

  • 仅保存更改字节以及用户检索新文档时

    我想从原始文件重新创建 pdf,然后应用更改。我尝试在互联网上搜索有关如何实现此目标的解决方案/想法,但我无法获得任何想法。有人可以使用 C# 来实现这一目标吗 .此解决方案将帮助我跟踪一段时间内发生的变化。

【问题讨论】:

  • 你能把文件保存到 git repo 吗?
  • 有一个数据库。需要保存到那个
  • 为什么需要保存在那里?这开始感觉像是一个 XY 问题 - meta.stackexchange.com/questions/66377/what-is-the-xy-problem。为什么您只想存储更改的字节并应用它们?为什么不只存储 pdf 的每个单独版本?为什么不使用 git repo(它很简单地解决了这个问题的大部分)?为什么不将文件存储在文件系统上(所以如果文件有 10 个版本,只需在文件系统上存储文件 10 次)?
  • 目前我正在保存每个单独的 PDF 版本。这将在数​​据库中占用大量空间。所以想到的是在数据库中一次又一次地对整个 pdf 进行增量更改
  • 如何只替换数据库中的特定字节?

标签: c# pdf pdf-generation


【解决方案1】:

是的,PDF 标准特别支持增量保存。 PDF 文件可以包含任意数量的增量保存,并且可以专门用于撤消/重做和版本控制。例如,增量保存是多人对 PDF 进行加密签名的方式。

因此您可以保留单个原始文件,然后通过简单地将增量保存字节附加到原始数据来应用修改。

使用PDFTron PDFNet SDK,您可以使用以下方法获取增量保存数据。

byte[] pdfdata = pdfdoc.Save(SDFDoc.SaveOptions.e_incremental);

pdfdata 将包含整个 PDF,但原始字节将保持不变,并且可以通过获取原始 PDF 的文件大小来丢弃。所以你可以只存储额外的字节。

稍后您可以加载原始 PDF,附加您存储的增量保存数据,然后加载 PDF。

注意,如果您的用户编辑仅针对注释和表单字段,则有一个更简单的解决方案。请参阅我对您原始问题的评论。

【讨论】:

  • 请在 cmets 中阅读原始问题,即 op 无法控制用户用于更新 pdf 的软件。因此,很高兴 PDFTron 知道如何创建增量更新,但这很可能对操作没有帮助。
猜你喜欢
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多