PDF文件超链接到web超链接/记事本++替换

时间:2014-03-11 14:53:06

标签: regex pdf replace hyperlink notepad++

由于Chrome默认pdf查看器不显示pdf文件中的相对超链接,我尝试找到一种半自动方式,用指向服务器上特定路径的链接替换它们。

在记事本++中打开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中的文件对象转换为源文件对象或不同的文本编辑器,允许搜索带有高级修饰符的多行表达式。

2 个答案:

答案 0 :(得分:1)

如果您仍想使用N ++,可以使用这样的东西:

[0-9]+\s[0-9]\sobj\s*\W+F\s[0-9]+\s[0-9]\sR\WS\WLaunch\W+\s*endobj$

我基本上复制/粘贴了你的正则表达式,删除了不必要的分组,并将中间$替换为\s*。 (\s匹配空格,水平制表符,换行符,回车符和换页符,因此如果可能的话,它将会出现多线条。

答案 1 :(得分:0)

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

在不考虑其结构的情况下修改PDF文件会在大多数情况下破坏文件。 PDF阅读器通常可以从这种类型的错误中恢复,但是您可能总是将文件分解为无法修复。

有两种方法可以减少损坏文件的可能性(如果您不小心,可能会发生这种情况):

  • 使用PDF处理库修改您的文件,该库允许您直接操作字典并重新保存。

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

    < / LI>