VintaSoft Imaging .NET SDK 15.1: Documentation for .NET developer
Vintasoft.Imaging.Pdf Namespace / PdfDocument Class / ConvertDocument Methods / ConvertDocument(PdfDocumentConformance,ProcessingState) Method
Syntax Exceptions Remarks Example Requirements SeeAlso
In This Topic
ConvertDocument(PdfDocumentConformance,ProcessingState) Method (PdfDocument)
In This Topic
Converts a PDF document to the conformance with the specified format.
Syntax
Exceptions
ExceptionDescription
Thrown if PDF document does not have the source.
Thrown if documentConformance is Undefined.
Thrown if conversion to documentConformance is unsupported now.
Remarks

The method supports only the following formats: PDF/A-1b, PDF/A-2b, PDF/A-3b, PDF/A-1a, PDF/A-2a, PDF/A-3a, PDF/A-2u, PDF/A-3u, PDF/A-4, PDF/A-4e, PDF/A-4f.

PdfA1bConverter, PdfA2bConverter , PdfA3bConverter or PdfA4Converter classes can be used if PDF document must be converted with custom settings (ICC profiles, compressions, etc).

Example

Here is an example that shows how to convert a PDF document to conformance with PDF/A-1b specification and show the detailed result of verification:


''' <summary>
''' Converts a PDF document to conformance with PDF/A-1b specification and
''' shows the detailed result of verification.
''' </summary>
''' <param name="pdfFilename">The filename of source PDF document.</param>
''' <param name="outputPdfFilename">The filename of output PDF document.</param>
Public Shared Sub ConvertDocumentToPdfA1bDetailed(pdfFilename As String, outputPdfFilename As String)
    ' determine that file must converted to the PDF/A-1b and saved back to the source file
    Dim sameFile As Boolean = pdfFilename.ToUpperInvariant() = outputPdfFilename.ToUpperInvariant()
    ' if converted PDF document must NOT be saved to the source file
    If Not sameFile Then
        ' copy the source file to the output file
        System.IO.File.Copy(pdfFilename, outputPdfFilename, True)
    End If

    ' open PDF document
    Using document As New Vintasoft.Imaging.Pdf.PdfDocument(outputPdfFilename)
        Using processingState As New Vintasoft.Imaging.Processing.ProcessingState()
            ' subscribe to the events for monitoring the progress
            AddHandler processingState.Progress, New System.EventHandler(Of Vintasoft.Imaging.ProgressEventArgs)(AddressOf convertProcessingState_Progress)

            ' execute the conversion
            Dim result As Vintasoft.Imaging.Processing.ConversionProfileResult = document.ConvertDocument(Vintasoft.Imaging.Pdf.PdfDocumentConformance.PdfA_1b, processingState)
            System.Console.WriteLine("finished.")

            ' if PDF document is converted successfully
            If result.IsSuccessful Then
                System.Console.WriteLine("Document converted to PDF/A-1b.")
            Else
                ' if PDF document is NOT converted
                If Not sameFile Then
                    System.IO.File.Delete(outputPdfFilename)
                End If

                System.Console.WriteLine("Cannot convert document to PDF/A-1b, unsolved problems:")
                ' for each activated trigger
                For Each command As Vintasoft.Imaging.Processing.IProcessingCommandInfo In result.ActivatedTriggers.Keys
                    ' output information about activated trigger
                    System.Console.WriteLine(String.Format("  {0} ({1} matches)", command, result.ActivatedTriggers(command).Count))
                Next
            End If
        End Using
    End Using
End Sub

''' <summary>
''' Handles the Progress event of the ProcessingState.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Shared Sub convertProcessingState_Progress(sender As Object, e As Vintasoft.Imaging.ProgressEventArgs)
    System.Console.CursorLeft = 0
    System.Console.Write(String.Format("Conversion {0}%...", e.Progress))
End Sub


/// <summary>
/// Converts a PDF document to conformance with PDF/A-1b specification and
/// shows the detailed result of verification.
/// </summary>
/// <param name="pdfFilename">The filename of source PDF document.</param>
/// <param name="outputPdfFilename">The filename of output PDF document.</param>
public static void ConvertDocumentToPdfA1bDetailed(
    string pdfFilename,
    string outputPdfFilename)
{
    // determine that file must converted to the PDF/A-1b and saved back to the source file
    bool sameFile = pdfFilename.ToUpperInvariant() == outputPdfFilename.ToUpperInvariant();
    // if converted PDF document must NOT be saved to the source file
    if (!sameFile)
        // copy the source file to the output file
        System.IO.File.Copy(pdfFilename, outputPdfFilename, true);

    // open PDF document
    using (Vintasoft.Imaging.Pdf.PdfDocument document = 
        new Vintasoft.Imaging.Pdf.PdfDocument(outputPdfFilename))
    {
        using (Vintasoft.Imaging.Processing.ProcessingState processingState = 
            new Vintasoft.Imaging.Processing.ProcessingState())
        {
            // subscribe to the events for monitoring the progress
            processingState.Progress += new System.EventHandler<Vintasoft.Imaging.ProgressEventArgs>(
                convertProcessingState_Progress);

            // execute the conversion
            Vintasoft.Imaging.Processing.ConversionProfileResult result =
                document.ConvertDocument(Vintasoft.Imaging.Pdf.PdfDocumentConformance.PdfA_1b, processingState);
            System.Console.WriteLine("finished.");

            // if PDF document is converted successfully
            if (result.IsSuccessful)
            {
                System.Console.WriteLine("Document converted to PDF/A-1b.");
            }
            // if PDF document is NOT converted
            else
            {
                if (!sameFile)
                    System.IO.File.Delete(outputPdfFilename);

                System.Console.WriteLine("Cannot convert document to PDF/A-1b, unsolved problems:");
                // for each activated trigger
                foreach (Vintasoft.Imaging.Processing.IProcessingCommandInfo command in result.ActivatedTriggers.Keys)
                {
                    // output information about activated trigger
                    System.Console.WriteLine(string.Format("  {0} ({1} matches)",
                        command,
                        result.ActivatedTriggers[command].Count));
                }
            }
        }
    }
}

/// <summary>
/// Handles the Progress event of the ProcessingState.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void convertProcessingState_Progress(object sender, Vintasoft.Imaging.ProgressEventArgs e)
{
    System.Console.CursorLeft = 0;
    System.Console.Write(string.Format("Conversion {0}%...", e.Progress));
}

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