PDF, kuruluşlar ve bireyler arasında belge paylaşımı için yaygın olarak kullanılan popüler bir biçimdir. Paylaşmadan önce PDF belgelerinde bazı metinleri bulup değiştirmeniz gereken senaryolar olabilir. Bunu manuel olarak yapabilirsiniz, ancak bu daha fazla zaman alır ve daha az verimli olur. Daha iyi ve daha hızlı seçenek, bunu programlı olarak yapmak olacaktır. Bu makalede, C++ kullanarak PDF dosyalarındaki metni nasıl bulacağınızı ve değiştireceğinizi öğreneceksiniz.
- PDF dosyalarında Metin Bulmak ve Değiştirmek için C++ API
- C++ kullanarak PDF’de Metin Bul ve Değiştir
- C++ Belirli Bir PDF Sayfasındaki Metni Bul ve Değiştir
- C++ kullanarak PDF Sayfa Bölgesindeki Metni Değiştirme
- Normal İfadeler Kullanarak PDF dosyalarındaki Metni Bul ve Değiştir
- Ücretsiz Lisans Alın
PDF dosyalarında Metin Bulmak ve Değiştirmek için C++ API
Aspose.PDF for C++, PDF dosyalarıyla çalışmak için bir C++ kitaplığıdır. PDF iş akışlarınızın çeşitli yönlerini otomatikleştirmenize yardımcı olan bir dizi özellik sağlar. Böyle bir özellik, PDF dosyalarındaki metni bulmak ve değiştirmektir. API’yi NuGet aracılığıyla yükleyebilir veya doğrudan indirilenler bölümünden indirebilirsiniz.
PM> Install-Package Aspose.PDF.Cpp
C++ kullanarak PDF’de Metin Bul ve Değiştir
Aspose.PDF for C++, PDF belgelerinde metin aramak için TextFragmentAbsorber sınıfını sağlar. Bu sınıfı, bulmak istediğiniz metinle başlatırsınız ve onu eşleşen tüm metin parçalarını almak için kullanırsınız. Tüm parçalar mevcut olduğunda, bunların üzerinden geçer ve metni değiştirirsiniz. Aşağıda, C++ kullanarak PDF dosyalarındaki metni bulma ve değiştirme adımları yer almaktadır.
- Belge sınıfını kullanarak PDF dosyasını yükleyin.
- TextFragmentAbsorber sınıfının bir örneğini oluşturun ve onu PDF dosyasında bulmak istediğiniz metinle başlatın.
- [Document->getPages()->Accept (System::SharedPtr) kullanan sayfalar için TextFragmentAbsorber‘u kabul edinText::TextFragmentAbsorber ziyaretçi)]10 yöntemi.
- TextFragmentAbsorber->getTextFragments() yöntemini kullanarak tüm metin oluşumlarını alın.
- TextFragmentCollection içinde dolaşın ve TextFragment->setText (System::String value) yöntemini kullanarak metni güncelleyin.
- Güncellenen PDF dosyasını Belge->Kaydet (System::String outputFileName) yöntemini kullanarak kaydedin.
Aşağıda, C++ kullanarak tüm PDF dosyasındaki metni bulmak ve değiştirmek için örnek kod verilmiştir.
// PDF dosyasını yükle
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// Giriş arama ifadesinin tüm örneklerini bulmak için TextAbsorber nesnesi oluşturun
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// Tüm sayfalar için emiciyi kabul edin
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);
// Ayıklanan metin parçalarını alın
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Parçalar arasında döngü
for (auto textFragment : textFragmentCollection)
{
// Metni ve diğer özellikleri güncelleyin
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Ortaya çıkan PDF belgesini kaydedin.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
C++ Belirli Bir PDF Sayfasındaki Metni Bul ve Değiştir
Tüm belge yerine yalnızca belirli bir sayfadaki metni bulup değiştirmek istediğiniz durumlar olabilir. Bunun için metni değiştirmek istediğiniz sayfa için TextFragmentAbsorber nesnesini kabul edin. Aşağıda, PDF belgesindeki belirli bir sayfadaki metni bulma ve değiştirme adımları yer almaktadır.
- Belge sınıfını kullanarak PDF dosyasını yükleyin.
- TextFragmentAbsorber sınıfının bir örneğini oluşturun ve onu PDF dosyasında bulmak istediğiniz metinle başlatın.
- [Document->getPages()->idxget (int32t index)->Accept (System::SharedPtr)‘yi kullanarak belirli bir sayfa için TextFragmentAbsorber öğesini kabul edinText::TextFragmentAbsorber ziyaretçi)]19 yöntemi.
- TextFragmentAbsorber->getTextFragments() yöntemini kullanarak tüm metin oluşumlarını alın.
- TextFragmentCollection içinde dolaşın ve TextFragment->setText (System::String value) yöntemini kullanarak metni güncelleyin.
- Güncellenen PDF dosyasını Belge->Kaydet (System::String outputFileName) yöntemini kullanarak kaydedin.
Aşağıda, C++ kullanarak belirli bir PDF sayfasındaki metni bulmak ve değiştirmek için kullanılan örnek kod verilmiştir.
// PDF dosyasını yükle
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// Giriş arama ifadesinin tüm örneklerini bulmak için TextAbsorber nesnesi oluşturun
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// Dokümanın ikinci sayfası için emiciyi kabul edin
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);
// Ayıklanan metin parçalarını alın
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Parçalar arasında döngü
for (auto textFragment : textFragmentCollection)
{
// Metni ve diğer özellikleri güncelleyin
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Ortaya çıkan PDF belgesini kaydedin.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");
C++ kullanarak PDF Sayfa Bölgesindeki Metni Değiştirme
Tüm sayfayı aramak yerine, sayfanın metni değiştirmek istediğiniz bölgesini belirtebilirsiniz. Bunun için API, Rectangle sınıfını sağlar. Aşağıdakiler, PDF sayfasının belirli bir bölümündeki metni bulma ve değiştirme adımlarıdır.
- Belge sınıfını kullanarak PDF dosyasını yükleyin.
- TextFragmentAbsorber sınıfının bir örneğini oluşturun ve bunu, PDF dosyasında bulup değiştirmek istediğiniz metinle başlatın.
- TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> value) yöntemini kullanarak arama yapılacak sayfa bölgesini ayarlayın.
- [Document->getPages()->idxget (int32t index)->Accept (System::SharedPtr)‘yi kullanarak belirli bir sayfa için TextFragmentAbsorber öğesini kabul edinText::TextFragmentAbsorber ziyaretçi)]29 yöntemi.
- TextFragmentAbsorber->getTextFragments() yöntemini kullanarak tüm metin oluşumlarını alın.
- TextFragmentCollection içinde dolaşın ve TextFragment->setText (System::String value) yöntemini kullanarak metni güncelleyin.
- Güncellenen PDF dosyasını Belge->Kaydet (System::String outputFileName) yöntemini kullanarak kaydedin.
Belirli bir PDF sayfası bölgesindeki metni bulup değiştirmek için örnek kod aşağıdadır.
// PDF dosyasını yükle
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// Giriş arama ifadesinin tüm örneklerini bulmak için TextAbsorber nesnesi oluşturun
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// sayfa sınırları içinde arama metni
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);
// TextSearchOptions için sayfa bölgesini belirtin
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));
// Belgenin ilk sayfası için emiciyi kabul edin
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);
// Ayıklanan metin parçalarını alın
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Parçalar arasında döngü
for (auto textFragment : textFragmentCollection)
{
// Metni ve diğer özellikleri güncelleyin
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Ortaya çıkan PDF belgesini kaydedin.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
Normal İfadeler Kullanarak PDF dosyalarındaki Metni Bul ve Değiştir
Aspose.PDF for C++ ayrıca düzenli ifadeler kullanarak metin arama yeteneği sağlar. Normal ifadelerle, e-posta adresleri veya telefon numaraları gibi metinler bulabilirsiniz. Bunun için, arama dizesi yerine normal ifadeyi belirtmeniz ve normal ifade kullandığınızı belirtmek için TextSearchOptions sınıfını kullanmanız gerekir. arama ifadesi. Aşağıda, normal bir ifade kullanarak PDF dosyalarındaki metni bulma ve değiştirme adımları yer almaktadır.
- Belge sınıfını kullanarak PDF dosyasını yükleyin.
- TextFragmentAbsorber sınıfının bir örneğini oluşturun ve onu kullanmak istediğiniz normal ifadeyle başlatın.
- TextSearchOptions sınıfını başlatın ve yapıcısına true değerini iletin. Normal bir ifade kullanarak arama yaptığınızı gösterecektir.
- TextSearchOptions nesnesini TextFragmentAbsorber sınıfına TextFragmentAbsorber->setTextSearchOptions (System::SharedPtr) kullanarak atayınAspose::Pdf::Text::TextSearchOptions değer) yöntemi.
- [Document->getPages()->Accept (System::SharedPtr) öğesini kullanan sayfalar için TextFragmentAbsorber öğesini kabul edinText::TextFragmentAbsorber ziyaretçi)]42 yöntemi.
- TextFragmentAbsorber->getTextFragments() yöntemini kullanarak tüm metin oluşumlarını alın.
- TextFragmentCollection içinde dolaşın ve TextFragment->setText (System::String value) yöntemini kullanarak metni güncelleyin.
- Güncellenen PDF dosyasını Belge->Kaydet (System::String outputFileName) yöntemini kullanarak kaydedin.
Aşağıda, normal bir ifade kullanarak PDF dosyalarındaki metni bulmak ve değiştirmek için kullanılan örnek kod yer almaktadır.
// PDF dosyasını yükle
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");
// Giriş arama ifadesinin tüm örneklerini bulmak için TextAbsorber nesnesi oluşturun
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000
// Normal ifade kullanımını etkinleştirmek için metin arama seçeneğini ayarlayın
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);
// Belgenin tüm sayfaları için emiciyi kabul edin
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);
// Ayıklanan metin parçalarını alın
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Parçalar arasında döngü
for (auto textFragment : textFragmentCollection)
{
// Metni ve diğer özellikleri güncelleyin
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Ortaya çıkan PDF belgesini kaydedin.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
Ücretsiz Lisans Alın
Ücretsiz bir geçici lisans isteyerek API’yi değerlendirme kısıtlamaları olmadan deneyebilirsiniz.
Çözüm
Bu makalede, C++ kullanarak PDF dosyalarında metin bulmayı ve değiştirmeyi öğrendiniz. Tüm PDF belgesindeki, belirli bir PDF sayfasındaki veya sayfanın belirli bir bölgesindeki metnin nasıl değiştirildiğini gördünüz. Ayrıca, düzenli bir ifade kullanarak metin aramayı ve değiştirmeyi öğrendiniz. Aspose.PDF for C++, PDF belgeleriyle çalışmayı çocuk oyuncağı haline getiren birçok ek özelliğe sahip güçlü bir API’dir. Resmi belgeleri kullanarak API’yi ayrıntılı olarak inceleyebilirsiniz. Herhangi bir sorunuz varsa, lütfen forumda bizimle iletişime geçmekten çekinmeyin.