تنسيق النص داخل PDF باستخدام C++
كيفية إضافة مسافة بادئة للسطر إلى PDF
لإضافة مسافة بادئة للسطر إلى PDF، يستخدم Aspose.PDF لـ C++ خاصية SubsequentLinesIndent في فئة TextFormattingOptions وأيضًا يساعد مجموعات TextFragment وParagraphs.
الرجاء استخدام مقطع الشفرة التالي لاستخدام الخاصية:
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;
void AddLineIndent() {
String _dataDir("C:\\Samples\\");
// String for output file name
String outputFileName("SubsequentIndent_out.pdf");
// Create new document object
auto document = MakeObject<Document>();
auto page = document->get_Pages()->Add();
auto text = MakeObject<TextFragment>("قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول. قفز الثعلب البني السريع فوق الكلب الكسول.");
// Initilize TextFormattingOptions for the text fragment and specify SubsequentLinesIndent value
text->get_TextState()->set_FormattingOptions(MakeObject<Aspose::Pdf::Text::TextFormattingOptions>());
text->get_TextState()->get_FormattingOptions()->set_SubsequentLinesIndent(20);
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"السطر2");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"السطر3");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"السطر4");
page->get_Paragraphs()->Add(text);
text = MakeObject<Aspose::Pdf::Text::TextFragment>(u"السطر5");
page->get_Paragraphs()->Add(text);
document->Save(_dataDir + outputFileName);
}
كيفية إضافة حدود للنص
يوضح مقطع الشيفرة التالي كيفية إضافة حدود لنص باستخدام TextBuilder وتعيين خاصية DrawTextRectangleBorder لـ TextState
void AddTextBorder() {
String _dataDir("C:\\Samples\\");
// String for output file name
String outputFileName("PDFWithTextBorder_out.pdf");
// Create new document object
auto document = MakeObject<Document>();
// Get particular page
auto page = document->get_Pages()->Add();
// Create text fragment
auto textFragment = MakeObject<TextFragment>("main text");
textFragment->set_Position(MakeObject<Position>(100, 600));
// Set text properties
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Set StrokingColor property for drawing border (stroking) around text
// rectangle
textFragment->get_TextState()->set_StrokingColor(Color::get_DarkRed());
// Set DrawTextRectangleBorder property value to true
textFragment->get_TextState()->set_DrawTextRectangleBorder(true);
auto tb = MakeObject<TextBuilder>(page);
tb->AppendText(textFragment);
// Save the document
document->Save(_dataDir + outputFileName);
}
كيفية إضافة نص مسطر
يظهر لك مقتطف الشيفرة التالي كيفية إضافة نص مسطر أثناء إنشاء ملف PDF جديد.
void AddUnderlineText() {
String _dataDir("C:\\Samples\\");
// String for output file name
String outputFileName("AddUnderlineText_out.pdf");
// Create new document object
auto document = MakeObject<Document>();
// Get particular page
auto page = document->get_Pages()->Add();
// TextFragment with sample text
auto fragment = MakeObject<TextFragment>("نص مع زخرفة المسطرة");
// Set the font for TextFragment
fragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
fragment->get_TextState()->set_FontSize(10);
// Set the formatting of text as Underline
fragment->get_TextState()->set_Underline(true);
// Specify the position where TextFragment needs to be placed
fragment->set_Position(MakeObject<Position>(10, 800));
auto tb = MakeObject<TextBuilder>(page);
// Append TextFragment to PDF file
tb->AppendText(fragment);
// Save resulting PDF document.
document->Save(_dataDir + outputFileName);
}
كيفية إضافة حدود حول النص المضاف
لديك التحكم في مظهر النص الذي تضيفه. يوضح المثال أدناه كيفية إضافة حدود حول قطعة من النص الذي قمت بإضافته عن طريق رسم مستطيل حوله. اكتشف المزيد عن فئة PdfContentEditor.
void AddBorderAroundAddedText() {
String _dataDir("C:\\Samples\\");
// String for input file name
String inputFileName("sample.pdf");
// String for output file name
String outputFileName("AddingBorderAroundAddedText_out.pdf");
auto editor = MakeObject<Aspose::Pdf::Facades::PdfContentEditor>();
editor->BindPdf(_dataDir + inputFileName);
auto lineInfo = MakeObject<Aspose::Pdf::Facades::LineInfo>();
lineInfo->set_LineWidth(2);
lineInfo->set_VerticeCoordinate(MakeArray<float>({ 0, 0, 100, 100, 50, 100 }));
lineInfo->set_Visibility(true);
auto rect = MakeObject<System::Drawing::Rectangle>(0, 0, 0, 0);
editor->CreatePolygon(lineInfo, 1, System::Drawing::Rectangle(0, 0, 0, 0), String::Empty);
// Save resulting PDF document.
editor->Save(_dataDir + outputFileName);
}
كيفية إضافة تغذية سطر جديد
لإضافة نص مع تغذية سطر جديد، يرجى استخدام TextFragment مع TextParagraph.
يوضح لك مقتطف الشيفرة التالي كيفية إضافة تغذية سطر جديد في ملف PDF الخاص بك:
void AddNewLineFeed() {
String _dataDir("C:\\Samples\\");
// String for output file name
String outputFileName("AddNewLineFeed_out.pdf");
// Create new document object
auto document = MakeObject<Document>();
// Get particular page
auto page = document->get_Pages()->Add();
// Initialize new TextFragment with text containing required newline markers
auto textFragment = MakeObject<TextFragment>("Applicant Name: \r\n Joe Smoe");
// Set text fragment properties if necessary
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Create TextParagraph object
auto par = MakeObject<TextParagraph>();
// Add new TextFragment to paragraph
par->AppendLine(textFragment);
// Set paragraph position
par->set_Position(MakeObject<Position>(100, 600));
// Create TextBuilder object
auto textBuilder = new TextBuilder(page);
// Add the TextParagraph using TextBuilder
textBuilder->AppendParagraph(par);
// Save resulting PDF document.
document->Save(_dataDir + outputFileName);
}
كيفية إضافة نص مشطوب
يمكنك استخدام فئة TextState لضبط تنسيق النص مثل العريض والمائل والتسطير، وأيضًا، توفر API إمكانيات لتحديد تنسيق النص كالشطب.
يرجى محاولة استخدام مقتطف الشيفرة التالي لإضافة TextFragment مع تنسيق الشطب.
void AddStrikeOutText() {
String _dataDir("C:\\Samples\\");
// String for output file name
String outputFileName("AddStrikeOutText_out.pdf");
// Open document
auto document = MakeObject<Document>();
// Get particular page
auto page = document->get_Pages()->Add();
// Create text fragment
auto textFragment = MakeObject<TextFragment>("main text");
textFragment->set_Position(MakeObject<Position>(100, 600));
// Set text properties
textFragment->get_TextState()->set_FontSize(12);
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"DejaVu Serif"));
textFragment->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment->get_TextState()->set_ForegroundColor(Color::get_Red());
// Set StrikeOut property
textFragment->get_TextState()->set_StrikeOut(true);
// Mark text as Bold
textFragment->get_TextState()->set_FontStyle(FontStyles::Bold);
// Create TextBuilder object
auto textBuilder = MakeObject<TextBuilder>(page);
// Append the text fragment to the PDF page
textBuilder->AppendText(textFragment);
// Save resulting PDF document.
document->Save(_dataDir + outputFileName);
}
تطبيق تظليل التدرج على النص
تم تحسين فئة Aspose.Pdf.Color بشكل أكبر عن طريق إدخال خاصية جديدة لـ PatternColorSpace، والتي يمكن استخدامها لتحديد ألوان التظليل للنص. تضيف هذه الخاصية الجديدة تظليل التدرج المختلف للنص مثل التظليل المحوري، التظليل الشعاعي (النوع 3) كما هو موضح في مقطع الكود التالي:
void ApplyGradientShading() {
String _dataDir("C:\\Samples\\");
// String for input file name
String inputFileName("sample.pdf");
// String for output file name
String outputFileName("ApplyGradientShading_out.pdf");
// Open document
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto absorber = MakeObject<TextFragmentAbsorber>("always print correctly");
document->get_Pages()->Accept(absorber);
auto textFragment = absorber->get_TextFragments()->idx_get(1);
auto foregroundColor = MakeObject<Aspose::Pdf::Color>();
foregroundColor->set_PatternColorSpace(MakeObject<Aspose::Pdf::Drawing::GradientAxialShading>(Color::get_Red(), Color::get_Blue()));
// Create new color with pattern colorspace
textFragment->get_TextState()->set_ForegroundColor(foregroundColor);
textFragment->get_TextState()->set_Underline(true);
document->Save(_dataDir + outputFileName);
}
لتطبيق تدرج شعاعي، يمكنك تعيين الخاصية ‘PatternColorSpace’ لتكون مساوية لـ ‘Aspose.Pdf.Drawing.GradientRadialShading(startingColor, endingColor)’ في مقتطف الكود أعلاه.
كيفية محاذاة النص مع محتوى عائم
يدعم Aspose.PDF تعيين محاذاة النص للمحتويات داخل عنصر صندوق عائم. يمكن استخدام خصائص المحاذاة لـ Aspose.Pdf.FloatingBox لتحقيق ذلك كما هو موضح في عينة الكود التالية.
void ApplyGradientShadingRadial() {
String _dataDir("C:\\Samples\\");
// String for input file name
String inputFileName("sample.pdf");
// String for output file name
String outputFileName("ApplyGradientShadingRadial_out.pdf");
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto absorber = MakeObject<TextFragmentAbsorber>(u"always print correctly");
document->get_Pages()->Accept(absorber);
auto textFragment = absorber->get_TextFragments()->idx_get(1);
auto foregroundColor = MakeObject<Aspose::Pdf::Color>();
foregroundColor->set_PatternColorSpace(MakeObject<Aspose::Pdf::Drawing::GradientRadialShading>(Color::get_Red(), Color::get_Blue()));
// Create new color with pattern colorspace
textFragment->get_TextState()->set_ForegroundColor(foregroundColor);
textFragment->get_TextState()->set_Underline(true);
document->Save(_dataDir + outputFileName);
}