PDFファイルにテキストスタンプを追加

C++でテキストスタンプを追加

TextStampクラスを使用してPDFファイルにテキストスタンプを追加できます。TextStampクラスは、フォントサイズ、フォントスタイル、フォントカラーなど、テキストベースのスタンプを作成するために必要なプロパティを提供します。テキストスタンプを追加するには、Documentオブジェクトと必要なプロパティを使用してTextStampオブジェクトを作成する必要があります。その後、PageのAddStampメソッドを呼び出して、PDFにスタンプを追加できます。次のコードスニペットは、PDFファイルにテキストスタンプを追加する方法を示しています。

void AddTextStampToPDFFile() {

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

    // String for input file name
    String inputFileName("AddTextStamp.pdf");
    String outputFileName("AddTextStamp_out.pdf");

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

    // Create text stamp
    auto textStamp =MakeObject<TextStamp>(u"Sample Stamp");

    // Set whether stamp is background
    textStamp->set_Background(true);
    // Set origin
    textStamp->set_XIndent(100);
    textStamp->set_YIndent(100);
    // Rotate stamp
    textStamp->set_Rotate(Rotation::on90);

    // Set text properties
    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());
    // Add stamp to particular page
    document->get_Pages()->idx_get(1)->AddStamp(textStamp);

    // Save output document
    document->Save(_dataDir + outputFileName);
}

TextStampオブジェクトの配置を定義する

PDFドキュメントに透かしを追加することは、頻繁に要求される機能の一つであり、Aspose.PDF for C++は画像やテキストの透かしを追加することが完全に可能です。TextStampという名前のクラスがあり、PDFファイルにテキストスタンプを追加する機能を提供します。最近、TextStampオブジェクトを使用する際にテキストの配置を指定する機能をサポートする必要がありました。この要件を満たすために、TextStampクラスにTextAlignmentプロパティを導入しました。このプロパティを使用することで、水平テキスト配置を指定できます。

次のコードスニペットは、既存のPDFドキュメントを読み込み、それにTextStampを追加する方法の例を示しています。

void DefineAlignmentTextStamp() {

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

    // 入力ファイル名の文字列
    String inputFileName("AddTextStamp.pdf");
    String outputFileName("AddTextStamp_out.pdf");

    // ドキュメントを開く
    auto document = MakeObject<Document>(_dataDir + inputFileName);

    // サンプル文字列でFormattedTextオブジェクトをインスタンス化
    auto text = MakeObject<Aspose::Pdf::Facades::FormattedText>("This");

    // FormattedTextに新しいテキスト行を追加
    text->AddNewLineText(u"is sample");
    text->AddNewLineText(u"Center Aligned");
    text->AddNewLineText(u"TextStamp");
    text->AddNewLineText(u"Object");

    // FormattedTextを使用してTextStampオブジェクトを作成
    auto stamp = MakeObject<TextStamp>(text);
    // テキストスタンプの水平配置を中央揃えに指定
    stamp->set_HorizontalAlignment(HorizontalAlignment::Center);
    // テキストスタンプの垂直配置を中央揃えに指定
    stamp->set_VerticalAlignment(VerticalAlignment::Center);
    // TextStampのテキスト水平配置を中央揃えに指定
    stamp->set_TextAlignment(HorizontalAlignment::Center);
    // スタンプオブジェクトの上部余白を設定
    stamp->set_TopMargin(20);
    // PDFファイルのすべてのページにスタンプを追加
    document->get_Pages()->idx_get(1)->AddStamp(stamp);

    // 出力ドキュメントを保存
    document->Save(_dataDir + outputFileName);
}

PDFファイルにスタンプとして塗りつぶし輪郭テキストを追加する

テキストの追加と編集のシナリオに対してレンダリングモードを設定する機能を実装しました。輪郭テキストをレンダリングするには、TextStateオブジェクトを作成し、RenderingModeをTextRenderingMode.StrokeTextに設定し、さらにStrokingColorプロパティの色を選択します。その後、BindTextState()メソッドを使用してスタンプにTextStateをバインドします。

以下のコードスニペットは、塗りつぶし輪郭テキストを追加する方法を示しています。

void FillStrokeTextAsStampInPDFFile() {

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

    // 入力ファイル名の文字列
    String inputFileName("AddTextStamp.pdf");
    String outputFileName("AddTextStamp_out.pdf");

    // 高度なプロパティを転送するためのTextStateオブジェクトを作成
    auto ts = MakeObject<TextState>();

    // 輪郭の色を設定
    ts->set_StrokingColor(Color::get_Gray());

    // テキストレンダリングモードを設定
    ts->set_RenderingMode(TextRenderingMode::StrokeText);

    // 入力PDFドキュメントをロード
    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);

    // TextStateをバインド
    stamp->BindTextState(ts);

    // 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);

    // スタンプを追加
    fileStamp->AddStamp(stamp);
    fileStamp->Save(_dataDir + outputFileName);
    fileStamp->Close();
}