我正在做一个项目,我需要在其中创建一个 PDF 文件和一个 RTF 文件,以及一个目录。我正在使用 MigraDoc + PdfSharp 库为 C# 执行此操作。
这两个文件的目录代码是:
public static void DefineTableOfContents(Document document)
{
Section section = document.LastSection;
section.AddPageBreak();
Paragraph paragraph = section.AddParagraph("Table of Contents");
paragraph.Format.Font.Size = 14;
paragraph.Format.Font.Bold = true;
paragraph.Format.SpaceAfter = 24;
paragraph.Format.OutlineLevel = OutlineLevel.Level1;
paragraph = section.AddParagraph();
paragraph.Style = "TOC";
Hyperlink hyperlink = paragraph.AddHyperlink("ParaBookmark");
hyperlink.AddText("Paragraphs\t");
hyperlink.AddPageRefField("ParaBookmark");
paragraph = section.AddParagraph();
paragraph.Style = "TOC";
hyperlink = paragraph.AddHyperlink("AJBookmark");
hyperlink.AddText("AJ\t");
hyperlink.AddPageRefField("AJBookmark");
paragraph = section.AddParagraph();
paragraph.Style = "TOC";
hyperlink = paragraph.AddHyperlink("TablesBookmark");
hyperlink.AddText("Tables\t");
hyperlink.AddPageRefField("TablesBookmark");
paragraph = section.AddParagraph();
paragraph.Style = "TOC";
hyperlink = paragraph.AddHyperlink("ChartsBookmark");
hyperlink.AddText("Charts\t");
hyperlink.AddPageRefField("ChartsBookmark");
}
对于 Pdf,代码运行良好,所有页码都正确显示,但对于 RTF 文件,我们得到如下输出:
Table of Contents
Paragraphs............................. < Please update this field. >
AJ..................................... < Please update this field. >
Tables................................. < Please update this field. >
Charts................................. < Please update this field. >
谷歌搜索后,我了解到,要使 RTF 的页码出现在 TOC 上,我们必须在 MS Word 中使用 ctrl+A 和 F9 手动更新整个文档。
是否有任何编程方式,以便我可以获得带有 RTF 页码的正确目录,这样我们就不需要手动更新文档?
最佳答案
可能有几种方法,例如用于 Word 的 VBA 或执行此操作的 Word 加载项。 MigraDoc 无法填写这些字段。
根据 this thread 的说法,当 Word 打开 RTF 时,无法自动更新字段。因此,这将是创建 RTF 文件和将其发送给客户之间的额外步骤。
关于c# - PDF 的目录打印正确,但 RTF 不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30847286/