using ComPDFKit.Import; using ComPDFKit.PDFAnnotation; using ComPDFKit.PDFAnnotation.Form; using ComPDFKit.PDFDocument; using ComPDFKit.PDFDocument.Action; using ComPDFKit.PDFPage; using ComPDFKit.PDFPage.Edit; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InteractiveFormsTest { internal class InteractiveFormsTest { static private string outputPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()))) + "\\Output\\InteractiveForms"; static void Main(string[] args) { Console.WriteLine("Running interactive forms test sample…\r\n"); SDKLicenseHelper.LicenseVerify(); if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf"); if (CreateForms(document)) { Console.WriteLine("Create forms done."); } else { Console.WriteLine("Create forms failed."); } Console.WriteLine("--------------------"); Console.WriteLine("Done"); Console.WriteLine("--------------------"); Console.ReadLine(); } /// /// Create text field. /// Text field: used to input text /// static private void CreateTextField(CPDFDocument document) { CPDFPage page = document.PageAtIndex(0); CPDFTextWidget textField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_TEXTFIELD) as CPDFTextWidget; textField.SetRect(new CRect( 28, 32, 235, 75)); textField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); textField.SetWidgetBgRGBColor(new byte[] {240,255,240}); } /// /// Create push button. /// Push button: Click to perform some actions, such as jumping to a page or website. /// static private void CreatePushButton(CPDFDocument document) { CPDFPage page = document.PageAtIndex(0); CPDFPushButtonWidget pushButton1 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_PUSHBUTTON) as CPDFPushButtonWidget; pushButton1.SetRect(new CRect(28, 150, 150, 100)); pushButton1.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); pushButton1.SetWidgetBgRGBColor(new byte[] { 180, 180, 220 }); pushButton1.SetButtonTitle("Go To Page 2"); CTextAttribute attribute = new CTextAttribute(); attribute.FontColor = new byte[] { 0, 0, 0 }; attribute.FontSize = 14; attribute.FontName = "Helvetica"; pushButton1.SetTextAttribute(attribute); CPDFGoToAction gotoAction = new CPDFGoToAction(); CPDFDestination dest = new CPDFDestination(); dest.PageIndex = 1; gotoAction.SetDestination(document, dest); pushButton1.SetButtonAction(gotoAction); pushButton1.UpdateFormAp(); CPDFPushButtonWidget pushButton2 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_PUSHBUTTON) as CPDFPushButtonWidget; pushButton2.SetRect(new CRect(168, 150, 290, 100)); pushButton2.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); pushButton2.SetWidgetBgRGBColor(new byte[] { 180, 180, 220 }); pushButton2.SetButtonTitle("Go To ComPDFKit"); CTextAttribute attribute2 = new CTextAttribute(); attribute2.FontColor = new byte[] { 0, 0, 0 }; attribute2.FontSize = 14; attribute2.FontName = "Helvetica"; pushButton2.SetTextAttribute(attribute); CPDFUriAction uriAction = new CPDFUriAction(); uriAction.SetUri("https://www.compdf.com/"); pushButton2.SetButtonAction(uriAction); pushButton2.UpdateFormAp(); } /// /// Create ListBox /// static private void CreateListBox(CPDFDocument document) { CPDFPage page = document.PageAtIndex(0); CPDFListBoxWidget listbox = page.CreateWidget(C_WIDGET_TYPE.WIDGET_LISTBOX) as CPDFListBoxWidget; listbox.SetRect(new CRect(28, 330, 150, 230)); listbox.AddOptionItem(0, "1", "ComPDFKit1"); listbox.AddOptionItem(1, "2", "ComPDFKit2"); listbox.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); listbox.SetWidgetBgRGBColor(new byte[] { 200, 180, 180 }); } /// /// Create SignatureField /// Provide an area for electronic signatures. /// static private void CreateSignatureField(CPDFDocument document) { CPDFPage page = document.PageAtIndex(0); CPDFSignatureWidget signatureField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS) as CPDFSignatureWidget; signatureField.SetRect(new CRect(28, 420, 150, 370)); signatureField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); signatureField.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 }); } /// /// Create CheckBox /// static private void CreateCheckBox(CPDFDocument document) { CPDFPage page = document.PageAtIndex(0); CPDFCheckBoxWidget checkBox1 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_CHECKBOX) as CPDFCheckBoxWidget; checkBox1.SetRect(new CRect(28, 470, 48, 450)); checkBox1.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); checkBox1.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 }); CPDFCheckBoxWidget checkBox2 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_CHECKBOX) as CPDFCheckBoxWidget; checkBox2.SetRect(new CRect(58, 470, 78, 450)); checkBox2.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); checkBox2.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 }); CPDFCheckBoxWidget checkBox3 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_CHECKBOX) as CPDFCheckBoxWidget; checkBox3.SetRect(new CRect(88, 470, 108, 450)); checkBox3.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); checkBox3.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 }); } /// /// Create RadioButton /// static private void CreateRadioButton(CPDFDocument document) { CPDFPage page = document.PageAtIndex(0); CPDFRadioButtonWidget radioButton1 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_RADIOBUTTON) as CPDFRadioButtonWidget; radioButton1.SetRect(new CRect(28, 500, 48, 480)); radioButton1.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); radioButton1.SetWidgetBgRGBColor(new byte[] { 210, 180, 150 }); radioButton1.SetWidgetCheckStyle(C_CHECK_STYLE.CK_CIRCLE); CPDFRadioButtonWidget radioButton2 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_RADIOBUTTON) as CPDFRadioButtonWidget; radioButton2.SetRect(new CRect(58, 500, 78, 480)); radioButton2.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); radioButton2.SetWidgetBgRGBColor(new byte[] { 210, 180, 150 }); radioButton2.SetWidgetCheckStyle(C_CHECK_STYLE.CK_CIRCLE); CPDFRadioButtonWidget radioButton3 = page.CreateWidget(C_WIDGET_TYPE.WIDGET_RADIOBUTTON) as CPDFRadioButtonWidget; radioButton3.SetRect(new CRect(88, 500, 108, 480)); radioButton3.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 }); radioButton3.SetWidgetBgRGBColor(new byte[] { 210, 180, 150 }); radioButton3.SetWidgetCheckStyle(C_CHECK_STYLE.CK_CIRCLE); } /// /// Generate various signatures. /// static private bool CreateForms(CPDFDocument document) { CreateTextField(document); CreatePushButton(document); CreateListBox(document); CreateSignatureField(document); CreateCheckBox(document); CreateRadioButton(document); // Save to pointed path so you can observe the effect. string path = outputPath + "\\CreateFormsTest.pdf"; if (!document.WriteToFilePath(path)) { return false; } Console.WriteLine("Browse the changed file in " + path); return true; } } }