C++로 채울 수 있는 PDF 양식 생성, 채우기 또는 편집

컴퓨터와 인터넷의 발달로 많은 정보가 디지털 방식으로 캡처됩니다. 여러 회사에서 이 프로세스를 보다 효율적으로 만들기 위한 솔루션을 내놓았습니다. 그러한 솔루션 중 하나는 채울 수 있는 PDF 양식입니다. PDF 양식은 정보를 디지털 방식으로 쉽게 캡처할 수 있게 해주는 널리 사용되는 선택입니다. PDF 양식은 설문 조사 데이터를 캡처하거나 입학 양식으로 사용할 수 있습니다. 이에 비추어 이 기사에서는 C++를 사용하여 채울 수 있는 PDF 양식을 만들고 채우고 편집하는 방법을 설명합니다.

채울 수 있는 PDF 양식 생성, 채우기 및 편집을 위한 C++ API

Aspose.PDF for C++은 PDF 문서를 만들고 읽고 업데이트할 수 있는 C++ 라이브러리입니다. 또한 API는 채울 수 있는 PDF 양식 생성, 채우기 및 편집을 지원합니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.

PM> Install-Package Aspose.PDF.Cpp

C++를 사용하여 채울 수 있는 PDF 양식 만들기

이 예에서는 두 개의 텍스트 상자와 하나의 라디오 버튼이 있는 양식을 처음부터 만듭니다. 그러나 하나의 텍스트 상자는 여러 줄이고 다른 하나는 한 줄입니다. 다음은 PDF 파일에서 양식을 만드는 단계입니다.

다음 샘플 코드는 C++를 사용하여 PDF 파일에 양식을 만드는 방법을 보여줍니다.

// 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 파일의 이미지

C++를 사용하여 PDF 파일의 기존 양식 채우기

이 예에서는 이전 예에서 생성된 파일을 사용합니다. Document 클래스를 사용하여 파일을 로드하고 해당 필드를 채웁니다. 다음은 기존 PDF 양식의 필드를 채우는 단계입니다.

다음 샘플 코드는 C++를 사용하여 PDF 파일의 기존 양식을 채우는 방법을 보여줍니다.

// 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 파일의 이미지

C++를 사용하여 PDF 양식의 양식 필드 값 수정

C++용 Aspose.PDF를 사용하면 이전에 채워진 필드의 값을 수정할 수도 있습니다. 이 예제에서는 이전 예제에서 생성된 파일을 사용하고 첫 번째 TextBoxField 값을 수정합니다. 이를 달성하려면 아래에 제공된 단계를 따르십시오.

다음 샘플 코드는 C++를 사용하여 PDF 양식의 필드 값을 수정하는 방법을 보여줍니다.

// 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 파일의 이미지

C++를 사용하여 기존 PDF 양식에서 양식 필드 삭제

API를 사용하면 기존 PDF 양식에서 양식 필드를 삭제할 수도 있습니다. 다음은 PDF 양식에서 양식 필드를 삭제하는 단계입니다.

다음 샘플 코드는 C++를 사용하여 기존 PDF 양식에서 양식 필드를 삭제하는 방법을 보여줍니다.

// 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를 사용해 볼 수 있습니다.

결론

이 기사에서는 C++를 사용하여 PDF 파일에서 양식을 만드는 방법을 배웠습니다. 또한 PDF 양식의 기존 필드를 채우고 수정하는 방법을 배웠습니다. 또한 Aspose.PDF for C++ API를 사용하여 PDF 양식에서 양식 필드를 제거하는 방법도 보았습니다. API는 공식 문서를 통해 자세히 탐색할 수 있는 PDF 파일 작업을 위한 많은 추가 기능을 제공합니다. API의 모든 측면에 대해 질문이 있는 경우 무료 지원 포럼에서 언제든지 문의하십시오.

또한보십시오