更新:如何解决PDF文件中的确切位置?

时间:2018-09-24 10:30:29

标签: pdf hash checksum coordinate-systems

这个问题似乎有点奇怪,但是它有一个非常实际的用例。

假定我们选择了PDF文件的任意部分以生成校验和,例如以下屏幕截图中的选定文本(突出显示的文本):

enter image description here

然后我们使用哈希函数从选定的文本生成校验和。 我们交付(不发送)整个PDF文件以及此校验和到接收方,以使该接收方不知道已选择PDF文件的哪个部分并对其进行哈希处理。并且此接收者想要验证此校验和。因此,他们需要确切地知道已选择PDF文件的哪个部分并对其进行哈希处理。因此,我们需要找到一种解决方案,使接收方可以找到所选文本和散列文本的确切位置。

由于哈希函数不可逆,因此问题在于:

接收方如何才能在PDF文件中准确找到选定的和散列的文本?

例如,确定PDF文件中所选和散列文本的确切位置和位置是否可行? (这非常敏感,因为即使错误的字符或空格也可能导致校验和验证失败。)

是否有可靠的方法来应对这一挑战?

注释1:如果问题不清楚,请让我知道以详细解释。

重要提示::请注意,由于篇幅所限,我们只能存储校验和值以及一些显示所选文本位置的有限数据,这意味着我们无法存储全部内容选择的文字

用例:我们打算通过验证程序来验证文档中所选文本的完整性。校验和以及寻址到哈希文本的信息将存储在区块链中,因此由于存储在区块链中的限制(这很昂贵),我们无法将整个选定和哈希的文本存储在区块链中,而是仅存储一些有用的信息,可解决所选文本和散列文本的确切位置。验证者可以访问整个文档,但是他们不知道文档的哪一部分已被散列。他们需要知道它以验证校验和。

假设证明者有证书(纸质),他需要证明自己是证书的所有者。他扫描证书(将其数字化为任何格式更好)。证书的颁发者已经选择了证书的一些敏感部分(例如所有者信息等),并在每个选定的部分分别对其进行哈希处理以生成校验和。当证明者(所有者)将证书交付给验证者时,验证者需要检查所有校验和。在此步骤中,您需要知道对证书的哪些部分进行了哈希处理。因此,我们需要将有用的数据附加到校验和,以便验证者可以找到散列的部分。

请注意,所选文本不会被记录,但也会被选中以生成校验和。但是,验证者需要知道此文本的内容以验证校验和。问题在于,由于在区块链中存储数据的限制,我们无法存储整个散列文本,但是我们只能存储一些有用的信息,这些信息可以满足散列文本的确切位置。

更新:该问题与(FREE Tool for watching coordinates in PDF)有关,在该问题中,使用工具我们可以找到所选文本的确切(x,y)坐标。我不确定该工具是否可以用于我的问题。

1 个答案:

答案 0 :(得分:1)

请注意,PDF文件不包含文本。它包含一棵对象树,其中一些对象是包含Postscript简化变体的流,其中包含命令,这些命令告诉渲染器将哪些字形放在哪里(或其他命令)。呈现图形输出)。

我建议使用mutool包中的mupdf之类的工具来解压缩一个小的PDF文档中的流,并在文本编辑器中将其打开以亲自查看它的外观。

因此,当您在渲染器中选择“文本”时,您就迷上了将字形放置在页面上的渲染器过程。现在,渲染器可以做出一些努力来将字形重新转换为文本,这取决于(1)在PDF中具有用于该字形的表,(2)假设生成PDF的应用程序是如何工作的(例如,它设计了字形)顺序与原始文本相同)。如果您对此重新翻译的文本进行哈希处理,则将始终取决于渲染器进行重新翻译的方法。

因此,您的用例(无论对什么都有好处)将需要为发送者和接收者使用相同的渲染程序。

另一方面,假定嵌入字体或相同字体,则呈现是确定性的(尤其是在同一呈现器中)。因此,最简单的方法是只记录您在页面上的位置的准确选择以及页码,然后发送此信息。

修改

如果首先要扫描纸质文档,并且需要标记几个矩形区域,则为图像选择某种格式,找到矩形的确切像素位置,然后将矩形内的像素提取为某种定义的格式( (例如RGB 8 + 8 + 8),并对此数据进行哈希处理。然后将矩形位置与哈希一起发送。

为了方便起见,您可以将多个扫描的图像存储在PDF中,然后使用多种工具将其从PDF中提取出来,但是只要您同意某种格式,存储图像的方式并不重要(因为有损压缩可能会改变像素值。

这将要求您存档扫描的图像(PDF或任何其他形式)。