מצא והחלף טקסט ב-PDF באמצעות C++

PDF הוא פורמט פופולרי שנמצא בשימוש נרחב לשיתוף מסמכים בין ארגונים ויחידים. יתכנו תרחישים שבהם עליך למצוא ולהחליף טקסט מסוים במסמכי ה-PDF לפני השיתוף. אתה יכול לעשות זאת באופן ידני, אבל זה ייקח יותר זמן ויהיה פחות יעיל. האפשרות הטובה והמהירה יותר תהיה לעשות זאת באופן תוכנתי. במאמר זה תלמד כיצד למצוא ולהחליף טקסט בקובצי PDF באמצעות C++.

C++ API לאיתור והחלפה של טקסט בקובצי PDF

Aspose.PDF for C++ היא ספריית C++ לעבודה עם קבצי PDF. זה מספק חבורה של תכונות שעוזרות לך להפוך היבטים שונים של זרימות העבודה שלך ב-PDF. תכונה אחת כזו היא איתור והחלפת טקסט בקובצי PDF. אתה יכול להתקין את ה-API דרך NuGet או להוריד אותו ישירות מהקטע הורדות.

PM> Install-Package Aspose.PDF.Cpp

מצא והחלף טקסט ב-PDF באמצעות C++

Aspose.PDF for C++ מספק את המחלקה TextFragmentAbsorber לחיפוש טקסט במסמכי PDF. אתה מאתחל את המחלקה הזו עם הטקסט שאתה רוצה למצוא ומשתמש בו כדי לאחזר את כל קטעי הטקסט התואמים. ברגע שכל הפרגמנטים זמינים, אתה מעליהם בלולאה ומחליף את הטקסט. להלן השלבים לאיתור והחלפת טקסט בקובצי PDF באמצעות C++.

להלן הקוד לדוגמה למציאת והחלפת טקסט בקובץ ה-PDF כולו באמצעות C++.

// טען קובץ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// צור אובייקט TextAbsorber כדי למצוא את כל המופעים של ביטוי חיפוש הקלט
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// קבלו את הסופג לכל הדפים
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// קבל את קטעי הטקסט שחולצו
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// לולאה דרך השברים
for (auto textFragment : textFragmentCollection)
{
	// עדכן טקסט ומאפיינים אחרים
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// שמור את מסמך ה-PDF שנוצר.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ מצא והחלף טקסט בדף PDF ספציפי

ייתכנו מצבים שבהם אתה רוצה למצוא ולהחליף רק טקסט בעמוד מסוים ולא במסמך כולו. לשם כך, קבל את האובייקט TextFragmentAbsorber עבור הדף שבו ברצונך להחליף את הטקסט. להלן השלבים לאיתור והחלפת טקסט בעמוד מסוים במסמך PDF.

להלן הקוד לדוגמה למציאת והחלפת טקסט בדף PDF ספציפי באמצעות C++.

// טען קובץ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// צור אובייקט TextAbsorber כדי למצוא את כל המופעים של ביטוי חיפוש הקלט
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// קבל את הסופג עבור העמוד השני של המסמך
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// קבל את קטעי הטקסט שחולצו
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// לולאה דרך השברים
for (auto textFragment : textFragmentCollection)
{
	// עדכן טקסט ומאפיינים אחרים
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// שמור מסמך PDF שהתקבל.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

החלף טקסט באזור עמוד PDF באמצעות C++

במקום לחפש בכל העמוד, תוכל לציין את אזור הדף שבו ברצונך להחליף את הטקסט. לשם כך, ה-API מספק את המחלקה Rectangle. להלן השלבים לאיתור והחלפת טקסט בחלק מסוים של דף ה-PDF.

להלן הקוד לדוגמה למציאת והחלפת טקסט באזור דף PDF ספציפי.

// טען קובץ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// צור אובייקט TextAbsorber כדי למצוא את כל המופעים של ביטוי חיפוש הקלט
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// חיפוש טקסט בגבולות העמוד
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// ציין את אזור הדף עבור TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// קבל את הסופג לעמוד הראשון של המסמך
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// קבל את קטעי הטקסט שחולצו
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// לולאה דרך השברים
for (auto textFragment : textFragmentCollection)
{
	// עדכן טקסט ומאפיינים אחרים
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// שמור מסמך PDF שהתקבל.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

מצא והחלף טקסט בקובצי PDF באמצעות ביטויים רגילים

Aspose.PDF עבור C++ מספק גם את היכולת לחפש טקסט באמצעות ביטויים רגולריים. עם ביטויים רגולריים, אתה יכול למצוא טקסט כמו כתובות דוא"ל או מספרי טלפון וכו’. לשם כך, עליך לציין את הביטוי הרגולרי במקום את מחרוזת החיפוש ולהשתמש במחלקה TextSearchOptions כדי לציין שאתה משתמש בביטוי רגולרי ביטוי לחיפוש. להלן השלבים לאיתור והחלפת טקסט בקובצי PDF באמצעות ביטוי רגולרי.

להלן הקוד לדוגמה למציאת והחלפת טקסט בקובצי PDF באמצעות ביטוי רגולרי.

// טען קובץ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

// צור אובייקט TextAbsorber כדי למצוא את כל המופעים של ביטוי חיפוש הקלט
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// הגדר אפשרות חיפוש טקסט כדי לאפשר שימוש בביטוי רגולרי
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// קבל את הסופג עבור כל עמודי המסמך
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// קבל את קטעי הטקסט שחולצו
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// לולאה דרך השברים
for (auto textFragment : textFragmentCollection)
{
	// עדכן טקסט ומאפיינים אחרים
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// שמור מסמך PDF שהתקבל.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

קבל רישיון חינם

אתה יכול לנסות את ה-API ללא מגבלות הערכה על ידי בקשת [רישיון זמני בחינם].47

סיכום

במאמר זה, למדת כיצד למצוא ולהחליף טקסט בקובצי PDF באמצעות C++. ראית כיצד להחליף טקסט בכל מסמך ה-PDF, דף PDF ספציפי או אזור מסוים בעמוד. יתר על כן, למדת כיצד לחפש ולהחליף טקסט באמצעות ביטוי רגולרי. Aspose.PDF for C++ הוא ממשק API רב עוצמה עם תכונות נוספות רבות שהופכות את העבודה עם מסמכי PDF לחתיכת עוגה. אתה יכול לחקור את ה-API בפירוט על ידי שימוש בתיעוד הרשמי. אם יש לך שאלות כלשהן, אל תהסס לפנות אלינו בפורום.

ראה גם