VintaSoft Imaging .NET SDK 14.0: Documentation for .NET developer
Vintasoft.Imaging.Pdf.Tree.Annotations Namespace / PdfOfficeDocumentAnnotation Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
    PdfOfficeDocumentAnnotation Class
    In This Topic
    Represents a VintaSoft PDF annotation that stores a office document.
    Object Model
    PdfEmbeddedFile PaddingF PdfPopupAnnotation PdfAnnotation PdfFileReferenceSpecificationList PdfAnnotationAppearanceGenerator PdfOptionalContentGroup PdfPage PdfAnnotationBorderStyle AffineMatrix PdfAction PdfAnnotationAppearances PdfAnnotationAdditionalActions PdfDocument PdfIndirectReference PdfBasicObject PdfOfficeDocumentAnnotation
    Syntax
    'Declaration
    
    Public Class PdfOfficeDocumentAnnotation
       Inherits PdfProjectionAnnotation
    
    
    public class PdfOfficeDocumentAnnotation : PdfProjectionAnnotation
    
    
    public __gc class PdfOfficeDocumentAnnotation : public PdfProjectionAnnotation*
    
    
    public ref class PdfOfficeDocumentAnnotation : public PdfProjectionAnnotation^
    
    
    Example

    Here is an example that shows how to add annotate with chart to a PDF document (example uses template document ChartTemplate.docx):

    
    ''' <summary>
    ''' Adds Office annotation with chart to a PDF document.
    ''' </summary>
    ''' <param name="filePath">The PDF file path.</param>
    ''' <param name="annotationRectInPoint">The annotation area on PDF page in points (1/72 inch).</param>
    Public Shared Sub AnnotatePdfFile(filePath As String, annotationRectInPoint As System.Drawing.RectangleF)
        ' register appearance generator for Office annotation
        Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotationAppearanceGenerator.Register()
    
        ' path to a template DOCX document with chart
        Dim templateDocDocumentPath As String = "ChartTemplate.docx"
    
        ' open PDF document
        Using pdfDocument As New Vintasoft.Imaging.Pdf.PdfDocument(filePath, False)
            ' get PDF document page
            Dim pdfPage As Vintasoft.Imaging.Pdf.Tree.PdfPage = pdfDocument.Pages(0)
    
            ' create PDF Office document annotation data
            Dim annotationData As New Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotation(pdfPage)
            ' set DOCX document for PDF Office document annotation data
            annotationData.SetDocumentFilename(templateDocDocumentPath)
            ' set the annotation position
            annotationData.Rectangle = annotationRectInPoint
            annotationData.UseGraphicObjectReleativeSize = True
    
            ' add annotation to the PDF page
            pdfPage.Annotations.Add(annotationData)
    
            ' fill template document with real data
            FillDocumentTemplate(annotationData)
    
            ' create appearance for changed annotation
            annotationData.UpdateAppearance()
    
            ' save changes in PDF document
            pdfDocument.SaveChanges()
        End Using
    End Sub
    
    ''' <summary>
    ''' Fills the template DOCX document with real data.
    ''' </summary>
    ''' <param name="data">The annotation data.</param>
    Private Shared Sub FillDocumentTemplate(data As Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotation)
        ' get DOCX document stream
        Using documentStream As System.IO.MemoryStream = data.OfficeDocument.GetAsMemoryStream()
            ' create DOCX document editor
            Using editor As New Vintasoft.Imaging.Office.OpenXml.Editor.Docx.DocxDocumentEditor(documentStream)
                ' get DOCX document body
                Dim documentBody As Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlDocumentElement = editor.Body
    
                ' change TITLE
    
                ' find title
                Dim titleText As Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextContent = documentBody.FindText("[TITLE]")
                ' change the title text
                titleText.Text = "Sales"
                ' highlight the title in bold
                titleText.SetTextProperties(Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextProperties.BoldText)
    
    
                ' change DATE
    
                ' find date
                Dim dateText As Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextContent = documentBody.FindText("[DATE]")
                ' change the date text
                dateText.Text = System.DateTime.Now.ToString("yyyy")
    
                ' create the date text properties
                Dim dateTextProperties As New Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextProperties()
                ' change the date text color
                dateTextProperties.Color = System.Drawing.Color.Blue
                ' change the date text size
                dateTextProperties.FontSize = 24
    
                ' change the date text properties
                dateText.SetTextProperties(dateTextProperties)
    
    
                ' change CHART
    
                ' create the chart data
                Dim chartData As System.Nullable(Of Double)(,) = New System.Nullable(Of Double)(,) {{55, 32, 23}, {84, 48, 33}, {72, 53, 86}, {34, 82, 11}}
                ' change the chart data
                editor.Charts(0).ChartData.SetData(chartData)
    
    
                ' create stream for changed document
                Using changedDocumentStream As New System.IO.MemoryStream()
                    ' save template changes
                    editor.Save(changedDocumentStream)
    
                    ' change document stream
                    data.SetDocumentStream(changedDocumentStream)
                End Using
            End Using
        End Using
    End Sub
    
    
    
    /// <summary>
    /// Adds Office annotation with chart to a PDF document.
    /// </summary>
    /// <param name="filePath">The PDF file path.</param>
    /// <param name="annotationRectInPoint">The annotation area on PDF page in points (1/72 inch).</param>
    public static void AnnotatePdfFile(string filePath, System.Drawing.RectangleF annotationRectInPoint)
    {
        // register appearance generator for Office annotation
        Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotationAppearanceGenerator.Register();
    
        // path to a template DOCX document with chart
        string templateDocDocumentPath = "ChartTemplate.docx";
    
        // open PDF document
        using (Vintasoft.Imaging.Pdf.PdfDocument pdfDocument = new Vintasoft.Imaging.Pdf.PdfDocument(filePath, false))
        {
            // get PDF document page
            Vintasoft.Imaging.Pdf.Tree.PdfPage pdfPage = pdfDocument.Pages[0];
    
            // create PDF Office document annotation data
            Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotation annotationData = 
                new Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotation(pdfPage);
            // set DOCX document for PDF Office document annotation data
            annotationData.SetDocumentFilename(templateDocDocumentPath);
            // set the annotation position
            annotationData.Rectangle = annotationRectInPoint;
            annotationData.UseGraphicObjectReleativeSize = true;
    
            // add annotation to the PDF page
            pdfPage.Annotations.Add(annotationData);
    
            // fill template document with real data
            FillDocumentTemplate(annotationData);
    
            // create appearance for changed annotation
            annotationData.UpdateAppearance();
    
            // save changes in PDF document
            pdfDocument.SaveChanges();
        }
    }
    
    /// <summary>
    /// Fills the template DOCX document with real data.
    /// </summary>
    /// <param name="data">The annotation data.</param>
    private static void FillDocumentTemplate(Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotation data)
    {
        // get DOCX document stream
        using (System.IO.MemoryStream documentStream = data.OfficeDocument.GetAsMemoryStream())
        {
            // create DOCX document editor
            using (Vintasoft.Imaging.Office.OpenXml.Editor.Docx.DocxDocumentEditor editor =
                new Vintasoft.Imaging.Office.OpenXml.Editor.Docx.DocxDocumentEditor(documentStream))
            {
                // get DOCX document body
                Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlDocumentElement documentBody = editor.Body;
    
                // change TITLE
    
                // find title
                Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextContent titleText = documentBody.FindText("[TITLE]");
                // change the title text
                titleText.Text = "Sales";
                // highlight the title in bold
                titleText.SetTextProperties(Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextProperties.BoldText);
    
    
                // change DATE
    
                // find date
                Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextContent dateText = documentBody.FindText("[DATE]");
                // change the date text
                dateText.Text = System.DateTime.Now.ToString("yyyy");
    
                // create the date text properties
                Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextProperties dateTextProperties =
                    new Vintasoft.Imaging.Office.OpenXml.Editor.OpenXmlTextProperties();
                // change the date text color
                dateTextProperties.Color = System.Drawing.Color.Blue;
                // change the date text size
                dateTextProperties.FontSize = 24;
    
                // change the date text properties
                dateText.SetTextProperties(dateTextProperties);
    
    
                // change CHART
    
                // create the chart data
                double?[,] chartData = new double?[,] {
                 { 55, 32, 23 },
                 { 84, 48, 33 },
                 { 72, 53, 86 },
                 { 34, 82, 11 } };
                // change the chart data
                editor.Charts[0].ChartData.SetData(chartData);
    
    
                // create stream for changed document
                using (System.IO.MemoryStream changedDocumentStream = new System.IO.MemoryStream())
                {
                    // save template changes
                    editor.Save(changedDocumentStream);
    
                    // change document stream
                    data.SetDocumentStream(changedDocumentStream);
                }
            }
        }
    }
    
    

    Inheritance Hierarchy

    System.Object
       Vintasoft.Imaging.Pdf.Tree.PdfTreeNodeBase
          Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotation
             Vintasoft.Imaging.Pdf.Tree.Annotations.PdfMarkupAnnotation
                Vintasoft.Imaging.Pdf.Tree.Annotations.PdfProjectionAnnotation
                   Vintasoft.Imaging.Pdf.Tree.Annotations.PdfOfficeDocumentAnnotation

    Requirements

    Target Platforms: .NET9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also