Com o poder da Internet, tudo se tornou digital e os sistemas sem papel tornaram-se populares. Os documentos digitais, ou seja, PDF, estão entre os blocos de construção dos sistemas sem papel que facilitaram a vida ao fornecer recursos automatizados de geração e processamento. A maioria das empresas usa a automação de documentos PDF para gerar relatórios, recibos, faturas e outros documentos comerciais dinamicamente. Portanto, neste artigo, demonstrarei como integrar os recursos de automação de PDF em aplicativos baseados em C++ e gerar arquivos PDF usando C++.
Biblioteca de PDF C++
Para criar arquivos PDF, usaremos a API Aspose.PDF for C++ que é uma biblioteca C++ nativa para trabalhar com documentos PDF programaticamente. Ele permite que você crie documentos PDF interativos com o suporte de uma variedade de elementos PDF. O Aspose.PDF para C++ está disponível no NuGet, bem como na seção Downloads do Aspose.
Criar um arquivo PDF em C++
Em primeiro lugar, criaremos um arquivo PDF simples e adicionaremos algum texto à primeira página na forma de um parágrafo. Seguem os passos a serem seguidos:
- Crie um objeto Documento.
- Adicione uma página a PageCollection do Documento.
- Obter o parágrafo da página.
- Crie um objeto TextFragment e adicione-o ao parágrafo.
- Salve o documento PDF.
O exemplo de código a seguir mostra como criar um documento PDF em C++.
// Criar documento
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
// A numeração de páginas começa em 1
auto page = pages->idx_get(1);
auto paragraps = page->get_Paragraphs();
// Criar fragmento de texto
auto text = MakeObject<TextFragment>(u"PDF API for C++");
auto ts = text->get_TextState();
// Definir estado do texto
ts->set_FontSize(16);
ts->set_FontStyle(FontStyles::Italic);
// Adicionar ao parágrafo
paragraps->Add(text);
// Adicionar texto ao parágrafo
paragraps->Add(MakeObject<TextFragment>(u"This example shows how to create a PDF with text using Aspose.PDF for C++."));
// Salvar arquivo PDF
doc->Save(u"Example1.pdf");
Resultado
Criar um arquivo PDF usando TextBuilder em C++
Nesta seção, mostrarei como usar a classe TextBuilder para anexar vários fragmentos de texto e parágrafos na página. Além disso, neste exemplo, você aprenderá como definir a posição do fragmento de texto na página. A seguir estão os passos para realizar esta operação:
- Crie um objeto Documento.
- Adicione uma página ao documento.
- Crie um objeto TextBuilder.
- Crie um TextFragment e adicione seu texto.
- Defina a posição do TextFragment.
- Anexe TextFragment usando o TextBuilder.
- Salvar documento PDF.
O exemplo de código a seguir mostra como criar um PDF usando TextBuilder em C++.
// Criar objeto Documento
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
// Criar TextBuilder
auto tb = MakeObject<TextBuilder>(pages->idx_get(1));
// Criar fragmento de texto
auto text = MakeObject<TextFragment>(u"Hello world!");
text->set_Position(MakeObject<Position>(100, 800));
// Anexar fragmento de texto
tb->AppendText(text);
// Criar outro TextFragment
text = MakeObject<TextFragment>(u"This example is created by Aspose.Pdf for C++.");
text->set_Position(MakeObject<Position>(150, 750));
tb->AppendText(text);
// Criar outro 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);
// Criar textoParagraph
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);
// Salvar documento PDF
doc->Save(u"Created PDF.pdf");
Resultado
Criar um arquivo PDF com imagem em C++
Você também pode criar e adicionar imagens aos documentos PDF usando o Aspose.PDF para C++. A seguir estão os passos para realizar esta operação:
- Crie um objeto Documento.
- Adicione uma página ao documento.
- Crie uma imagem a ser adicionada.
- Adicione a imagem ao arquivo PDF.
- Salvar arquivo PDF.
O exemplo de código a seguir mostra como criar e adicionar uma imagem a um documento PDF em C++.
// Criar objeto Documento
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
auto page = pages->idx_get(1);
// Crie uma imagem
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());
// Criar retângulo
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);
// Adicionar imagem ao PDF
stream->Seek(0, System::IO::SeekOrigin::Begin);
page->AddImage(stream, rect);
// Salvar documento PDF
doc->Save(u"Created PDF.pdf");
Resultado
Criar um arquivo PDF com anexos em C++
O formato PDF também permite adicionar anexos ao documento. Há uma variedade de formatos de arquivo que podem ser adicionados como anexo ao arquivo PDF. A seguir estão as etapas para incorporar um arquivo em PDF usando Aspose.PDF para C++:
- Carregar um arquivo a ser anexado no SharedPtr .
- Crie um objeto da classe Document.
- Incorpore o arquivo ao Documento.
- Salve o arquivo PDF.
O exemplo de código a seguir mostra como adicionar um anexo ao documento PDF em C++.
// Criar um arquivo de texto
System::IO::File::WriteAllText(u"Attachment.txt", u"Some info");
SharedPtr<FileSpecification> fileSpecification = MakeObject<FileSpecification>(u"Attachment.txt", u"Sample text file");
// Adicionar anexo à coleção de anexos do documento
auto doc = MakeObject<Document>();
doc->get_EmbeddedFiles()->Add(fileSpecification);
// Adicionar uma página ao PDF
doc->get_Pages()->Add();
// Salvar documento PDF
doc->Save(u"Created PDF.pdf");
Resultado
Saiba mais sobre o Aspose.PDF para C++
Você pode aprender mais sobre o Aspose.PDF para C++ na documentação e no código-fonte exemplos.