Adicionar Carimbos de Texto em Arquivo PDF

Adicionar Carimbo de Texto com C++

Você pode usar a classe TextStamp para adicionar um carimbo de texto em um arquivo PDF. A classe TextStamp fornece as propriedades necessárias para criar um carimbo baseado em texto, como tamanho da fonte, estilo da fonte e cor da fonte, etc. Para adicionar um carimbo de texto, você precisa criar um objeto Document e um objeto TextStamp usando as propriedades necessárias. Depois disso, você pode chamar o método AddStamp da Page para adicionar o carimbo no PDF. O trecho de código a seguir mostra como adicionar um carimbo de texto no arquivo PDF.

void AddTextStampToPDFFile() {

    String _dataDir("C:\\Samples\\");

    // String para nome do arquivo de entrada
    String inputFileName("AddTextStamp.pdf");
    String outputFileName("AddTextStamp_out.pdf");

    // Abrir documento
    auto document = MakeObject<Document>(_dataDir + inputFileName);

    // Criar carimbo de texto
    auto textStamp =MakeObject<TextStamp>(u"Sample Stamp");

    // Definir se o carimbo é de fundo
    textStamp->set_Background(true);
    // Definir origem
    textStamp->set_XIndent(100);
    textStamp->set_YIndent(100);
    // Rotacionar carimbo
    textStamp->set_Rotate(Rotation::on90);

    // Definir propriedades do texto
    textStamp->get_TextState()->set_Font(FontRepository::FindFont(u"Arial"));
    textStamp->get_TextState()->set_FontSize(14.0F);
    textStamp->get_TextState()->set_FontStyle(FontStyles::Bold);
    textStamp->get_TextState()->set_FontStyle(FontStyles::Italic);
    textStamp->get_TextState()->set_ForegroundColor(Color::get_Green());
    // Adicionar carimbo a uma página específica
    document->get_Pages()->idx_get(1)->AddStamp(textStamp);

    // Salvar documento de saída
    document->Save(_dataDir + outputFileName);
}

Definir alinhamento para o objeto TextStamp

Adicionar marcas d’água a documentos PDF é um dos recursos frequentemente demandados e o Aspose.PDF para C++ é totalmente capaz de adicionar marcas d’água de imagem, bem como de texto. Temos uma classe chamada TextStamp que fornece o recurso de adicionar marcas de texto sobre o arquivo PDF. Recentemente, houve a necessidade de suportar o recurso de especificar o alinhamento do texto ao usar o objeto TextStamp. Portanto, para atender a esse requisito, introduzimos a propriedade TextAlignment na classe TextStamp. Usando esta propriedade, podemos especificar o alinhamento horizontal do texto.

Os seguintes trechos de código mostram um exemplo de como carregar um documento PDF existente e adicionar um TextStamp sobre ele.

void DefineAlignmentTextStamp() {

    String _dataDir("C:\\Samples\\");

    // String para nome do arquivo de entrada
    String inputFileName("AddTextStamp.pdf");
    String outputFileName("AddTextStamp_out.pdf");

    // Abrir documento
    auto document = MakeObject<Document>(_dataDir + inputFileName);

    // instanciar objeto FormattedText com string de exemplo
    auto text = MakeObject<Aspose::Pdf::Facades::FormattedText>("This");

    // adicionar nova linha de texto ao FormattedText
    text->AddNewLineText(u"is sample");
    text->AddNewLineText(u"Center Aligned");
    text->AddNewLineText(u"TextStamp");
    text->AddNewLineText(u"Object");

    // criar objeto TextStamp usando FormattedText
    auto stamp = MakeObject<TextStamp>(text);
    // especificar o alinhamento horizontal da marca de texto como centralizado
    stamp->set_HorizontalAlignment(HorizontalAlignment::Center);
    // especificar o alinhamento vertical da marca de texto como centralizado
    stamp->set_VerticalAlignment(VerticalAlignment::Center);
    // especificar o alinhamento horizontal do texto do TextStamp como centralizado
    stamp->set_TextAlignment(HorizontalAlignment::Center);
    // definir margem superior para o objeto de marca
    stamp->set_TopMargin(20);
    // adicionar marca a todas as páginas do arquivo PDF
    document->get_Pages()->idx_get(1)->AddStamp(stamp);

    // salvar documento de saída
    document->Save(_dataDir + outputFileName);
}

Preencher Texto de Contorno como Carimbo em Arquivo PDF

Implementamos a configuração do modo de renderização para cenários de adição e edição de texto. Para renderizar texto de contorno, crie um objeto TextState e defina RenderingMode para TextRenderingMode.StrokeText e também selecione a cor para a propriedade StrokingColor. Depois, vincule o TextState ao carimbo usando o método BindTextState().

O seguinte trecho de código demonstra a adição de Texto de Contorno de Preenchimento:

void FillStrokeTextAsStampInPDFFile() {

    String _dataDir("C:\\Samples\\");

    // String para o nome do arquivo de entrada
    String inputFileName("AddTextStamp.pdf");
    String outputFileName("AddTextStamp_out.pdf");

    // Criar objeto TextState para transferir propriedades avançadas
    auto ts = MakeObject<TextState>();

    // Definir cor para o contorno
    ts->set_StrokingColor(Color::get_Gray());

    // Definir modo de renderização de texto
    ts->set_RenderingMode(TextRenderingMode::StrokeText);

    // Carregar um documento PDF de entrada
    auto fileStamp = MakeObject<Aspose::Pdf::Facades::PdfFileStamp>(MakeObject<Document>(_dataDir + inputFileName));

    auto stamp = MakeObject<Aspose::Pdf::Facades::Stamp>();

    auto formattedText = MakeObject<Aspose::Pdf::Facades::FormattedText>(u"PAID IN FULL", Color::get_Gray(), Aspose::Pdf::Facades::EncodingType::Winansi, true, 78);
    stamp->BindLogo(formattedText);

    // Vincular TextState
    stamp->BindTextState(ts);

    // Definir origem X,Y
    stamp->SetOrigin(100, 100);
    stamp->set_Opacity(5);
    stamp->set_BlendingSpace(Aspose::Pdf::Facades::BlendingColorSpace::DeviceRGB);
    stamp->set_Rotation(45.0F);
    stamp->set_IsBackground(false);

    // Adicionar Carimbo
    fileStamp->AddStamp(stamp);
    fileStamp->Save(_dataDir + outputFileName);
    fileStamp->Close();
}