MarkTagsInPDF.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Drawing;using GrapeCity.Documents.Word;using GrapeCity.Documents.Word.Layout;using GrapeCity.Documents.Pdf.Annotations;
namespace DsWordWeb.Demos{ // This sample demonstrates the DsWord Layout API that allows developers during export // to PDF to locate in the exported document the Data Template tags and to highlight // them or process in some other way. Note that this sample does not bind the template // to data (i.e. it does not call the GcWordDocument.DataTemplate.Process() method), // it only highlights the tags when the template document is exported to PDF. // This functionality can be used for example to review the templates prior to further processing. // To use the API when exporting the DOCX: // - Set MarkTemplateTagAreas to true in WordLayoutSettings, and // - Specify your custom MarkupTemplateTags method in PdfOutputSettings. // // See also: XingTemplateTags for an example of using this API to modify the tags in the original DOCX. public class MarkTagsInPDF { public GcWordDocument CreateDocx() { var doc = new GcWordDocument(); doc.Load(Path.Combine("Resources", "WordDocs", "House_Rental_Template.docx")); return doc; }
// Custom Word Layout settings set the MarkTemplateTagAreas property set to true, // this makes the layout engine mark locations of Report/Data Template tags // in the layout result, so that the tags can be for example highlighted // for custom processing. public static WordLayoutSettings GetWordLayoutSettings() { return new WordLayoutSettings() { MarkTemplateTagAreas = true }; }
// Custom PDF output settings include a MarkupTemplateTags method // that adds markup annotations over Report/Data Template tags // present in the original DOCX. For this to work, the WordLayoutSettings // (see above) must have the MarkTemplateTagAreas property set to true // (it is false by default). public static PdfOutputSettings GetPdfOutputSettings() { var settings = new PdfOutputSettings() { MarkupTemplateTags = (page, tags) => { foreach (var tag in tags) { foreach (var rect in tag.Areas) { var hilight = new TextMarkupAnnotation { Area = [rect], Color = Color.YellowGreen, MarkupType = TextMarkupType.Highlight, Opacity = 0.4f, RichText = $"Tag Info:<br>Name: <b>{tag?.Info?.Name}</b><br>Text: <b>{tag?.Info?.Text}</b>", };
page.Annotations.Add(hilight); } } } }; return settings; } }}