PDF یک قالب محبوب است که به طور گسترده برای به اشتراک گذاری اسناد بین سازمان ها و افراد استفاده می شود. ممکن است سناریوهایی وجود داشته باشد که قبل از اشتراکگذاری، مجبور شوید متنی را در اسناد PDF پیدا کرده و جایگزین کنید. شما می توانید این کار را به صورت دستی انجام دهید، اما زمان بیشتری می برد و کارایی کمتری دارد. گزینه بهتر و سریعتر این است که این کار را به صورت برنامه ای انجام دهید. در این مقاله، نحوه یافتن و جایگزینی متن در فایل های PDF با استفاده از C++ را خواهید آموخت.
- C++ API برای یافتن و جایگزینی متن در فایل های PDF
- با استفاده از C++ متن را در PDF پیدا و جایگزین کنید
- C++ متن را در یک صفحه PDF خاص پیدا و جایگزین کنید
- متن را در منطقه صفحه PDF با استفاده از C++ جایگزین کنید
- یافتن و جایگزینی متن در فایل های PDF با استفاده از عبارات منظم
- مجوز رایگان دریافت کنید
C++ API برای یافتن و جایگزینی متن در فایل های PDF
Aspose.PDF برای C++ یک کتابخانه C++ برای کار با فایلهای PDF است. مجموعه ای از ویژگی ها را ارائه می دهد که به شما کمک می کند جنبه های مختلف گردش کار PDF خود را خودکار کنید. یکی از این ویژگی ها یافتن و جایگزینی متن در فایل های PDF است. میتوانید API را از طریق NuGet نصب کنید یا آن را مستقیماً از بخش دانلودها دانلود کنید.
PM> Install-Package Aspose.PDF.Cpp
با استفاده از C++ متن را در PDF پیدا و جایگزین کنید
Aspose.PDF برای C++ کلاس TextFragmentAbsorber را برای جستجوی متن در اسناد PDF فراهم می کند. شما این کلاس را با متنی که می خواهید پیدا کنید مقداردهی اولیه می کنید و از آن برای بازیابی تمام قطعات متن منطبق استفاده می کنید. هنگامی که تمام قطعات در دسترس هستند، روی آنها حلقه زده و متن را جایگزین می کنید. مراحل زیر برای یافتن و جایگزینی متن در فایلهای PDF با استفاده از C++ آمده است.
- فایل PDF را با استفاده از کلاس Document بارگیری کنید.
- یک نمونه از کلاس TextFragmentAbsorber ایجاد کنید و آن را با متنی که می خواهید در فایل PDF پیدا کنید مقداردهی اولیه کنید.
- TextFragmentAbsorber را برای صفحات با استفاده از Document->getPages()->Accept (System::SharedPtr) بپذیریدText::TextFragmentAbsorber بازدید کننده) روش.
- با استفاده از روش TextFragmentAbsorber->getTextFragments()، تمام رخدادهای متن را بازیابی کنید.
- از طریق TextFragmentCollection حلقه بزنید و متن را با استفاده از روش TextFragment->setText (System::String value) بهروزرسانی کنید.
- فایل PDF به روز شده را با استفاده از روش Document->Save (System::String outputFileName) ذخیره کنید.
کد زیر نمونه ای برای یافتن و جایگزینی متن در کل فایل 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 را با استفاده از کلاس Document بارگیری کنید.
- یک نمونه از کلاس TextFragmentAbsorber ایجاد کنید و آن را با متنی که می خواهید در فایل PDF پیدا کنید مقداردهی اولیه کنید.
- TextFragmentAbsorber را برای صفحه خاص با استفاده از Document->getPages()->idxget (int32t index)->Accept (System::SharedPtr) بپذیریدText::TextFragmentAbsorber بازدید کننده) روش.
- با استفاده از روش TextFragmentAbsorber->getTextFragments() همه موارد متن را بازیابی کنید.
- از طریق TextFragmentCollection حلقه بزنید و متن را با استفاده از روش TextFragment->setText (System::String value) بهروزرسانی کنید.
- فایل PDF به روز شده را با استفاده از روش Document->Save (System::String outputFileName) ذخیره کنید.
کد زیر نمونه ای برای یافتن و جایگزینی متن در یک صفحه 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 کلاس مستطیل را ارائه میکند. در زیر مراحل یافتن و جایگزینی متن در قسمت خاصی از صفحه PDF آمده است.
- فایل PDF را با استفاده از کلاس Document بارگیری کنید.
- یک نمونه از کلاس TextFragmentAbsorber ایجاد کنید و آن را با متنی که میخواهید پیدا کنید و در فایل PDF جایگزین کنید، مقداردهی اولیه کنید.
- منطقه صفحه را برای جستجو با استفاده از روش TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> value) تنظیم کنید.
- TextFragmentAbsorber را برای صفحه خاص با استفاده از Document->getPages()->idxget (int32t index)->Accept (System::SharedPtr) بپذیریدText::TextFragmentAbsorber بازدید کننده) روش.
- با استفاده از روش TextFragmentAbsorber->getTextFragments() همه موارد متن را بازیابی کنید.
- از طریق TextFragmentCollection حلقه بزنید و متن را با استفاده از روش TextFragment->setText (System::String value) بهروزرسانی کنید.
- فایل PDF به روز شده را با استفاده از روش Document->Save (System::String outputFileName) ذخیره کنید.
کد زیر نمونه ای برای یافتن و جایگزینی متن در یک منطقه خاص صفحه 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 را با استفاده از کلاس Document بارگیری کنید.
- یک نمونه از کلاس TextFragmentAbsorber ایجاد کنید و آن را با عبارت منظمی که می خواهید استفاده کنید مقداردهی اولیه کنید.
- کلاس TextSearchOptions را مقداردهی کنید و به سازنده آن ارسال کنید. این نشان می دهد که شما با استفاده از یک عبارت منظم جستجو می کنید.
- با استفاده از [TextFragmentAbsorber->setTextSearchOptions (System::SharedPtr) شی TextSearchOptions را به کلاس TextFragmentAbsorber اختصاص دهیدAspose::Pdf::Text::TextSearchOptions مقدار)]40 روش.
- TextFragmentAbsorber را برای صفحات با استفاده از Document->getPages()->Accept (System::SharedPtr) بپذیریدText::TextFragmentAbsorber بازدید کننده) روش.
- تمام رخدادهای متن را با استفاده از روش TextFragmentAbsorber->getTextFragments() بازیابی کنید.
- از طریق TextFragmentCollection حلقه بزنید و متن را با استفاده از روش TextFragment->setText (System::String value) بهروزرسانی کنید.
- فایل PDF به روز شده را با استفاده از روش Document->Save (System::String outputFileName) ذخیره کنید.
کد زیر نمونه ای برای یافتن و جایگزینی متن در فایل های 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 را بدون محدودیت ارزیابی امتحان کنید.
نتیجه
در این مقاله نحوه یافتن و جایگزینی متن در فایل های PDF با استفاده از C++ را یاد گرفتید. نحوه جایگزینی متن را در کل سند PDF، یک صفحه PDF خاص یا یک منطقه خاص از صفحه مشاهده کرده اید. علاوه بر این، یاد گرفته اید که چگونه با استفاده از یک عبارت منظم، متن را جستجو و جایگزین کنید. Aspose.PDF برای C++ یک API قدرتمند با بسیاری از ویژگی های اضافی است که کار با اسناد PDF را به یک تکه کیک تبدیل می کند. با استفاده از مستندات رسمی میتوانید API را با جزئیات بررسی کنید. اگر سؤالی دارید، لطفاً با ما در [فروم 49 تماس بگیرید.