С появлением Интернета все стало цифровым, а безбумажные системы стали популярными. Цифровые документы, т.е. PDF, являются одними из строительных блоков безбумажных систем, которые упростили жизнь, предоставив функции автоматического создания и обработки. Большинство предприятий используют автоматизацию документов PDF для динамического создания отчетов, квитанций, счетов и других деловых документов. Поэтому в этой статье я покажу, как интегрировать функции автоматизации PDF в приложения на основе C++ и создавать PDF-файлы с помощью C++.

PDF-библиотека С++

Для создания PDF-файлов мы будем использовать Aspose.PDF for C++ API, который представляет собой собственную библиотеку C++ для программной работы с PDF-документами. Он позволяет создавать интерактивные документы PDF с поддержкой различных элементов PDF. Aspose.PDF для 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));
// Создать текстовый фрагмент
auto text = MakeObject<TextFragment>(u"Hello world!");
text->set_Position(MakeObject<Position>(100, 800));
// Добавить фрагмент текста
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);
// Создать текстовый абзац
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 для 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");

Выход

PDF-библиотека С++

Создайте файл PDF с вложениями на C++

Формат PDF также позволяет добавлять к документу вложения. Существует множество форматов файлов, которые можно добавить в виде вложений в файл PDF. Ниже приведены шаги для встраивания файла в PDF с помощью Aspose.PDF для 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 на С++

Узнайте больше об Aspose.PDF для C++

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

Смотрите также