FieldPageRefBookmarkName Property |
Namespace: Aspose.Words.Fields
public void FieldPageRef() { Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); InsertAndNameBookmark(builder, "MyBookmark1"); // This field will display just the page number where the bookmark starts // Setting InsertHyperlink attribute makes the field function as a link to the bookmark Assert.AreEqual(" PAGEREF MyBookmark3 \\h", InsertFieldPageRef(builder, "MyBookmark3", true, false, "Hyperlink to Bookmark3, on page: ").GetFieldCode()); // Setting the \p flag makes the field display the relative position of the bookmark to the field instead of a page number // Bookmark1 is on the same page and above this field, so the result will be "above" on update Assert.AreEqual(" PAGEREF MyBookmark1 \\h \\p", InsertFieldPageRef(builder, "MyBookmark1", true, true, "Bookmark1 is ").GetFieldCode()); // Bookmark2 will be on the same page and below this field, so the field will display "below" Assert.AreEqual(" PAGEREF MyBookmark2 \\h \\p", InsertFieldPageRef(builder, "MyBookmark2", true, true, "Bookmark2 is ").GetFieldCode()); // Bookmark3 will be on a different page, so the field will display "on page 2" Assert.AreEqual(" PAGEREF MyBookmark3 \\h \\p", InsertFieldPageRef(builder, "MyBookmark3", true, true, "Bookmark3 is ").GetFieldCode()); InsertAndNameBookmark(builder, "MyBookmark2"); builder.InsertBreak(BreakType.PageBreak); InsertAndNameBookmark(builder, "MyBookmark3"); doc.UpdateFields(); doc.Save(ArtifactsDir + "Field.PAGEREF.docx"); } /// <summary> /// Uses a document builder to insert a PAGEREF field and sets its attributes. /// </summary> private static FieldPageRef InsertFieldPageRef(DocumentBuilder builder, string bookmarkName, bool insertHyperlink, bool insertRelativePosition, string textBefore) { builder.Write(textBefore); FieldPageRef field = (FieldPageRef)builder.InsertField(FieldType.FieldPageRef, true); field.BookmarkName = bookmarkName; field.InsertHyperlink = insertHyperlink; field.InsertRelativePosition = insertRelativePosition; builder.Writeln(); return field; } /// <summary> /// Uses a document builder to insert a named bookmark. /// </summary> private static void InsertAndNameBookmark(DocumentBuilder builder, string bookmarkName) { builder.StartBookmark(bookmarkName); builder.Writeln($"Contents of bookmark \"{bookmarkName}\"."); builder.EndBookmark(bookmarkName); }