Table 的 PDF 内容打印正确但 RTF 打印不正确
Table of Content printing correctly for PDF but not for RTF
我正在做一个项目,我需要创建一个 PDF 文件和一个 RTF 文件,内容为 Table。我正在使用 C# 的 MigraDoc + PdfSharp 库来执行此操作。
两个文件的 Table 内容代码为:
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 的页码出现在目录中,我们必须在 MS Word 中手动更新整个文档,方法是使用 ctrl+A,然后使用 F9。
是否有任何程序化方法可以让我获得正确的 table 内容和 RTF 页码,这样我们就不需要手动更新文档?
可能有几种方法,例如 VBA 用于 Word 或执行此操作的 Word 加载项。 MigraDoc 无法填写这些字段。
根据 this thread 的说法,无法在 Word 打开 RTF 时自动更新字段。因此,这将是 RTF 文件创建和将其发送给客户之间的额外步骤。
我正在做一个项目,我需要创建一个 PDF 文件和一个 RTF 文件,内容为 Table。我正在使用 C# 的 MigraDoc + PdfSharp 库来执行此操作。
两个文件的 Table 内容代码为:
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 的页码出现在目录中,我们必须在 MS Word 中手动更新整个文档,方法是使用 ctrl+A,然后使用 F9。
是否有任何程序化方法可以让我获得正确的 table 内容和 RTF 页码,这样我们就不需要手动更新文档?
可能有几种方法,例如 VBA 用于 Word 或执行此操作的 Word 加载项。 MigraDoc 无法填写这些字段。
根据 this thread 的说法,无法在 Word 打开 RTF 时自动更新字段。因此,这将是 RTF 文件创建和将其发送给客户之间的额外步骤。