VintaSoft Imaging .NET SDK 15.1: 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

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.UseGraphicObjectRelativeSize = 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.UseGraphicObjectRelativeSize = 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: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also