VintaSoft Imaging .NET SDK 14.0: Documentation for .NET developer
Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures Namespace / OfficeDocumentFigure Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
    OfficeDocumentFigure Class
    In This Topic
    Represents an Office document figure that draws DOCX document.
    Object Model
    PdfBrush VintasoftImage PaddingF PdfPen PdfContentPadding PdfDocument GraphicsFigurePoints OfficeDocumentFigure
    Syntax
    'Declaration
    
    Public Class OfficeDocumentFigure
       Inherits RectangleFigure
    
    
    public class OfficeDocumentFigure : RectangleFigure
    
    
    public __gc class OfficeDocumentFigure : public RectangleFigure*
    
    
    public ref class OfficeDocumentFigure : public RectangleFigure^
    
    
    Example

    Here is an example that shows how to annotate PDF file (example uses template document ChartTemplate.docx):

    
    ''' <summary>
    ''' Add chart to a PDF document.
    ''' </summary>
    ''' <param name="filePath">The PDF file path.</param>
    ''' <param name="chartRectInPoint">The chart rect on PDF page in points (1/72 inch).</param>
    Public Shared Sub AddChartToPdfFile(filePath As String, chartRectInPoint As System.Drawing.RectangleF)
        ' 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 Office document figure
            Using officeDocumentFigure As New Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure()
                ' update figure properties
    
                officeDocumentFigure.SetDocumentFilename(templateDocDocumentPath)
                officeDocumentFigure.Location = chartRectInPoint.Location
                officeDocumentFigure.Size = chartRectInPoint.Size
                officeDocumentFigure.UseGraphicObjectRelativeSize = True
    
    
                ' fill the document template with real data
                FillDocumentTemplate(officeDocumentFigure)
    
                ' create PDF graphics
                Using pdfGraphics As Vintasoft.Imaging.Pdf.Drawing.PdfGraphics = pdfPage.GetGraphics()
                    ' draw chart on PDF page
                    officeDocumentFigure.DrawFigure(pdfGraphics)
                End Using
    
                ' save changes in PDF document
                pdfDocument.SaveChanges()
            End Using
        End Using
    End Sub
    
    ''' <summary>
    ''' Fills the template DOCX document with real data.
    ''' </summary>
    ''' <param name="figure">The document figure.</param>
    Private Shared Sub FillDocumentTemplate(figure As Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure)
        ' create DOCX document editor
        Using editor As New Vintasoft.Imaging.Office.OpenXml.Editor.Docx.DocxDocumentEditor(figure.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 (disposed after use)
            Dim changedDocumentStream As New System.IO.MemoryStream()
            ' save template changes
            editor.Save(changedDocumentStream)
            ' change document stream
            figure.SetDocumentStream(changedDocumentStream, True)
        End Using
    End Sub
    
    
    
    /// <summary>
    /// Add chart to a PDF document.
    /// </summary>
    /// <param name="filePath">The PDF file path.</param>
    /// <param name="chartRectInPoint">The chart rect on PDF page in points (1/72 inch).</param>
    public static void AddChartToPdfFile(string filePath, System.Drawing.RectangleF chartRectInPoint)
    {
        // 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 Office document figure
            using (Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure officeDocumentFigure = new Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure())
            {
                // update figure properties
    
                officeDocumentFigure.SetDocumentFilename(templateDocDocumentPath);
                officeDocumentFigure.Location = chartRectInPoint.Location;
                officeDocumentFigure.Size = chartRectInPoint.Size;
                officeDocumentFigure.UseGraphicObjectRelativeSize = true;
    
    
                // fill the document template with real data
                FillDocumentTemplate(officeDocumentFigure);
    
                // create PDF graphics
                using (Vintasoft.Imaging.Pdf.Drawing.PdfGraphics pdfGraphics = pdfPage.GetGraphics())
                {
                    // draw chart on PDF page
                    officeDocumentFigure.DrawFigure(pdfGraphics);
                }
    
                // save changes in PDF document
                pdfDocument.SaveChanges();
            }
        }
    }
    
    /// <summary>
    /// Fills the template DOCX document with real data.
    /// </summary>
    /// <param name="figure">The document figure.</param>
    private static void FillDocumentTemplate(Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure figure)
    {
        // create DOCX document editor
        using (Vintasoft.Imaging.Office.OpenXml.Editor.Docx.DocxDocumentEditor editor =
            new Vintasoft.Imaging.Office.OpenXml.Editor.Docx.DocxDocumentEditor(figure.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 (disposed after use)
            System.IO.MemoryStream changedDocumentStream = new System.IO.MemoryStream();
            // save template changes
            editor.Save(changedDocumentStream);
            // change document stream
            figure.SetDocumentStream(changedDocumentStream, true);
        }
    }
    
    

    Inheritance Hierarchy

    System.Object
       Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.GraphicsFigure
          Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.RectangleFigure
             Vintasoft.Imaging.Pdf.Drawing.GraphicsFigures.OfficeDocumentFigure

    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