VintaSoft Imaging .NET SDK v8.7
In This Topic
    PDF: View interactive fields of PDF document in WinForms
    In This Topic

    The fields of PDF document interactive form can be displayed on PDF page in WinForms image viewer using the visual tool - PdfAnnotationTool.

    The visual appearance of interactive field is defined using the PdfWidgetAnnotation class, an instance of which can be obtained using PdfInteractiveFormField.Annotation property. For each type of interactive field is implemented the annotation appearance, which defines how the interactive field is displayed and how the user can interact with the interactive field:


    PdfAnnotationTool class allows to display the interactive fields in two modes: None and View.

    In None mode the PdfAnnotationTool class:

    In View mode the PdfAnnotationTool class:

    Here is an example that demonstrates how to display interactive fields of PDF file in WinForms image viewer:
    ' The project, which uses this code, must have references to the following assemblies:
    ' - Vintasoft.Imaging
    ' - Vintasoft.Imaging.Pdf
    ' - Vintasoft.Imaging.Pdf.UI
    
    ''' <summary>
    ''' Creates the PDF annotation tool.
    ''' </summary>
    ''' <param name="viewer">The image viewer.</param>
    Public Shared Function CreatePdfAnnotationTool(viewer As Vintasoft.Imaging.UI.ImageViewer) As Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool
            ' create Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool
            Dim annotationTool As New Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool(True)
            annotationTool.InteractionMode = Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationInteractionMode.Markup
    
            ' create an application action executor
            Dim applicationActionExecutor As New Vintasoft.Imaging.Pdf.PdfActionCompositeExecutor()
            ' add executor for PdfGotoAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.PdfGotoActionExecutor(viewer))
            ' add executor for PdfNamedAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.PdfNamedActionExecutor(viewer))
            ' add executor for PdfResetFormAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolResetFormActionExecutor(annotationTool))
            ' add executor for PdfAnnotationHideAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolAnnotationHideActionExecutor(annotationTool))
            ' add executor for PdfUriAction to the application action executor,
            ' executor is located in WpfPdfDemosCommonCode
            'applicationActionExecutor.Items.Add(new PdfUriActionExecutor());// PdfDemosCommonCode
            ' add executor for PdfLaunchAction to the application action executor,
            ' executor is located in WpfPdfDemosCommonCode
            'applicationActionExecutor.Items.Add(new PdfLaunchActionExecutor());// PdfDemosCommonCode
            ' add executor for PdfSubmitFormAction to the application action executor,
            ' executor is located in WpfPdfDemosCommonCode
            'applicationActionExecutor.Items.Add(new PdfSubmitActionExecutor(viewer));// PdfDemosCommonCode
            ' add the default executor (for PdfResetFormAction and PdfAnnotationHideAction)
            ' to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.PdfActionExecutor())
    
            ' set the application action executor as action executor of PDF annotation tool
            annotationTool.ActionExecutor = applicationActionExecutor
    
            Return annotationTool
    End Function
                  
    
    // The project, which uses this code, must have references to the following assemblies:
    // - Vintasoft.Imaging
    // - Vintasoft.Imaging.Pdf
    // - Vintasoft.Imaging.Pdf.UI
    
    /// <summary>
    /// Creates the PDF annotation tool.
    /// </summary>
    /// <param name="viewer">The image viewer.</param>
    public static Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool CreatePdfAnnotationTool(
        Vintasoft.Imaging.UI.ImageViewer viewer)
    {
        // create Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool
        Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool annotationTool = new Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool(true);
        annotationTool.InteractionMode = Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationInteractionMode.Markup;
    
        // create an application action executor
        Vintasoft.Imaging.Pdf.PdfActionCompositeExecutor applicationActionExecutor = 
            new Vintasoft.Imaging.Pdf.PdfActionCompositeExecutor();
        // add executor for PdfGotoAction to the application action executor
        applicationActionExecutor.Items.Add(new Vintasoft.Imaging.Pdf.UI.PdfGotoActionExecutor(viewer));
        // add executor for PdfNamedAction to the application action executor
        applicationActionExecutor.Items.Add(new Vintasoft.Imaging.Pdf.UI.PdfNamedActionExecutor(viewer));
        // add executor for PdfResetFormAction to the application action executor
        applicationActionExecutor.Items.Add(
            new Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolResetFormActionExecutor(annotationTool));
        // add executor for PdfAnnotationHideAction to the application action executor
        applicationActionExecutor.Items.Add(
            new Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolAnnotationHideActionExecutor(annotationTool));
        // add executor for PdfUriAction to the application action executor,
        // executor is located in WpfPdfDemosCommonCode
        //applicationActionExecutor.Items.Add(new PdfUriActionExecutor());// PdfDemosCommonCode
        // add executor for PdfLaunchAction to the application action executor,
        // executor is located in WpfPdfDemosCommonCode
        //applicationActionExecutor.Items.Add(new PdfLaunchActionExecutor());// PdfDemosCommonCode
        // add executor for PdfSubmitFormAction to the application action executor,
        // executor is located in WpfPdfDemosCommonCode
        //applicationActionExecutor.Items.Add(new PdfSubmitActionExecutor(viewer));// PdfDemosCommonCode
        // add the default executor (for PdfResetFormAction and PdfAnnotationHideAction)
        // to the application action executor
        applicationActionExecutor.Items.Add(new Vintasoft.Imaging.Pdf.PdfActionExecutor());
    
        // set the application action executor as action executor of PDF annotation tool
        annotationTool.ActionExecutor = applicationActionExecutor;
    
        return annotationTool;
    }
                    
    


    The PdfAnnotationTool class has the PdfAnnotationTool.ActionExecutor property, which is used for executing the PDF actions when the interactive field events are triggered. By default the PdfAnnotationTool.ActionExecutor property represents a composite action executor, which can execute different types of actions. For example, the PdfJavaScriptActionExecutor class executes PDF JavaScript action, i.e. executes JavaScript code using JavaScript interpreter.

    Here is an example that demonstrates how to display interactive fields of PDF file in WinForms image viewer with enabled JavaScript:
    ' The project, which uses this code, must have references to the following assemblies:
    ' - Vintasoft.Imaging
    ' - Vintasoft.Imaging.Pdf
    ' - Vintasoft.Imaging.Pdf.JavaScript
    ' - Vintasoft.Imaging.Pdf.UI
    
    ''' <summary>
    ''' Creates the PDF annotation tool with JavaScript support.
    ''' </summary>
    ''' <param name="viewer">The image viewer.</param>
    Public Shared Function CreatePdfAnnotationToolWithJavaScriptSupport(viewer As Vintasoft.Imaging.UI.ImageViewer) As Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool
            ' create PDF JavaScript application
            Dim jsApp As New Vintasoft.Imaging.Pdf.UI.JavaScript.WinFormsPdfJsApp()
            ' add PDF documents, which are associated with images in viewer,
            ' to the document set of PDF JavaScript application
            jsApp.RegisterImageViewer(viewer)
            ' create PdfJavaScriptActionExecutor for PDF JavaScript application
            jsApp.ActionExecutor = New Vintasoft.Imaging.Pdf.JavaScript.PdfJavaScriptActionExecutor(jsApp, New Vintasoft.Imaging.Pdf.JavaScriptApi.PdfJsConsole())
    
            ' create Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool
            Dim annotationTool As New Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool(jsApp, True)
            annotationTool.InteractionMode = Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationInteractionMode.Markup
    
            ' create an application action executor
            Dim applicationActionExecutor As New Vintasoft.Imaging.Pdf.PdfActionCompositeExecutor()
            ' add executor for PdfJavaScriptAction to the application action executor
            applicationActionExecutor.Items.Add(jsApp.ActionExecutor)
            ' add executor for PdfGotoAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.PdfGotoActionExecutor(viewer))
            ' add executor for PdfNamedAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.PdfNamedActionExecutor(viewer))
            ' add executor for PdfResetFormAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolResetFormActionExecutor(annotationTool))
            ' add executor for PdfAnnotationHideAction to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolAnnotationHideActionExecutor(annotationTool))
            ' add executor for PdfUriAction to the application action executor,
            ' executor is located in WpfPdfDemosCommonCode
            'applicationActionExecutor.Items.Add(new PdfUriActionExecutor());
            ' add executor for PdfLaunchAction to the application action executor,
            ' executor is located in WpfPdfDemosCommonCode
            'applicationActionExecutor.Items.Add(new PdfLaunchActionExecutor());
            ' add executor for PdfSubmitFormAction to the application action executor,
            ' executor is located in WpfPdfDemosCommonCode
            'applicationActionExecutor.Items.Add(new PdfSubmitActionExecutor(viewer));
            ' add the default executor (for PdfResetFormAction and PdfAnnotationHideAction)
            ' to the application action executor
            applicationActionExecutor.Items.Add(New Vintasoft.Imaging.Pdf.PdfActionExecutor())
    
            ' set the application action executor as action executor of PDF annotation tool
            annotationTool.ActionExecutor = applicationActionExecutor
    
            ' create a document-level actions executor
            Dim documentLevelActionsExecutor As New Vintasoft.Imaging.Pdf.PdfDocumentLevelActionsExecutor(jsApp)
            ' set the application action executor as action executor of the document-level actions executor
            documentLevelActionsExecutor.ActionExecutor = applicationActionExecutor
    
            Return annotationTool
    End Function
                  
    
    // The project, which uses this code, must have references to the following assemblies:
    // - Vintasoft.Imaging
    // - Vintasoft.Imaging.Pdf
    // - Vintasoft.Imaging.Pdf.JavaScript
    // - Vintasoft.Imaging.Pdf.UI
    
    /// <summary>
    /// Creates the PDF annotation tool with JavaScript support.
    /// </summary>
    /// <param name="viewer">The image viewer.</param>
    public static Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool CreatePdfAnnotationToolWithJavaScriptSupport(Vintasoft.Imaging.UI.ImageViewer viewer)
    {
        // create PDF JavaScript application
        Vintasoft.Imaging.Pdf.UI.JavaScript.WinFormsPdfJsApp jsApp = 
            new Vintasoft.Imaging.Pdf.UI.JavaScript.WinFormsPdfJsApp();
        // add PDF documents, which are associated with images in viewer,
        // to the document set of PDF JavaScript application
        jsApp.RegisterImageViewer(viewer);
        // create PdfJavaScriptActionExecutor for PDF JavaScript application
        jsApp.ActionExecutor = new Vintasoft.Imaging.Pdf.JavaScript.PdfJavaScriptActionExecutor(
            jsApp, new Vintasoft.Imaging.Pdf.JavaScriptApi.PdfJsConsole());
    
        // create Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool
        Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool annotationTool = 
            new Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationTool(jsApp, true);
        annotationTool.InteractionMode = Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationInteractionMode.Markup;
    
        // create an application action executor
        Vintasoft.Imaging.Pdf.PdfActionCompositeExecutor applicationActionExecutor = 
            new Vintasoft.Imaging.Pdf.PdfActionCompositeExecutor();
        // add executor for PdfJavaScriptAction to the application action executor
        applicationActionExecutor.Items.Add(jsApp.ActionExecutor);
        // add executor for PdfGotoAction to the application action executor
        applicationActionExecutor.Items.Add(new Vintasoft.Imaging.Pdf.UI.PdfGotoActionExecutor(viewer));
        // add executor for PdfNamedAction to the application action executor
        applicationActionExecutor.Items.Add(new Vintasoft.Imaging.Pdf.UI.PdfNamedActionExecutor(viewer));
        // add executor for PdfResetFormAction to the application action executor
        applicationActionExecutor.Items.Add(
            new Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolResetFormActionExecutor(annotationTool));
        // add executor for PdfAnnotationHideAction to the application action executor
        applicationActionExecutor.Items.Add(
            new Vintasoft.Imaging.Pdf.UI.Annotations.PdfAnnotationToolAnnotationHideActionExecutor(annotationTool));
        // add executor for PdfUriAction to the application action executor,
        // executor is located in WpfPdfDemosCommonCode
        //applicationActionExecutor.Items.Add(new PdfUriActionExecutor());
        // add executor for PdfLaunchAction to the application action executor,
        // executor is located in WpfPdfDemosCommonCode
        //applicationActionExecutor.Items.Add(new PdfLaunchActionExecutor());
        // add executor for PdfSubmitFormAction to the application action executor,
        // executor is located in WpfPdfDemosCommonCode
        //applicationActionExecutor.Items.Add(new PdfSubmitActionExecutor(viewer));
        // add the default executor (for PdfResetFormAction and PdfAnnotationHideAction)
        // to the application action executor
        applicationActionExecutor.Items.Add(new Vintasoft.Imaging.Pdf.PdfActionExecutor());
    
        // set the application action executor as action executor of PDF annotation tool
        annotationTool.ActionExecutor = applicationActionExecutor;
    
        // create a document-level actions executor
        Vintasoft.Imaging.Pdf.PdfDocumentLevelActionsExecutor documentLevelActionsExecutor =
           new Vintasoft.Imaging.Pdf.PdfDocumentLevelActionsExecutor(jsApp);
        // set the application action executor as action executor of the document-level actions executor
        documentLevelActionsExecutor.ActionExecutor = applicationActionExecutor;
    
        return annotationTool;
    }
                    
    


    The information on how to edit the interactive fields of PDF document in WinForms image viewer is available here: "Editing interactive fields of PDF document in WinForms".