З розвитком Інтернету все стало цифровим, а безпаперові системи стали популярними. Цифрові документи, тобто PDF, є одними з будівельних блоків безпаперових систем, які полегшили життя завдяки забезпеченню функцій автоматизованого створення та обробки. Більшість підприємств використовують автоматизацію PDF-документів для динамічного створення звітів, квитанцій, рахунків-фактур та інших бізнес-документів. Тому в цій статті я покажу, як інтегрувати функції автоматизації PDF у програми на основі C++ і створювати файли PDF за допомогою C++.

Бібліотека C++ PDF

Для створення PDF-файлів ми використовуватимемо API Aspose.PDF for C++, який є рідною бібліотекою C++ для програмної роботи з PDF-документами. Він дозволяє створювати інтерактивні документи PDF із підтримкою різних елементів PDF. Aspose.PDF for C++ доступний на NuGet, а також у розділі Завантаження Aspose.

Створіть файл PDF на C++

Перш за все, ми створимо простий PDF-файл і додамо трохи тексту на першу сторінку у вигляді абзацу. Слід виконати наступні дії:

  • Створіть об’єкт Документ.
  • Додайте сторінку до PageCollection документа.
  • Отримати абзац сторінки.
  • Створіть об’єкт TextFragment і додайте його до абзацу.
  • Збережіть документ PDF.

У наведеному нижче прикладі коду показано, як створити PDF-документ на C++.

// Створити документ
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
// Нумерація сторінок починається з 1
auto page = pages->idx_get(1);
auto paragraps = page->get_Paragraphs();	
// Створення текстового фрагмента
auto text = MakeObject<TextFragment>(u"PDF API for C++");
auto ts = text->get_TextState();
// Встановити стан тексту
ts->set_FontSize(16);
ts->set_FontStyle(FontStyles::Italic);
// Додати до абзацу
paragraps->Add(text);
// Додати текст до абзацу
paragraps->Add(MakeObject<TextFragment>(u"This example shows how to create a PDF with text using Aspose.PDF for C++."));
// Зберегти файл PDF
doc->Save(u"Example1.pdf");

Вихід

Створення PDF-файлів на C++

Створіть PDF-файл за допомогою TextBuilder у C++

У цьому розділі я покажу вам, як використовувати клас TextBuilder для додавання різноманітних фрагментів тексту та абзаців на сторінку. Крім того, в цьому прикладі ви дізнаєтеся, як задати положення фрагмента тексту на сторінці. Нижче наведено кроки для виконання цієї операції.

  • Створіть об’єкт «Документ».
  • Додати сторінку до документа.
  • Створіть об’єкт TextBuilder.
  • Створіть TextFragment і додайте його текст.
  • Встановіть положення TextFragment.
  • Додайте TextFragment за допомогою TextBuilder.
  • Зберегти документ PDF.

У наведеному нижче прикладі коду показано, як створити PDF-файл за допомогою TextBuilder у C++.

// Створити об'єкт документа
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
// Створіть TextBuilder
auto tb = MakeObject<TextBuilder>(pages->idx_get(1));
// Створіть TextFragment
auto text = MakeObject<TextFragment>(u"Hello world!");
text->set_Position(MakeObject<Position>(100, 800));
// Додайте TextFragment
tb->AppendText(text);
// Створіть інший TextFragment
text = MakeObject<TextFragment>(u"This example is created by Aspose.Pdf for C++.");
text->set_Position(MakeObject<Position>(150, 750));
tb->AppendText(text);
// Створіть інший TextFragment
text = MakeObject<TextFragment>(u"It demonstrates how to use TextBuilder to append text into PDF file.");
text->set_Position(MakeObject<Position>(200, 700));
tb->AppendText(text);
// Створіть TextParagraph
auto par = MakeObject<TextParagraph>();
par->set_Position(MakeObject<Position>(250,650));
par->AppendLine(u"New paragraph");
par->AppendLine(u"Line 2");
par->AppendLine(u"Line 3");
tb->AppendParagraph(par);
// Зберегти документ PDF
doc->Save(u"Created PDF.pdf");

Вихід

C++ PDF API

Створіть PDF-файл із зображенням у C++

Ви також можете створювати та додавати зображення до документів PDF за допомогою Aspose.PDF for C++. Нижче наведено кроки для виконання цієї операції.

  • Створіть об’єкт «Документ».
  • Додати сторінку до документа.
  • Створіть зображення для додавання.
  • Додайте зображення до PDF-файлу.
  • Зберегти файл PDF.

У наведеному нижче прикладі коду показано, як створити та додати зображення до PDF-документа на C++.

// Створити об'єкт документа
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
auto page = pages->idx_get(1);
// Створіть образ
auto stream = MakeObject<IO::MemoryStream>();
SharedPtr<Bitmap> bitmap = MakeObject<Bitmap>(200, 200);
SharedPtr<Graphics> graphics = Graphics::FromImage(bitmap);
graphics->Clear(System::Drawing::Color::get_Yellow());
graphics->FillRectangle(Brushes::get_Blue(), System::Drawing::Rectangle(0, 0, 200, 100));
bitmap->Save(stream, Imaging::ImageFormat::get_Bmp());
// Створіть прямокутник
double x = 100.0, y = 600.0, width = 200.0, height = 200.0;
auto rect = MakeObject<Aspose::Pdf::Rectangle>(x, y, x + width, y + height);
// Додати зображення до PDF
stream->Seek(0, System::IO::SeekOrigin::Begin);
page->AddImage(stream, rect);
// Зберегти документ PDF
doc->Save(u"Created PDF.pdf");

Вихід

Бібліотека C++ PDF

Створіть PDF-файл із вкладеннями на C++

Формат PDF також дозволяє додавати вкладення до документа. Існує безліч форматів файлів, які можна додати як вкладення до файлу PDF. Нижче наведено кроки, щоб вставити файл у PDF за допомогою Aspose.PDF for C++:

  • Завантажте файл для прикріплення в SharedPtr .
  • Створіть об’єкт класу Document.
  • Вставте файл у документ.
  • Збережіть файл PDF.

У наведеному нижче прикладі коду показано, як додати вкладення до документа PDF у C++.

// Створіть текстовий файл
System::IO::File::WriteAllText(u"Attachment.txt", u"Some info");
SharedPtr<FileSpecification> fileSpecification = MakeObject<FileSpecification>(u"Attachment.txt", u"Sample text file");
// Додати вкладення до колекції вкладень документа
auto doc = MakeObject<Document>();
doc->get_EmbeddedFiles()->Add(fileSpecification);
// Додати сторінку до PDF
doc->get_Pages()->Add();	 
// Зберегти документ PDF
doc->Save(u"Created PDF.pdf");

Вихід

Створіть PDF на C++

Дізнайтеся більше про Aspose.PDF for C++

Ви можете дізнатися більше про Aspose.PDF for C++ з документації та вихідного коду приклади.

Дивись також