首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向PDF文件添加和编辑书签

向PDF文件添加和编辑书签
EN

Unix & Linux用户
提问于 2011-07-20 17:26:24
回答 9查看 35.9K关注 0票数 33

通过pdftk从一些带有书签的pdf文件中获取元数据,我观察了pdf元数据中书签的格式。因此,我猜想使用pdftk,可以添加和编辑一个pdf文件的书签。

以下是我要遵循的三个步骤:

  1. 我首先通过pdftk in.pdf dump_data > in.info将pdf文件中的元数据(如果有的话包括书签)转换为文本文件。
  2. 接下来,我将一些书签添加到元数据文本文件in.info中,将其从InfoKey: Creator InfoValue: PScript5.dll版本5.2 InfoKey: Title InfoValue: SSReader Print中更改。InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey:作者InfoValue:管理员InfoKey: ModDate InfoValue: D:20050605073244+08'00‘InfoKey: CreationDate InfoValue: D:20050605073244+08'00’PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb185ec72 NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals to PageLabelStart: Creator : PScript5.dll版本5.2 en20 en21# Print。# InfoKey: InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: InfoValue:管理员InfoKey: ModDate InfoValue: D:20050605073244+08'00‘InfoKey: CreationDate InfoValue: D:20050605073244+08'00’PdfID0: 591a87c91fdc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 BookmarkBegin BookmarkTitle:正面封面BookmarkLevel: 1 BookmarkPageNumber BookmarkTitle:约作者#en19:1 en20#1 en22#标题#en23:1 6 en26#en26:#27 en7##enenenen30#en34#31#enenen32##enen32##en22#标题6 en26#en26:#27 en7:##enenen30#enenenen32##enen32##enen32#6 en26##27 en27 enenen32#enen32##enen32##enen32#enen32#enen19 en20#
  3. 然后我尝试通过pdftk in.pdf update_info in.info output out.pdf将编辑后的元数据返回到pdf文件中。

但当我打开新的pdf文件out.pdf在evince或adobe阅读器,没有书签在新的pdf文件。

如果我通过out.pdf从新的pdf文件pdftk out.pdf dump_data > out.info获得元数据,out.info中将没有书签。看起来书签没有被成功地添加。

我想知道是不是有什么错误?我应该如何添加和编辑pdf文件的书签,而不一定是pdftk?

EN

回答 9

Unix & Linux用户

回答已采纳

发布于 2013-04-15 03:58:13

在我看来,在1.45版(2012-12-06年)中,pdftk确实允许通过update_info命令修改书签:

现在可以使用update_info添加或更改PDF的书签。

via:http://www.pdflabs.com/docs/pdftk-version-history/

这意味着您现在可以通过运行最初尝试的相同命令来更新书签:

代码语言:javascript
复制
pdftk in.pdf update_info in.bookmarks output out.pdf
票数 17
EN

Unix & Linux用户

发布于 2016-02-23 12:19:02

pdftk书签格式编写起来有点乏味。相反,我使用bashsedpdftkpython3创建了自己的脚本。看看这个回购程序:https://github.com/SiddharthPant/booky

所以,现在我可以创建这样一个文本文件(bkmrks.txt),它只需5分钟就可以编写,即使是1000页的pdf。

代码语言:javascript
复制
{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

然后用我的脚本

代码语言:javascript
复制
./booky.sh pdf_file.pdf bkmrks.txt

这会自动创建一个pdf(pdf_file_new.pdf),其中包含我的书签。

票数 8
EN

Unix & Linux用户

发布于 2012-02-07 03:12:35

如果您仍然坚持使用那些unix脚本,那么

  1. 提取从pdftk中转储的书签数据
  2. 编写一个额外的脚本将已转储的书签数据转换为pdfmark格式,并接受ghostscript命令gs
  3. 使用gs脚本将它们与pdfmark合并在一起

看看http://blog.tremily.us/posts/PDF_书签_使用_鬼脚本/,脚本pdf-merge.py做你(或我)想做的事情。

pdf-merge.py --output=merged.pdf input1.pdf input2.pdf

他的脚本可以做一些小的改进。

  1. unicode处理
  2. 输出书签文件,这样人们也可以调整它。

不管怎么说,应该管用的

票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/17065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档