【发布时间】:2018-02-17 13:03:17
【问题描述】:
我在尝试在 PDF 文件中创建目录对象时遇到问题。我不确定我是否从 Apple 的有限文档中理解了这个过程。
我正在使用 python,但欢迎使用任何语言的有说服力的示例来解释它应该如何工作。该代码创建了一个新的 PDF 文档,但在预览中没有可见的大纲项。我试过只使用 myOutline 作为根对象,但这也不起作用。
pdfURL = NSURL.fileURLWithPath_(infile)
myPDF = Quartz.PDFDocument.alloc().initWithURL_(pdfURL)
if myPDF:
# Create Destination
myPage = myPDF.pageAtIndex_(1)
pagePoint = Quartz.CGPointMake(0,0)
myDestination = Quartz.PDFDestination.alloc().initWithPage_atPoint_(myPage, pagePoint)
# Create Outline
myOutline = Quartz.PDFOutline.alloc().init()
myOutline.setLabel_("Interesting")
myOutline.setDestination_(myDestination)
# Create a root Outline and add the first outline as a child
rootOutline = Quartz.PDFOutline.alloc().init()
rootOutline.insertChild_atIndex_(myOutline, 0)
# Add the root outline to the document and save
myPDF.setOutlineRoot_(rootOutline)
myPDF.writeToFile_(outfile)
编辑:实际上,大纲正在保存到新文件中:我可以通过编程方式阅读它,它在 Acrobat 中显示为书签;但是,它没有出现在预览的目录中(是的,我检查了“隐藏”的东西)。如果我在 Acrobat 中添加另一个书签,那么两者都会显示在预览中。
所以我想要么我仍然做错了事情,没有完全“完成”PDFOutline 数据,而且 Acrobat 很友善;或者 PDFKit 中存在大量错误,这意味着您无法正确编写 PDFOutlines。我在山狮,FWIW 上得到了同样的行为。
【问题讨论】:
-
你能在某处上传这些行为不端的 PDF 并添加链接吗?
-
我不相信 PDF 是问题所在。 Acrobat、PDFPen 和 Foxit Reader 都显示使用脚本创建的“书签”。预览不显示它们。如果您在任何这些应用程序中修改书签列表,则项目会显示在预览中。无论如何,给你:4个空白页和一个书签。请注意,其他人称之为书签,预览称之为目录。 Preview 的书签似乎完全是专有的,并且在 Quartz API 中没有记录..! dropbox.com/s/4gkq8wv51vr6zji/qwe.pdf?dl=0