删除未使用的书签

时间:2017-07-06 14:25:30

标签: c# migradoc

我正在使用c#,我正在使用我的数据制作PDF。我是用MigraDoc和PDFsharp做的。

我有一些书签的动态信息。问题在于,当没有要添加的数据时,我不添加该特定部分,TOC条目说:“书签'bookmarkName'未在文档中定义”

目录是在PDF的其余部分之前创建的,因此尝试执行if语句不起作用。我想删除所有未使用/空的书签。

1 个答案:

答案 0 :(得分:0)

命名法:您在数据部分添加书签,添加指向目录(TOC)中书签的链接。您想要删除损坏的链接(未使用的书签是不可见的,不需要删除它们)。

MigraDoc非常有活力。在开始渲染过程之前,您可以修改任何内容。

Section有一个Elements成员,可让您访问该部分中的Paragraph个对象和其他对象。每个Paragraph都有一个Elements对象,可让您访问构成Text的{​​{1}}个对象。

因此,可以通过文档枚举,在第一次运行中构建超链接和书签的列表,并在第二次运行中删除到不存在的书签的超链接。可以做到,但代码会很复杂。

如上所述,MigraDoc非常有活力。您可以添加TOC部分并将其留空。

方法一:添加数据时,将TOC部分传递给添加数据的代码,并让代码更新TOC部分。这里很容易添加着名的Paragraph语句,因此当您在内容部分中也有书签时,您在TOC部分中只有一个超链接。

方法二:添加数据时,在列表中注册所有创建的书签。在最后一步中创建TOC,仅添加现有书签的超链接。

方法三(不建议使用):在向TOC表添加链接时,请保留对每个段落的引用。还要构建数据代码添加的书签列表。这样您就有了需要修改的段落列表,您可以轻松删除所有元素并添加没有超链接的新内容。我不这样做,但可以做到。