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

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: .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