A PDF document allows to define actions, which should be performed by application while PDF document is being viewed. The actions may be simple, e.g. go to a destination in the current document, or complex, e.g. launch an external application or JavaScript code.
' 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 project, which uses this code, must have references to the following assemblies: ' - Vintasoft.Imaging.Pdf ''' <summary> ''' Changes action of the first bookmark of PDF document. ''' </summary> ''' <param name="pdfFilename">The filename of PDF document.</param> Public Shared Sub ChangeFirstBookmarkAction(pdfFilename As String) ' open PDF document Using document As New Vintasoft.Imaging.Pdf.PdfDocument(pdfFilename) ' create goto action to the last page of PDF document Dim dest As New Vintasoft.Imaging.Pdf.Tree.PdfDestinationFit(document, document.Pages(document.Pages.Count - 1)) Dim newAction As New Vintasoft.Imaging.Pdf.Tree.PdfGotoAction(dest) ' get the first bookmark of PDF document Dim bookmark As Vintasoft.Imaging.Pdf.Tree.PdfBookmark = document.Bookmarks(0) ' change the action of bookmark bookmark.Action = newAction ' save changes to a file document.SaveChanges() End Using End Sub
// The project, which uses this code, must have references to the following assemblies: // - Vintasoft.Imaging.Pdf /// <summary> /// Changes action of the first bookmark of PDF document. /// </summary> /// <param name="pdfFilename">The filename of PDF document.</param> public static void ChangeFirstBookmarkAction(string pdfFilename) { // open PDF document using (Vintasoft.Imaging.Pdf.PdfDocument document = new Vintasoft.Imaging.Pdf.PdfDocument(pdfFilename)) { // create goto action to the last page of PDF document Vintasoft.Imaging.Pdf.Tree.PdfDestinationFit dest = new Vintasoft.Imaging.Pdf.Tree.PdfDestinationFit(document, document.Pages[document.Pages.Count - 1]); Vintasoft.Imaging.Pdf.Tree.PdfGotoAction newAction = new Vintasoft.Imaging.Pdf.Tree.PdfGotoAction(dest); // get the first bookmark of PDF document Vintasoft.Imaging.Pdf.Tree.PdfBookmark bookmark = document.Bookmarks[0]; // change the action of bookmark bookmark.Action = newAction; // save changes to a file document.SaveChanges(); } }