Flatten PDFs in C# .NET

Flattening PDFs means removing objects such as form fields, annotations, and optional content groups (OCGs) from a document’s internal structure and placing their data in the PDF as regular items.

Flattening All Form Fields

To flatten all form fields in a PDF document, use the FlattenFormFields method:

using GdPicturePDF gdpicturePDF = new GdPicturePDF();
gdpicturePDF.LoadFromFile(@"C:\temp\source.pdf");
// Flatten all form fields.
gdpicturePDF.FlattenFormFields();
gdpicturePDF.SaveToFile(@"C:\temp\output.pdf");
Using gdpicturePDF As GdPicturePDF = New GdPicturePDF()
    gdpicturePDF.LoadFromFile("C:\temp\source.pdf")
    ' Flatten all form fields.
    gdpicturePDF.FlattenFormFields()
    gdpicturePDF.SaveToFile("C:\temp\output.pdf")
End Using
Used Methods

Related Topics

Flattening Form Fields on a Specified Page

To flatten all form fields on a specific page of a PDF document, use the FlattenFormFields method and specify the page number as its parameter:

using GdPicturePDF gdpicturePDF = new GdPicturePDF();
gdpicturePDF.LoadFromFile(@"C:\temp\source.pdf");
// Flatten form fields on the second page.
gdpicturePDF.FlattenFormFields(2);
gdpicturePDF.SaveToFile(@"C:\temp\output.pdf");
Using gdpicturePDF As GdPicturePDF = New GdPicturePDF()
    gdpicturePDF.LoadFromFile("C:\temp\source.pdf")
    ' Flatten form fields on the second page.
    gdpicturePDF.FlattenFormFields(2)
    gdpicturePDF.SaveToFile("C:\temp\output.pdf")
End Using
Used Methods

Related Topics

Flattening All Annotations

To flatten all annotations in a PDF document, follow these steps:

  1. Create a GdPicturePDF object.

  2. Load the source document by passing its path to the LoadFromFile method.

  3. Determine the number of pages with the GetPageCount and loop through them.

  4. Determine the number of annotations on each page with the GetAnnotationCount and loop through them.

  5. Flatten each annotation by passing its index with the FlattenAnnotation method.

  6. Save the output in a PDF document.

using GdPicturePDF gdpicturePDF = new GdPicturePDF();
gdpicturePDF.LoadFromFile(@"C:\temp\source.pdf");
// Loop through each annotation on each page.
int pageCount = gdpicturePDF.GetPageCount();
for (int pageIndex = 1; pageIndex <= pageCount; pageIndex++)
{
    gdpicturePDF.SelectPage(pageIndex);
    int annotationCount = gdpicturePDF.GetAnnotationCount();
    for (int annotationIndex = 0; annotationIndex < annotationCount; annotationIndex++)
    {
        // Flatten each annotation.
        gdpicturePDF.FlattenAnnotation(annotationIndex);
    }
}
gdpicturePDF.SaveToFile(@"C:\temp\output.pdf");
Using gdpicturePDF As GdPicturePDF = New GdPicturePDF()
    gdpicturePDF.LoadFromFile("C:\temp\source.pdf")
    ' Loop through each annotation on each page.
    Dim pageCount As Integer = gdpicturePDF.GetPageCount()
    For pageIndex = 1 To pageCount
        gdpicturePDF.SelectPage(pageIndex)
        Dim annotationCount As Integer = gdpicturePDF.GetAnnotationCount()
        For annotationIndex = 0 To annotationCount - 1
            ' Flatten each annotation.
            gdpicturePDF.FlattenAnnotation(annotationIndex)
        Next
    Next
    gdpicturePDF.SaveToFile("C:\temp\output.pdf")
End Using
Used Methods

Related Topics

Flattening All Visible Optional Content Groups

To flatten all visible optional content groups (OCGs) in a PDF document, use the FlattenVisibleOCGs method:

using GdPicturePDF gdpicturePDF = new GdPicturePDF();
gdpicturePDF.LoadFromFile(@"C:\temp\source.pdf");
gdpicturePDF.FlattenVisibleOCGs();
gdpicturePDF.SaveToFile(@"C:\temp\output.pdf");
Using gdpicturePDF As GdPicturePDF = New GdPicturePDF()
    gdpicturePDF.LoadFromFile("C:\temp\source.pdf")
    gdpicturePDF.FlattenVisibleOCGs();
    gdpicturePDF.SaveToFile("C:\temp\output.pdf")
End Using
Used Methods

Related Topics