Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
تعمل مقتطفات الشيفرة التالية أيضًا مع مكتبة Aspose.PDF.Drawing .
تسمح لك فئة TextFragmentAbsorber بالعثور على نص يتطابق مع عبارة معينة، من جميع صفحات مستند PDF. للبحث عن نص من المستند بالكامل، تحتاج إلى استدعاء طريقة Accept لمجموعة الصفحات. تأخذ طريقة Accept كائن TextFragmentAbsorber كمعامل، والذي يعيد مجموعة من كائنات TextFragment. يمكنك التكرار عبر جميع الأجزاء والحصول على خصائصها مثل النص، الموضع (XIndent، YIndent)، اسم الخط، حجم الخط، قابلية الوصول، مضمّن، مجموعة فرعية، لون المقدمة، إلخ.
تظهر لك مقتطفات الشيفرة التالية كيفية البحث عن نص من جميع الصفحات.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchAndGetTextFromAll.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("text");
// Accept the absorber for all the pages
document.Pages.Accept(textFragmentAbsorber);
// Get the extracted text fragments
var textFragmentCollection = textFragmentAbsorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in textFragmentCollection)
{
Console.WriteLine("Text : {0} ", textFragment.Text);
Console.WriteLine("Position : {0} ", textFragment.Position);
Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}
}
}
في حالة الحاجة إلى البحث عن نص داخل أي صفحة PDF معينة، يرجى تحديد رقم الصفحة من مجموعة الصفحات الخاصة بكائن Document واستدعاء طريقة Accept ضد تلك الصفحة (كما هو موضح في سطر الشيفرة أدناه).
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchAndGetTextFromAll.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("text");
// Accept the absorber for a particular page
document.Pages[2].Accept(textFragmentAbsorber);
}
}
يمكن لمكتبة C# تمرير عبارة واحدة فقط إلى TextFragmentAbsorber، ولكن منذ إصدار Aspose.PDF 24.2، تم تنفيذ خوارزمية جديدة للبحث عن قائمة البحث.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// Create resular expressions
var regexes = new Regex[]
{
new Regex(@"(?s)document\s+(?:(?:no\(?s?\)?\.?)|(?:number(?:\(?s\)?)?))\s+(?:(?:[\w-]*\d[\w-]*)+(?:[,;\s]|and)*)", RegexOptions.IgnoreCase),
new Regex(@"[\s\r\n]+Tract[\s\r\n]+of:? ", RegexOptions.IgnoreCase),
new Regex(@"vested[\s\r\n]+in", RegexOptions.IgnoreCase),
new Regex("Vested in:", RegexOptions.IgnoreCase),
new Regex(@"file.?[\s\r\n]+(?:nos?|numbers?|#s?|nums?).?[\s\r\n]+(\d+)-(\d+)", RegexOptions.IgnoreCase),
new Regex(@"file.?[\s\r\n]+nos?.?:?[\s\r\n]+([\d\r\n-]+)", RegexOptions.IgnoreCase)
};
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchRegularExpressionAll.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber(regexes, new Aspose.Pdf.Text.TextSearchOptions(true));
document.Pages.Accept(absorber);
// Get result
var result = absorber.RegexResults;
}
}
تبحث مقتطفات الشيفرة عن أنماط محددة مثل أرقام المستندات، الكلمات الرئيسية، وأرقام الملفات في مستند PDF باستخدام التعبيرات العادية. تقوم بتحميل PDF، وتطبق البحث، وتسترجع النتائج المطابقة لمزيد من المعالجة.
للبحث عن مقاطع النص من جميع الصفحات، تحتاج أولاً إلى الحصول على كائنات TextFragment من المستند. يسمح لك TextFragmentAbsorber بالعثور على نص يتطابق مع عبارة معينة، من جميع صفحات مستند PDF. للبحث عن نص من المستند بالكامل، تحتاج إلى استدعاء طريقة Accept لمجموعة الصفحات. تأخذ طريقة Accept كائن TextFragmentAbsorber كمعامل، والذي يعيد مجموعة من كائنات TextFragment. بمجرد استرجاع TextFragmentCollection من المستند، تحتاج إلى التكرار عبر هذه المجموعة والحصول على TextSegmentCollection لكل كائن TextFragment. بعد ذلك، يمكنك الحصول على جميع خصائص كائن TextSegment الفردي. تظهر لك مقتطفات الشيفرة التالية كيفية البحث عن مقاطع النص من جميع الصفحات.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchAndGetTextPage.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("Figure");
// Accept the absorber for all the pages
document.Pages.Accept(textFragmentAbsorber);
// Get the extracted text fragments
var textFragmentCollection = textFragmentAbsorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in textFragmentCollection)
{
foreach (var textSegment in textFragment.Segments)
{
Console.WriteLine("Text : {0} ", textSegment.Text);
Console.WriteLine("Position : {0} ", textSegment.Position);
Console.WriteLine("XIndent : {0} ", textSegment.Position.XIndent);
Console.WriteLine("YIndent : {0} ", textSegment.Position.YIndent);
Console.WriteLine("Font - Name : {0}", textSegment.TextState.Font.FontName);
Console.WriteLine("Font - IsAccessible : {0} ", textSegment.TextState.Font.IsAccessible);
Console.WriteLine("Font - IsEmbedded : {0} ", textSegment.TextState.Font.IsEmbedded);
Console.WriteLine("Font - IsSubset : {0} ", textSegment.TextState.Font.IsSubset);
Console.WriteLine("Font Size : {0} ", textSegment.TextState.FontSize);
Console.WriteLine("Foreground Color : {0} ", textSegment.TextState.ForegroundColor);
}
}
}
}
للبحث والحصول على TextSegments من صفحة معينة من PDF، تحتاج إلى تحديد فهرس الصفحة المحدد عند استدعاء طريقة Accept(..). يرجى إلقاء نظرة على سطور الشيفرة التالية.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchAndGetTextFromAll.pdf"))
{
// Create TextAbsorber object to find all instances of the input search phrase
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("text");
// Accept the absorber for a particular page
document.Pages[2].Accept(textFragmentAbsorber);
}
}
يساعدك TextFragmentAbsorber في البحث واسترجاع النص، من جميع الصفحات، بناءً على تعبير عادي. أولاً، تحتاج إلى تمرير تعبير عادي إلى مُنشئ TextFragmentAbsorber كعبارة. بعد ذلك، يجب عليك تعيين خاصية TextSearchOptions لكائن TextFragmentAbsorber. تتطلب هذه الخاصية كائن TextSearchOptions وتحتاج إلى تمرير true كمعامل إلى مُنشئه أثناء إنشاء كائنات جديدة. كما تريد استرجاع النص المطابق من جميع الصفحات، تحتاج إلى استدعاء طريقة Accept لمجموعة الصفحات. يعيد TextFragmentAbsorber مجموعة TextFragmentCollection تحتوي على جميع الأجزاء المطابقة للمعايير المحددة بواسطة التعبير العادي. تظهر لك مقتطفات الشيفرة التالية كيفية البحث والحصول على النص من جميع الصفحات بناءً على تعبير عادي.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchRegularExpressionAll.pdf"))
{
// Create TextAbsorber object to find all the phrases matching the regular expression
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("\\d{4}-\\d{4}"); // Like 1999-2000
// Set text search option to specify regular expression usage
var textSearchOptions = new Aspose.Pdf.Text.TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Accept the absorber for all the pages
document.Pages.Accept(textFragmentAbsorber);
// Get the extracted text fragments
var textFragmentCollection = textFragmentAbsorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in textFragmentCollection)
{
Console.WriteLine("Text : {0} ", textFragment.Text);
Console.WriteLine("Position : {0} ", textFragment.Position);
Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}
}
}
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void TextFragmentAbsorberCtor()
{
Aspose.Pdf.Text.TextFragmentAbsorber textFragmentAbsorber;
// In order to search exact match of a word, you may consider using regular expression
textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(@"\bWord\b", new Aspose.Pdf.Text.TextSearchOptions(true));
// In order to search a string in either upper case or lowercase, you may consider using regular expression
textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber("(?i)Line", new Aspose.Pdf.Text.TextSearchOptions(true));
// In order to search all the strings (parse all strings) inside PDF document, please try using following regular expression
textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(@"[\S]+");
// Find match of search string and get anything after the string till line break
textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(@"(?i)the ((.)*)");
// Please use following regular expression to find text following to the regex match
textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(@"(?<=word).*");
// In order to search Hyperlink/URL's inside PDF document, please try using following regular expression
textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(@"(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?");
}
إذا كنت ترغب في إضافة رابط فوق عبارة نصية بناءً على تعبير عادي، أولاً ابحث عن جميع العبارات التي تتطابق مع ذلك التعبير العادي المحدد باستخدام TextFragmentAbsorber وأضف رابطًا فوق هذه العبارات.
للعثور على عبارة وإضافة رابط فوقها:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Create absorber object to find all instances of the input search phrase
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber("\\d{4}-\\d{4}");
// Enable regular expression search
absorber.TextSearchOptions = new Aspose.Pdf.Text.TextSearchOptions(true);
// Create the editor
using (var editor = new Aspose.Pdf.Facades.PdfContentEditor())
{
// Bind PDF document
editor.BindPdf(dataDir + "SearchRegularExpressionPage.pdf");
// Accept the absorber for the page
editor.Document.Pages[1].Accept(absorber);
int[] dashArray = { };
String[] LEArray = { };
System.Drawing.Color blue = System.Drawing.Color.Blue;
// Loop through the fragments
foreach (var textFragment in absorber.TextFragments)
{
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.Blue;
System.Drawing.Rectangle rect = new System.Drawing.Rectangle((int)textFragment.Rectangle.LLX,
(int)Math.Round(textFragment.Rectangle.LLY), (int)Math.Round(textFragment.Rectangle.Width + 2),
(int)Math.Round(textFragment.Rectangle.Height + 1));
Enum[] actionName = new Enum[2] { Aspose.Pdf.Annotations.PredefinedAction.Document_AttachFile, Aspose.Pdf.Annotations.PredefinedAction.Document_ExtractPages };
editor.CreateWebLink(rect, "http:// Www.aspose.com", 1, blue, actionName);
editor.CreateLine(rect, "", (float)textFragment.Rectangle.LLX + 1, (float)textFragment.Rectangle.LLY - 1,
(float)textFragment.Rectangle.URX, (float)textFragment.Rectangle.LLY - 1, 1, 1, blue, "S", dashArray, LEArray);
}
// Save PDF document
editor.Save(dataDir + "SearchTextAndAddHyperlink_out.pdf");
}
}
يدعم Aspose.PDF for .NET ميزة البحث والحصول على إحداثيات كل حرف أو مقطع نصي. لذا، لضمان دقة الإحداثيات المعادة لكل حرف، يمكننا اعتبار تمييز (إضافة مستطيل) حول كل حرف.
في حالة فقرة نصية، يمكنك اعتبار استخدام بعض التعبيرات العادية لتحديد فاصل الفقرة ورسم مستطيل حولها. يرجى إلقاء نظرة على مقتطفات الشيفرة التالية. تحصل مقتطفات الشيفرة التالية على إحداثيات كل حرف وتخلق مستطيلًا حول كل حرف.
يدعم Aspose.PDF for .NET ميزة البحث والحصول على إحداثيات كل حرف أو مقطع نصي. لذا، من أجل التأكد من الإحداثيات التي يتم إرجاعها لكل حرف، يمكننا اعتبار تمييز (إضافة مستطيل) حول كل حرف. تحصل مقتطفات الشيفرة التالية على إحداثيات كل حرف وتخلق مستطيلًا حول كل حرف.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void SearchAndHighlight()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
int resolution = 150;
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchAndGetTextFromAll.pdf"))
{
using (MemoryStream stream = new MemoryStream())
{
var conv = new Aspose.Pdf.Facades.PdfConverter(document);
conv.Resolution = new Aspose.Pdf.Devices.Resolution(resolution, resolution);
conv.GetNextImage(stream, System.Drawing.Imaging.ImageFormat.Png);
using (var bmp = System.Drawing.Bitmap.FromStream(stream))
{
using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
{
float scale = resolution / 72f;
gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);
for (int i = 0; i < document.Pages.Count; i++)
{
var page = document.Pages[1];
// Create TextAbsorber object to find all words
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(@"[\S]+");
textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
page.Accept(textFragmentAbsorber);
// Get the extracted text fragments
var textFragmentCollection = textFragmentAbsorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in textFragmentCollection)
{
if (i == 0)
{
gr.DrawRectangle(
System.Drawing.Pens.Yellow,
(float)textFragment.Position.XIndent,
(float)textFragment.Position.YIndent,
(float)textFragment.Rectangle.Width,
(float)textFragment.Rectangle.Height);
for (int segNum = 1; segNum <= textFragment.Segments.Count; segNum++)
{
var segment = textFragment.Segments[segNum];
for (int charNum = 1; charNum <= segment.Characters.Count; charNum++)
{
var characterInfo = segment.Characters[charNum];
Aspose.Pdf.Rectangle rect = page.GetPageRect(true);
Console.WriteLine("TextFragment = " + textFragment.Text + " Page URY = " + rect.URY +
" TextFragment URY = " + textFragment.Rectangle.URY);
gr.DrawRectangle(
System.Drawing.Pens.Black,
(float)characterInfo.Rectangle.LLX,
(float)characterInfo.Rectangle.LLY,
(float)characterInfo.Rectangle.Width,
(float)characterInfo.Rectangle.Height);
}
gr.DrawRectangle(
System.Drawing.Pens.Green,
(float)segment.Rectangle.LLX,
(float)segment.Rectangle.LLY,
(float)segment.Rectangle.Width,
(float)segment.Rectangle.Height);
}
}
}
}
}
// Save result
bmp.Save(dataDir + "HighlightCharacterInPDF_out.png", System.Drawing.Imaging.ImageFormat.Png);
}
}
}
}
أحيانًا نريد إضافة نص مخفي في مستند PDF ثم البحث عن النص المخفي واستخدام موضعه للمعالجة اللاحقة. لراحتك، يوفر Aspose.PDF for .NET هذه القدرات. يمكنك إضافة نص مخفي أثناء إنشاء المستند. أيضًا، يمكنك العثور على نص مخفي باستخدام TextFragmentAbsorber. لإضافة نص مخفي، قم بتعيين TextState.Invisible إلى ’true’ للنص المضاف. يجد TextFragmentAbsorber جميع النصوص التي تتطابق مع النمط (إذا تم تحديده). إنها السلوك الافتراضي الذي لا يمكن تغييره. للتحقق مما إذا كان النص الموجود هو في الواقع غير مرئي، يمكن استخدام خاصية TextState.Invisible. تظهر مقتطفات الشيفرة أدناه كيفية استخدام هذه الميزة.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreateAndSearchText()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
var page = document.Pages.Add();
var frag1 = new Aspose.Pdf.Text.TextFragment("This is common text.");
var frag2 = new Aspose.Pdf.Text.TextFragment("This is invisible text.");
//Set text property - invisible
frag2.TextState.Invisible = true;
page.Paragraphs.Add(frag1);
page.Paragraphs.Add(frag2);
// Save PDF document
document.Save(dataDir + "CreateAndSearchText_out.pdf");
}
// Search text in the document
using (var document = new Aspose.Pdf.Document(dataDir + "CreateAndSearchText_out.pdf"))
{
var absorber = new Aspose.Pdf.Text.TextFragmentAbsorber();
absorber.Visit(document.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
//Do something with fragments
Console.WriteLine("Text '{0}' on pos {1} invisibility: {2} ",
fragment.Text, fragment.Position.ToString(), fragment.TextState.Invisible);
}
}
}
يوفر Aspose.PDF for .NET القدرة على البحث في المستندات باستخدام خيار Regex القياسي في .NET. يمكن استخدام TextFragmentAbsorber لهذا الغرض كما هو موضح في عينة الشيفرة أدناه.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void Search()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Create Regex object to find all words
var regex = new System.Text.RegularExpressions.Regex(@"[\S]+");
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "SearchTextRegex.pdf"))
{
// Get a particular page
var page = document.Pages[1];
// Create TextAbsorber object to find all instances of the input regex
var textFragmentAbsorber = new Aspose.Pdf.Text.TextFragmentAbsorber(regex);
textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
// Accept the absorber for the page
page.Accept(textFragmentAbsorber);
// Get the extracted text fragments
var textFragmentCollection = textFragmentAbsorber.TextFragments;
// Loop through the fragments
foreach (var textFragment in textFragmentCollection)
{
Console.WriteLine(textFragment.Text);
}
}
}
يوفر Aspose.PDF for .NET القدرة على البحث في المستندات باستخدام خصائص نمط الخط. يمكن استخدام TextFragmentAbsorber لهذا الغرض كما هو موضح في عينة الشيفرة أدناه.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.