Você pode criar, editar ou manipular arquivos XPS facilmente. Além disso, você pode controlar o conteúdo e sua posição de acordo com suas necessidades. Você pode inserir uma imagem ou texto em arquivos XPS programaticamente usando a linguagem C++. Vamos explorar esse recurso em detalhes nos seguintes tópicos:
- Trabalhar com conteúdo de texto ou imagem em arquivos XPS - Instalação da API
- Adicionar texto no arquivo XPS usando C++
- Adicionar texto no arquivo XPS usando Unicode String em C++
- Inserir imagem no documento XPS usando C++
- Inserir imagem lado a lado no arquivo XPS usando C++
Trabalhar com conteúdo de texto ou imagem em arquivos XPS - Instalação da API
Você pode adicionar conteúdo de texto ou imagem em arquivos XPS em aplicativos C++. Você não precisa considerar detalhes menores sobre o formato de arquivo do documento, pois poucas chamadas de API podem fazer o trabalho de acordo com seus requisitos. A API Aspose.Page for C++ pode ser configurada facilmente baixando-a de New Releases ou com o comando de instalação NuGet abaixo:
PM> Install-Package Aspose.Page.Cpp
Adicionar texto no arquivo XPS usando C++
O texto pode ser usado no arquivo XPS para rotular algum desenho, imagem ou outro conteúdo. Da mesma forma, você também pode usar o texto como marca d’água para o arquivo. Você precisa seguir as etapas abaixo para adicionar ou inserir texto em arquivos XPS:
- Crie um novo Documento XPS
- Criar um pincel para adicionar texto
- Adicionar glifo ao documento
- Salvar documento XPS de saída
O código abaixo mostra como adicionar texto no arquivo XPS usando C++:
// Criar novo documento XPS
auto doc = System::MakeObject<XpsDocument>();
//Criar um pincel
System::SharedPtr<XpsSolidColorBrush> textFill = doc->CreateSolidColorBrush(System::Drawing::Color::get_Black());
//Adicionar glifo ao documento
System::SharedPtr<XpsGlyphs> glyphs = doc->AddGlyphs(u"Arial", 12.0f, System::Drawing::FontStyle::Regular, 300.f, 450.f, u"Hello World!");
glyphs->set_Fill(textFill);
// Salvar documento XPS resultante
doc->Save(RunExamples::outDir() + u"AddText_out.xps");
Adicionar texto no arquivo XPS usando Unicode String em C++
Aprendemos a adicionar uma string de texto simples a um arquivo XPS. Vamos prosseguir e considerar um cenário em que você precisa adicionar uma string Unicode nos arquivos XPS. Você precisa seguir as etapas abaixo para adicionar texto no arquivo XPS, com base na string Unicode:
- Criar novo documento XPS
- Adicionar texto Unicode
- Salvar documento XPS de saída
O código a seguir é baseado nessas etapas, que mostra como adicionar texto no arquivo XPS usando a string Unicode na linguagem C++:
// Criar novo documento XPS
auto doc = System::MakeObject<XpsDocument>();
// Adicione texto
System::SharedPtr<XpsSolidColorBrush> textFill = doc->CreateSolidColorBrush(System::Drawing::Color::get_Black());
System::SharedPtr<XpsGlyphs> glyphs = doc->AddGlyphs(u"Arial", 20.0f, System::Drawing::FontStyle::Regular, 400.f, 200.f, u"++C. rof SPX.esopsA");
glyphs->set_BidiLevel(1);
glyphs->set_Fill(textFill);
// Salvar documento XPS resultante
doc->Save(RunExamples::outDir() + u"AddText_unicode.xps");
Inserir imagem no documento XPS usando C++
As imagens podem conter muitas informações visuais, portanto, a API oferece suporte à inserção de uma imagem no arquivo XPS em seus aplicativos C++. Aspose.Page for C++ API permite inserir imagens ou imagens em arquivos XPS com as etapas abaixo:
- Criar um novo documento XPS
- Carregar imagem de entrada
- Crie uma matriz e ImageBrush
- Salvar arquivo XPS de saída
O exemplo de código abaixo mostra como inserir imagem no documento XPS com C++:
// Criar novo documento XPS
System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
// Adicionar imagem
System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 30,20 l 258.24,0 0,56.64 -258.24,0 Z"));
// A criação de uma matriz é opcional, pode ser usada para o posicionamento adequado
path->set_RenderTransform(doc->CreateMatrix(0.7f, 0.f, 0.f, 0.7f, 0.f, 20.f));
//Criar pincel de imagem
path->set_Fill(doc->CreateImageBrush(RunExamples::dataDir() + u"QL_logo_color.tif", System::Drawing::RectangleF(0.f, 0.f, 258.24f, 56.64f), System::Drawing::RectangleF(50.f, 20.f, 193.68f, 42.48f)));
// Salvar documento XPS resultante
doc->Save(RunExamples::outDir() + u"AddImage_out.xps");
Inserir imagem lado a lado no arquivo XPS usando C++
Aprendemos a primeira etapa de adicionar ou inserir imagem em um arquivo XPS, vamos prosseguir com o exemplo relacionado de inserção de imagem lado a lado no documento XPS. Abaixo estão as etapas para adicionar imagem lado a lado no arquivo XPS:
- Criar novo documento XPS
- Adicionar ImageBrush retângulo preenchido
- Adicionar imagem lado a lado
- Salvar documento XPS resultante
O trecho de código a seguir demonstra como adicionar imagem lado a lado no arquivo XPS usando C++:
// Criar novo documento XPS
System::SharedPtr<XpsDocument> doc = System::MakeObject<XpsDocument>();
// Imagem do bloco
// Retângulo preenchido com ImageBrush no canto superior direito abaixo
System::SharedPtr<XpsPath> path = doc->AddPath(doc->CreatePathGeometry(u"M 10,160 L 228,160 228,305 10,305"));
path->set_Fill(doc->CreateImageBrush(RunExamples::dataDir() + u"R08LN_NN.jpg", System::Drawing::RectangleF(0.f, 0.f, 128.f, 96.f), System::Drawing::RectangleF(0.f, 0.f, 64.f, 48.f)));
(System::DynamicCast<Aspose::Page::Xps::XpsModel::XpsImageBrush>(path->get_Fill()))->set_TileMode(Aspose::Page::Xps::XpsModel::XpsTileMode::Tile);
path->get_Fill()->set_Opacity(0.5f);
// Salvar documento XPS resultante
doc->Save(RunExamples::outDir() + u"AddTiledImage_out.xps");
Conclusão
Neste artigo, você aprendeu como inserir ou adicionar algum texto ou imagem em arquivos XPS usando a linguagem C++. Esse recurso pode ser útil em cenários como quando você precisa adicionar uma marca d’água em documentos XPS ou adicionar algum carimbo conforme suas necessidades. Da mesma forma, muitos outros recursos interessantes são suportados para o formato de arquivo XPS. Você pode saber mais visitando a Documentação da API, ou também pode discutir conosco no Fórum de suporte gratuito. Estamos ansiosos para entrar em contato com você!