С появлением Интернета все стало цифровым, а безбумажные системы стали популярными. Цифровые документы, т.е. 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 с помощью 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");
Выход
Создайте файл 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 с вложениями на 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");
Выход
Узнайте больше об Aspose.PDF для C++
Вы можете узнать больше об Aspose.PDF для C++ из документации и исходного кода примеров.