pdf - 正规表达式 PDF文件超链接指向网页超链接/记事本++替换

  显示原文与译文双语对照的内容

因为 Chrome 默认的pdf查看器没有在pdf文件中显示相对超链接,我试图在服务器上找到链接。

在 NotePad++ 中打开pdf时,我发现了一个非常有趣的pdf文件语法。 无论如何,在记事本中使用 正规表达式 替换路径本身是相当容易的。

试图删除这里结构时出现问题:

706 0 obj <</F 707 0 R/S/Launch>> endobj

因为记事本替换不适用于 多行 表达式。

我可以单独删除它们:

([0-9]+s[0-9]s)obj$ (W+)F(s[0-9]+s[0-9]s)R(W)S(W)Launch(W+)$ endobj$

然后我把它的他对象弄乱了,所以我需要一种方法来整理它。

任何知识,或者有一种简单的方法可以将pdf中的文件对象转换为源代码或者不同的文本编辑器。

时间: 原作者:

如果你仍然想使用 N++,可以使用这样的方法:


[0-9]+s[0-9]sobjs*W+Fs[0-9]+s[0-9]sRWSWLaunchW+s*endobj$



我基本上复制/粘贴你的正规表达式,移除不必要的分组,并用 s* 替换中间 $ 。 ( s 匹配空格。水平制表符。换行。回车和 formfeeds,如果可能的话,它将转到'多行') 。

原作者:

如果你不知道你正在做什么,我强烈建议不要用这种方式修改PDF文件。 PDF文件是二进制文件,它们包含基于从文件开始或者对象( 外部参照表。压缩流。加密文件等) 开始的字节数的几个信息。

修改PDF文件而不考虑它的结构,大多数情况下都会损坏该文件。 PDF读者一般可以从这类错误中恢复,但是总是可以能断开修复文件。

有两种可能的方法可以降低损坏文件( 如果你不小心,可能还会发生)的可能性:

  • 使用一个允许直接操作字典和重新保存的PDF处理库修改你的文件。

  • 如果仍然要手动修改它们,那么至少要确保每个修改过的对象( 也称为PDF字典)的字节计数都不会改变。 例如可以用空格替换PDF字典中的有效字符,或者使用空值为0的值替换( 可选) 间接引用( 例如0 个 R ) 。

原作者:
...