jsierks
1
I am not quite able to get my bookmarks to show up when I save as a PDF. (Or Word, but we really want them in PDF.)
I am adding bookmarks via a find and replace. Here is the code in question:
var basicAiText = this.agendaItem.AgendaItemNameNoHtml();
docBuilder.InsertField("TC \"" + basicAiText + "\" \\f t");
var bmStart = docBuilder.StartBookmark(basicAiText);
docBuilder.InsertHtml(replacementHTML, true);
var bmEnd = docBuilder.EndBookmark(basicAiText);
List<Run> runs = this.getMatchingRuns(args);
foreach (Run run in runs)
{
run.Remove();
}
return ReplaceAction.Skip;
The insert works and the table of contents works. But I don’t see any bookmarks in the PDF.
When I check in code, there are 17 (or 34) bookmarks. It is 17 before I do these calls:
docBuilder.Document.UpdateFields();
docBuilder.Document.UpdatePageLayout();
And it shows 34 afterwards. And my next call is directly to save:
docBuilder.Document.Save(filename + ".pdf");
But when I check the PDF, I don’t see any of these bookmarks.
2020-01-16 16-52-01.792.pdf (75.4 KB)
image.png (10.2 KB)
What am I doing wrong?
@jsierks,
To show Bookmarks of Word Document inside generated PDF file, please use the following Aspose.Words for .NET code:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.StartBookmark("My Bookmark");
builder.Writeln("Text inside a bookmark.");
builder.StartBookmark("Nested Bookmark");
builder.Writeln("Text inside a Nested Bookmark.");
builder.EndBookmark("Nested Bookmark");
builder.Writeln("Text after Nested Bookmark.");
builder.EndBookmark("My Bookmark");
PdfSaveOptions options = new PdfSaveOptions();
options.OutlineOptions.DefaultBookmarksOutlineLevel = 9;
// or use below lines
//options.OutlineOptions.BookmarksOutlineLevels.Add("My Bookmark", 1);
//options.OutlineOptions.BookmarksOutlineLevels.Add("Nested Bookmark", 2);
doc.Save("E:\\Temp\\20.1.pdf", options);
Thank you, that was it!
Now, how about DOC and DOCX files? They’re not as important, but are occasionally needed.
@jsierks,
Yes, it is possible to bookmark content inside DOC or DOCX Word documents. Please see the following example code:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.StartBookmark("My Bookmark");
builder.Writeln("Text inside a bookmark.");
builder.StartBookmark("Nested Bookmark");
builder.Writeln("Text inside a Nested Bookmark.");
builder.EndBookmark("Nested Bookmark");
builder.Writeln("Text after Nested Bookmark.");
builder.EndBookmark("My Bookmark");
doc.Save("E:\\Temp\\20.1.doc");
doc.Save("E:\\Temp\\20.1.docx");
Thanks again. We were already doing that - I just expected Word to make them easier to find.
@jsierks,
In case you may have further inquiries or need any help in future, please let us know.