إضافة ختم نصي في ملف PDF

إضافة ختم نصي باستخدام C++

يمكنك استخدام فئة TextStamp لإضافة ختم نصي في ملف PDF. توفر فئة TextStamp الخصائص اللازمة لإنشاء ختم نصي مثل حجم الخط، ونمط الخط، ولون الخط إلخ. من أجل إضافة ختم نصي، تحتاج إلى إنشاء كائن Document وكائن TextStamp باستخدام الخصائص المطلوبة. بعد ذلك، يمكنك استدعاء طريقة 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 لـ C++ قادر تمامًا على إضافة علامات مائية من الصور وكذلك النصوص. لدينا فئة تدعى TextStamp التي توفر ميزة إضافة الأختام النصية على ملف PDF. مؤخرًا كان هناك طلب لدعم ميزة تحديد محاذاة النص عند استخدام كائن TextStamp. لذا من أجل تلبية هذا الطلب، قمنا بتقديم خاصية TextAlignment في فئة TextStamp. باستخدام هذه الخاصية، يمكننا تحديد المحاذاة الأفقية للنص.

تُظهر الشيفرات البرمجية التالية مثالًا عن كيفية تحميل مستند 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");

    // إنشاء كائن TextStamp باستخدام FormattedText
    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. لاحقًا، قم بربط TextState بالختم باستخدام طريقة BindTextState().

يظهر مقتطف الكود التالي إضافة نص ملء الحدود:

void FillStrokeTextAsStampInPDFFile() {

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

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

    // Create TextState object to transfer advanced properties
    auto ts = MakeObject<TextState>();

    // Set color for stroke
    ts->set_StrokingColor(Color::get_Gray());

    // Set text rendering mode
    ts->set_RenderingMode(TextRenderingMode::StrokeText);

    // Load an input PDF document
    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);

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

    // Set X,Y origin
    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);

    // Add Stamp
    fileStamp->AddStamp(stamp);
    fileStamp->Save(_dataDir + outputFileName);
    fileStamp->Close();
}