צור, מלא או ערוך טפסי PDF הניתנים למילוי עם C++

עם הופעת המחשבים והאינטרנט, מידע רב נקלט בצורה דיגיטלית. חברות שונות המציאו פתרונות כדי להפוך את התהליך הזה ליעיל יותר. פתרון אחד כזה הוא טפסי PDF הניתנים למילוי. טפסי PDF הם בחירה פופולרית שמקלה על לכידת מידע דיגיטלית. ניתן להשתמש בטפסי PDF ללכידת נתוני סקר או כטופסי קבלה. לאור זאת, מאמר זה ילמד אותך כיצד ליצור, למלא ולערוך טפסי PDF הניתנים למילוי באמצעות C++.

C++ API ליצירה, מילוי ועריכה של טפסי PDF הניתנים למילוי

Aspose.PDF for C++ היא ספריית C++ המאפשרת לך ליצור, לקרוא ולעדכן מסמכי PDF. יתר על כן, ה-API תומך ביצירה, מילוי ועריכה של טפסי PDF הניתנים למילוי. אתה יכול להתקין את ה-API דרך NuGet או להוריד אותו ישירות מהקטע הורדות.

PM> Install-Package Aspose.PDF.Cpp

צור טפסי PDF הניתנים למילוי באמצעות C++

בדוגמה זו, ניצור טופס מאפס עם שתי תיבות טקסט וכפתור בחירה אחד. עם זאת, תיבת טקסט אחת היא מרובת שורות, והשנייה היא שורה אחת. להלן השלבים ליצירת טופס בקובץ PDF.

הקוד לדוגמה הבא מראה כיצד ליצור טופס בקובץ PDF באמצעות C++.

// צור מופע של המחלקה Document
auto pdfDocument = MakeObject<Document>();

// הוסף עמוד ריק למסמך
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();

System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);

// צור TextBoxField
System::SharedPtr<TextBoxField> nameBox = MakeObject<TextBoxField>(pdfDocument, rectangle1);

nameBox->set_PartialName(u"nameBox1");
nameBox->get_DefaultAppearance()->set_FontSize(10);
nameBox->set_Multiline(true);

System::SharedPtr<Border> nameBorder = MakeObject<Border>(nameBox);

nameBorder->set_Width(1);
nameBox->set_Border(nameBorder);
nameBox->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
nameBox->set_Color(Aspose::Pdf::Color::FromRgb(System::Drawing::Color::get_Red()));

System::SharedPtr<Aspose::Pdf::Rectangle> rectangle2 = MakeObject<Aspose::Pdf::Rectangle>(275, 718, 440, 738);

// צור TextBoxField
System::SharedPtr<TextBoxField> mrnBox = MakeObject<TextBoxField>(pdfDocument, rectangle2);

mrnBox->set_PartialName(u"Box1");
mrnBox->get_DefaultAppearance()->set_FontSize(10);

System::SharedPtr<Border> mrnBorder = MakeObject<Border>(mrnBox);

mrnBox->set_Width(165);
mrnBox->set_Border(mrnBorder);
mrnBox->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
mrnBox->set_Color(Aspose::Pdf::Color::FromRgb(System::Drawing::Color::get_Red()));

// הוסף את TextBoxField לטופס
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);

// צור טבלה
System::SharedPtr<Table> table = MakeObject<Table>();

table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");

// הוסף את הטבלה לדף
page->get_Paragraphs()->Add(table);

// צור שורות ועמודות
System::SharedPtr<Row> r1 = table->get_Rows()->Add();
System::SharedPtr<Row> r2 = table->get_Rows()->Add();
System::SharedPtr<Cell> c1 = r1->get_Cells()->Add();
System::SharedPtr<Cell> c2 = r2->get_Cells()->Add();

// צור RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);

rf->set_PartialName(u"radio");

// הוסף את RadioButtonField לטופס
pdfDocument->get_Form()->Add(rf, 1);

// צור אפשרויות לחצן בחירה
System::SharedPtr<RadioButtonOptionField> opt1 = MakeObject<RadioButtonOptionField>();
System::SharedPtr<RadioButtonOptionField> opt2 = MakeObject<RadioButtonOptionField>();

opt1->set_OptionName(u"Yes");
opt2->set_OptionName(u"No");

opt1->set_Width(15);
opt1->set_Height(15);

opt2->set_Width(15);
opt2->set_Height(15);

// הוסף את האפשרויות ל-RadioButtonField
rf->Add(opt1);
rf->Add(opt2);

System::SharedPtr<Border> opt1Border = MakeObject<Border>(opt1);

opt1->set_Border(opt1Border);
opt1->get_Border()->set_Width(1);
opt1->get_Border()->set_Style(BorderStyle::Solid);
opt1->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt1->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());

System::SharedPtr<TextFragment> opt1Fragment = MakeObject<TextFragment>(u"Yes");

opt1->set_Caption(opt1Fragment);

System::SharedPtr<Border> opt2Border = MakeObject<Border>(opt2);

opt2->set_Border(opt2Border);
opt2->get_Border()->set_Width(1);
opt2->get_Border()->set_Style(BorderStyle::Solid);
opt2->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt2->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());

System::SharedPtr<TextFragment> opt2Fragment = MakeObject<TextFragment>(u"No");

opt2->set_Caption(opt2Fragment);

// הוסף את האפשרויות לתאי הטבלה
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);


// שמור את קובץ הפלט
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

מלא טופס קיים בקובץ PDF באמצעות C++

בדוגמה זו, נשתמש בקובץ שנוצר בדוגמה הקודמת. נטען את הקובץ באמצעות המחלקה Document ונמלא את השדות שלו. להלן השלבים למילוי השדות של טופס PDF קיים.

הקוד לדוגמה הבא מראה כיצד למלא טופס קיים בקובץ PDF באמצעות C++.

// טען את קובץ ה-PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");

// אחזר את שדות תיבת הטקסט
System::SharedPtr<TextBoxField> textBoxField1 = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
System::SharedPtr<TextBoxField> textBoxField2 = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"Box1"));

// הגדר את הערך של שדות תיבת הטקסט
textBoxField1->set_Value(u"A quick brown fox jumped over the lazy dog.");
textBoxField2->set_Value(u"A quick brown fox jumped over the lazy dog.");

// אחזר את שדה לחצן הבחירה
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));

// הגדר את הערך של שדה לחצן הבחירה
radioField->set_Selected(1);

// שמור את קובץ הפלט
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

שנה את הערך של שדה טופס בטופס PDF באמצעות C++

עם Aspose.PDF עבור C++, אנו יכולים גם לשנות את הערך של שדה שמולא בעבר. בדוגמה זו, נשתמש בקובץ שנוצר בדוגמה הקודמת ונשנה את הערך של TextBoxField הראשון. כדי להשיג זאת, אנא בצע את השלבים המפורטים להלן.

הקוד לדוגמה הבא מראה כיצד לשנות את הערך של שדה בטופס PDF באמצעות C++.

// טען את קובץ ה-PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// אחזר את TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));

// עדכן את הערך של TextBoxField
textBoxField->set_Value(u"Changed Value");

// סמן את TextBoxField כקריאה בלבד
textBoxField->set_ReadOnly(true);

// שמור את קובץ הפלט
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

מחק שדה טופס מטופס PDF קיים באמצעות C++

ה-API גם מאפשר לך למחוק שדות טפסים מטפסי PDF קיימים. להלן השלבים למחיקת שדה טופס מטופס PDF.

הקוד לדוגמה הבא מראה כיצד למחוק שדה טופס מטופס PDF קיים באמצעות C++.

// טען את קובץ ה-PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// מחק את השדה
pdfDocument->get_Form()->Delete(u"nameBox1");

// שמור את קובץ הפלט
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

תמונה של קובץ ה-PDF שנוצר על ידי הקוד לדוגמה

קבל רישיון חינם

אתה יכול לנסות את ה-API ללא מגבלות הערכה על ידי בקשת רישיון זמני ללא תשלום.

סיכום

במאמר זה, למדת כיצד ליצור טפסים בקבצי PDF באמצעות C++. בנוסף, למדת כיצד למלא ולשנות שדות קיימים בטפסי PDF. ראית גם כיצד להסיר שדה טופס מטופס PDF באמצעות Aspose.PDF עבור C++ API. ה-API מספק חבורה של תכונות נוספות לעבודה עם קובצי PDF שתוכלו לחקור בפירוט על ידי מעבר על התיעוד הרשמי. אם יש לך שאלות לגבי היבט כלשהו של ה-API, אל תהסס לפנות אלינו ב[פורום התמיכה החינמית] שלנו41.

ראה גם