インターネットの力で、すべてがデジタル化され、ペーパーレスシステムが普及しました。デジタルドキュメント、つまりPDFは、自動生成および処理機能を提供することで生活を楽にするペーパーレスシステムの構成要素の1つです。ほとんどの企業は、レポート、領収書、請求書、およびその他のビジネスドキュメントを動的に生成するためにPDFドキュメント自動化を使用しています。したがって、この記事では、PDF自動化の機能をC++ベースのアプリケーションに統合し、C++を使用してPDFファイルを生成する方法を示します。
C++PDFライブラリ
PDFファイルの作成には、Aspose.PDF for C++APIを使用します。これはネイティブC++ライブラリであり、プログラムでPDFドキュメントを処理します。さまざまなPDF要素をサポートするインタラクティブなPDFドキュメントを作成できます。 Aspose.PDF for C++は、NuGetおよびAsposeのダウンロードセクションで入手できます。
C++でPDFファイルを作成する
まず、簡単なPDFファイルを作成し、最初のページに段落形式のテキストを追加します。従うべき手順は次のとおりです。
- Documentオブジェクトを作成します。
- ドキュメントのPageCollectionにページを追加します。
- ページの段落を取得します。
- TextFragmentオブジェクトを作成し、段落に追加します。
- PDFドキュメントを保存します。
次のコードサンプルは、C++でPDFドキュメントを作成する方法を示しています。
// ドキュメントを作成する
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");
出力
C++でTextBuilderを使用してPDFファイルを作成する
このセクションでは、TextBuilderクラスを使用して、ページにさまざまなテキストフラグメントと段落を追加する方法を示します。さらに、この例では、ページ上のテキストフラグメントの位置を設定する方法を学習します。この操作を実行する手順は次のとおりです。
- Documentオブジェクトを作成します。
- ドキュメントにページを追加します。
- TextBuilderオブジェクトを作成します。
- TextFragmentを作成し、そのテキストを追加します。
- TextFragmentの位置を設定します。
- TextBuilderを使用してTextFragmentを追加します。
- PDFドキュメントを保存します。
次のコードサンプルは、C++でTextBuilderを使用してPDFを作成する方法を示しています。
// ドキュメントオブジェクトの作成
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ファイルを作成する
Aspose.PDF for C++を使用して、PDFドキュメントに画像を作成して追加することもできます。この操作を実行する手順は次のとおりです。
- Documentオブジェクトを作成します。
- ドキュメントにページを追加します。
- 追加する画像を作成します。
- 画像をPDFファイルに追加します。
- PDFファイルを保存します。
次のコードサンプルは、C++で画像を作成してPDFドキュメントに追加する方法を示しています。
// ドキュメントオブジェクトの作成
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形式では、ドキュメントに添付ファイルを追加することもできます。 PDFファイルに添付ファイルとして追加できるさまざまなファイル形式があります。以下は、C++用のAspose.PDFを使用してPDFにファイルを埋め込む手順です。
- SharedPtrに添付するファイルをロードします。
- Documentクラスのオブジェクトを作成します。
- ファイルをドキュメントに埋め込みます。
- PDFファイルを保存します。
次のコードサンプルは、C++でPDFドキュメントに添付ファイルを追加する方法を示しています。
// テキストファイルを作成する
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 forC++の詳細
Aspose.PDF for C++の詳細については、ドキュメントとソースコード例を参照してください。