我正在使用c#,我正在使用我的数据制作PDF。我是用MigraDoc和PDFsharp做的。
我有一些书签的动态信息。问题在于,当没有要添加的数据时,我不添加该特定部分,TOC条目说:“书签'bookmarkName'未在文档中定义”
目录是在PDF的其余部分之前创建的,因此尝试执行if
语句不起作用。我想删除所有未使用/空的书签。
答案 0 :(得分:0)
命名法:您在数据部分添加书签,添加指向目录(TOC)中书签的链接。您想要删除损坏的链接(未使用的书签是不可见的,不需要删除它们)。
MigraDoc非常有活力。在开始渲染过程之前,您可以修改任何内容。
Section
有一个Elements
成员,可让您访问该部分中的Paragraph
个对象和其他对象。每个Paragraph
都有一个Elements
对象,可让您访问构成Text
的{{1}}个对象。
因此,可以通过文档枚举,在第一次运行中构建超链接和书签的列表,并在第二次运行中删除到不存在的书签的超链接。可以做到,但代码会很复杂。
如上所述,MigraDoc非常有活力。您可以添加TOC部分并将其留空。
方法一:添加数据时,将TOC部分传递给添加数据的代码,并让代码更新TOC部分。这里很容易添加着名的Paragraph
语句,因此当您在内容部分中也有书签时,您在TOC部分中只有一个超链接。
方法二:添加数据时,在列表中注册所有创建的书签。在最后一步中创建TOC,仅添加现有书签的超链接。
方法三(不建议使用):在向TOC表添加链接时,请保留对每个段落的引用。还要构建数据代码添加的书签列表。这样您就有了需要修改的段落列表,您可以轻松删除所有元素并添加没有超链接的新内容。我不这样做,但可以做到。