问题:Word生成的目录不对,不能和PDF文件的目录对应,PDF的目录是正确地。请帮忙看看是什么原因,谢谢。
生成目录的核心代码如下:
string desPath = Path.Combine(reportDesPath, fileName);
Aspose.Words.Document doc = new Aspose.Words.Document(desPath);
doc.UpdateFields();
doc.UpdatePageLayout();
LayoutCollector layoutCollector = new LayoutCollector(doc);//建立布局收集器
List<BookMarkInfo> bookMarkInfos = new List<BookMarkInfo>();
foreach (Field field in doc.Range.Fields)
{
if (field.Type == FieldType.FieldTOC)
{
FieldToc toc = (FieldToc)field;
toc.UpdatePageNumbers(); //定位toc只更新页码
toc.Update();
string name = toc.BookmarkName;
}
if (field.Type.Equals(Aspose.Words.Fields.FieldType.FieldHyperlink))
{
FieldHyperlink hyperlink = (FieldHyperlink)field;
if (hyperlink.SubAddress != null && hyperlink.SubAddress.StartsWith("_Toc"))
{
Paragraph tocItem = (Paragraph)field.Start.GetAncestor(NodeType.Paragraph);
string paragraphName = tocItem.ToString(SaveFormat.Text).Trim();
if (tocItem != null)
{
if (tocItem.ParagraphFormat.StyleIdentifier == Aspose.Words.StyleIdentifier.Toc2)
{
Bookmark bookmarkLayout = doc.Range.Bookmarks[hyperlink.SubAddress];
if (bookmarkLayout != null)
{
int pageIndex = layoutCollector.GetStartPageIndex(bookmarkLayout.BookmarkStart);
bookMarkInfos.Add(new BookMarkInfo() { PageIndex = pageIndex, BookMarkName = paragraphName });
}
}
}
}
}
}
Word转PDF代码如下:
FontSettings fontSettings = new FontSettings();
fontSettings.SetFontsFolder("C:\\Windows\\Fonts", true);
LoadOptions loadOptions = new LoadOptions();
var doc = new Aspose.Words.Document(wordFilePath);
var pdfPath = wordFilePath.Replace(".docx", ".pdf");
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.PageMode = PdfPageMode.UseOutlines;
saveOptions.OutlineOptions.HeadingsOutlineLevels = 2;
doc.Save(pdfPath, saveOptions);