
Belirli metni PDF belgelerinde aramak, belge yönetim sistemlerinde, hukuki inceleme araçlarında, fatura işleme sistemlerinde ve diğer kurumsal uygulamalarda yaygın bir görevdir. Bir anahtar kelimeyi bulmaya, belirli değerleri çıkarmaya veya hassas bilgileri gizlemeye çalışıyor olun, PDF aramasını otomatikleştirmek birçok zaman ve çaba kazandırabilir.
Bu blog yazısında, C# kullanarak PDF dosyalarında metin aramayı programatik olarak nasıl yapacağınızı öğreneceksiniz. Anahtar özellikleri pratik C# kod örnekleriyle adım adım anlatacağız.
Bu makale aşağıdaki konuları kapsamaktadır:
- C# Kütüphanesi PDF Belgelerinde Arama Yapmak için
- PDF dosyasında C# kullanarak metin arama
- PDF’de Büyük/Küçük Harf Duyarsız ve Tam Kelime Arama
- PDF’de Düzenli İfadelerle Arama
- Metin Ara ve Pozisyon Ayrıntılarını Çıkar
- Bulunan Metni Vurgulama veya Değiştirme
- Tüm Sayfalarda veya Belirli Sayfalarda Ara
- Hassas Bilgileri Ara ve Kaldır
- Ücretsiz Kaynaklar
C# Kütüphanesi ile PDF Belgelerinde Arama Yapma
Aspose.PDF for .NET , C# kullanarak PDF dosyalarında metin arama sürecini basitleştirir. Kesin kelimeleri bulmanıza, düzenli ifadeleri kullanarak desenleri eşleştirmenize ve hatta eşleşen metni vurgulamanıza veya değiştirmenize olanak tanır—hepsi sadece birkaç satır kod ile. Bu güçlü kütüphane, PDF belgelerini manipüle etmek için sağlam özellikler sunar. Geliştiricilerin arama işlevlerini kolayca uygulamalarına olanak tanır. Aspose.PDF ile bir PDF’de kelimeleri hızlıca bulabilirsiniz, bu da onu yazılım geliştiricileri için paha biçilmez bir araç haline getirir.
PDF metninde arama yapmadan önce, geliştirme ortamınızı ayarlamanız gerekiyor. Aspose.PDF for .NET ile başlamanız için şu adımları izleyin:
1. Aspose.PDF’i .NET için kurun.
Bunu releases adresinden indirin veya NuGet üzerinden yükleyin. .NET projenizi Visual Studio’da açın ve NuGet Paket Yöneticisi Konsolu’nda aşağıdaki komutu çalıştırın:
PM> Install-Package Aspose.PDF
Bu komut, projenize Aspose.PDF kütüphanesini ekler, böylece güçlü PDF işleme özelliklerine erişebilirsiniz.
2. Gerekli Ad Alanlarını İçe Aktarın
C# dosyanızın en üstüne bu using direktiflerini ekleyin:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Artık Aspose.PDF API`sini kullanarak PDF dosyalarınızın içindeki metni aramaya başlamaya hazırsınız.
PDF’de Metin Arama C# Kullanarak
Aspose.PDF for .NET ile, bir PDF’de belirli kelimeleri veya ifadeleri kolayca arayabilir, tüm örneklerini bulabilir ve bunları vurgulamak veya ayrıntılarını çıkarmak gibi işlemler gerçekleştirebilirsiniz.
Aşağıdaki adımları izleyerek temel bir metin araması gerçekleştirin:
- Hedef PDF dosyasını Document sınıfını kullanarak yükleyin.
- Bir TextFragmentAbsorber oluşturun ve arama anahtar kelimesini tanımlayın.
- Tüketiciyi tüm sayfalarda Accept() yöntemiyle çalıştırın.
- Tüm eşleşen metin parçalarını al.
- Eşleşme sayısını yazdır.
- Her eşleşmeyi ve sayfa numarasını döngü ile gösterin.
Aşağıdaki kod örneği bu adımları uygular.
// PDF dosyasını yükleyin
Document pdfDocument = new Document("sample.pdf");
// Metin emici oluşturma arama anahtar kelimesi ile
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Tümü sayfalara emici uygulayın.
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Eşleşen metin parçalarını al
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Anahtar kelimenin kaç kez bulunduğunu yazdır.
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Döngü oluşturarak bulunan her metni yazdır.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Çıktı Örneği
Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3
Bu örnek, PDF içindeki tüm sayfalarda çalışan basit bir anahtar kelime aramasını göstermektedir. Eşleşen metni ve sayfa numarasını göreceksiniz.
PDF Aramaında Kullanılan Ana Sınıfları Anlamak
Kodda neler olup bittiğini daha iyi anlamak için, işin içinde olan ana sınıfların ve yöntemlerin hızlı bir şekilde özetlenmesi:
Document
: Tüm PDF dosyasını temsil eder. Sayfalara, içeriğe ve yapıya erişim sağlar.TextFragmentAbsorber
: PDF içinde verilen bir dize veya deseni bulur. Ayrıca büyük/küçük harf duyarsız veya regex tabanlı arama gibi özellikleri de etkinleştirebilirsiniz.Accept()
: Her sayfaya emiciyi uygular. Belgeyi tarar ve eşleşen parçaları toplar.TextFragments
: Absorber tarafından döndürülen eşleşen metin parçalarının bir koleksiyonu.TextFragment
: Her bireysel eşleşme, içerik, konum ve sayfa numarası gibi detaylarla birlikte.
C# kullanarak büyük/küçük harf duyarsız ve tam kelime arama
PDF içeriğini aradığınızda, sistemin eşleşmeleri nasıl bulduğunu kontrol etmeniz gerekir; bu, doğru sonuçlar sağlamak içindir. Bazen, harf büyük/küçüklüğünü göz ardı etmek istersiniz ("Fatura" ile "fatura" arasında) veya yalnızca tam kelimeleri eşleştirmek istersiniz—diğer kelimelerin içinde kısmi eşleşmeler değil.
Aspose.PDF for .NET size her ikisini yapacak araçları sunar.
Büyük küçük harf duyarsız arama
Varsayılan olarak, aramalar büyük/küçük harf duyarlıdır. Harf büyük/küçük durumunu göz ardı etmek için, IgnoreCase
etkinleştirilmiş TextSearchOptions
kullanın:
// PDF dosyasını yükleyin
Document pdfDocument = new Document("sample.pdf");
// Büyük-küçük harf duyarsız bir düzenli ifade ile bir metin emici oluşturun.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Metin arama seçeneklerini düzenli ifade kullanımını etkinleştirecek şekilde ayarlayın.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Tüm sayfalara emici uygulayın
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Eşleşen metin parçalarını alınız.
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Eşleşme sayısını verin
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Her bulunan metin parçasını döngüye al ve göster.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Bu hem "Fatura", "fatura", "FATURA" ve diğer varyasyonları bulacaktır.
Bütün Kelimeleri Eşleştir
Kısmi eşleşmeleri de önleyebilirsiniz. Örneğin, car
için arama yapmak care
veya scar
ile eşleşmemelidir.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Bütün kelime eşleşmesi için bir düzenli ifade deseni ile bir metin emici oluşturun.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Düzenli ifade kullanımını etkinleştirmek için metin arama seçeneklerini ayarlayın.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Tüm sayfalara absorbanı uygulayın.
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Eşleşen metin parçalarını al.
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Eşleşme sayısını çıktı olarak verin.
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Her bulunan metin parçasını döngüyle geçirip göster.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Bu, yalnızca “araba” kelimesinin bağımsız örneklerinin eşleşmesini sağlar.
PDF’de Düzenli İfadeler ile Arama
Belirli durumlarda, belirli bir kelimeden daha fazlasını bulmanız gerekebilir; tarih, e-posta adresleri veya referans numaraları gibi desenleri eşleştirmek istersiniz. İşte burada düzenli ifadeler (regex) devreye girer.
Aspose.PDF for .NET, PDF belgenizin herhangi bir bölümünde gelişmiş metin arama için regex kullanmanıza olanak tanır.
Örnek: Bir PDF’deki Tüm Tarihleri Bulun
Aşağıdaki formatta dd/mm/yyyy
tüm tarihleri bulmak istediğinizi varsayalım:
// PDF'yi yükle ve metni ara
Document pdfDocument = new Document("sample.pdf");
// Regex arama seçeneklerinde etkinleştirilen.
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Tarih deseni ile absorban oluşturun.
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Sayfalara emici uygulayın.
pdfDocument.Pages.Accept(absorber);
// Döngü oluştur ve bulunan desenleri yazdır.
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Diğer Kullanışlı Kalıplar:
- Emails:
\b[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
- Phone Numbers:
\d{3}[-.\s]??\d{3}[-.\s]??\d{4}
- Invoice Numbers:
INV-\d+
Regex, statik metnin ötesinde arama yeteneklerinizi genişleterek, yapılandırılmamış belgelerden yapılandırılmış verileri çıkarmanıza yardımcı olur.
Metin Arama ve Pozisyon Detayları ile Çıkartma
Bazen, metni bulmak yeterli olmayabilir; metnin PDF’de tam olarak nerede yer aldığını bilmeniz gerekebilir. Aspose.PDF, her eşleşmenin sayfa numarasını, koordinatlarını ve biçimlendirme ayrıntılarını çıkarmanıza olanak tanır.
Bu özellik, dizinler oluşturmak, belgeleri etiketlemek veya tıklanabilir bağlantılar oluşturmak için özellikle kullanışlıdır.
Örnek: Her Eşleşmenin Pozisyonunu Al
// PDF'yi yükleyin ve metin arayın
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Eşleşen parçaları al
TextFragmentCollection fragments = absorber.TextFragments;
// Her maç için pozisyon ve metni yazdır.
foreach (TextFragment fragment in fragments)
{
Console.WriteLine($"Text: {fragment.Text}");
Console.WriteLine($"Page: {fragment.Page.Number}");
Console.WriteLine($"Position - X: {fragment.Position.XIndent}, Y: {fragment.Position.YIndent}");
Console.WriteLine($"Font: {fragment.TextState.Font.FontName}, Size: {fragment.TextState.FontSize}");
Console.WriteLine("------------");
}
Sample Output
Text: invoice
Page: 1
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 2
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 3
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Artık `fatura” kelimesinin nerede geçtiğini ve nasıl stilize edildiğini tam olarak biliyorsunuz. Bu detay seviyesi, notlar, araç ipuçları veya dinamik vurgular gibi ileri düzey işleme imkanı sunuyor.
Metin Vurgulama veya Değiştirme
Bir PDF’de belirli bir metni bulduğunuzda, onu vurgulayarak veya yeni içerikle değiştirme aşamasına geçebilirsiniz. Aspose.PDF for .NET, eşleşen metni TextFragment
nesnesini kullanarak kolayca stilize etmenizi veya değiştirmenizi sağlar.
PDF’de Metni Ara ve Vurgula
Metnin arka planını ve yazı rengini değiştirerek görsel olarak vurgulayabilirsiniz.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
foreach (TextFragment fragment in absorber.TextFragments)
{
// Highlight by changing text appearance
fragment.TextState.BackgroundColor = Color.Yellow;
fragment.TextState.ForegroundColor = Color.Red;
fragment.TextState.FontStyle = FontStyles.Bold;
}
Bu, gözden geçirme, düzeltme veya notlu raporlar oluşturma için kullanışlıdır.
Metni Bul ve Değiştir
Belgedeki metni gizlemeye veya güncellemeye mi ihtiyacınız var? Doğrudan bunu değiştirebilirsiniz:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Yeni biçimlendirme uygularken bile değiştirme işlemi yapabilirsiniz:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Metinleri programatik olarak vurgulamak ve değiştirmek, şablonları temizlemek, güncel olmayan içeriği güncellemek veya özel verileri sansürlemek gibi birçok belge işleme görevini otomatikleştirmenizi sağlar.
Tüm Sayfalar veya Belirli Sayfalar Arasında Ara
Varsayılan olarak, Aspose.PDF bir PDF’deki tüm sayfalarda arama yapar. Ancak bazen, özellikle büyük dosyalarla çalışırken veya içerik tahmin edilebilir olduğunda, aramayı belirli bir sayfa veya sayfa aralığıyla sınırlamak isteyebilirsiniz.
Aspose.PDF, her ikisini de yapmayı kolaylaştırır.
Tüm Sayfalarda Ara (Varsayılan)
Sayfa belirtmezseniz, emici otomatik olarak her sayfayı arar.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Belirli Bir Sayfada Ara
Bir sayfayı doğrudan hedefleyerek de arama yapabilirsiniz:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Bir Dizi Sayfada Ara
Özel bir arama yapmak için (örn. sayfalar 2’den 4’e), sadece aralıkta döngü oluşturun:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
Bu yaklaşım, taranmış veya bölümlere ayrılmış belgeler için özellikle yararlı olan performans ve hassasiyet üzerinde tam kontrol sağlar.
Gelişmiş Kullanım Durumu: Hassas Bilgileri Arama ve Kırpma
Hukuki, İK veya finansal belgelerde, isimler, kimlikler veya hesap numaraları gibi hassas içeriği paylaşmadan önce gizlemek yaygındır. Aspose.PDF for .NET, arama ve gizleme özelliklerini birleştirerek bunu kolay hale getirir.
Terimleri arayabilir ve ardından RedactionAnnotation
kullanarak siyah bir örtü uygulayabilirsiniz.
// PDF'yi yükleyin ve metin arayın.
Document pdfDocument = new Document("sample.pdf");
// "John Doe" ismi için arama yapın
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Kayıtlı parçalar arasında döngü oluştur ve sansürle
foreach (TextFragment fragment in absorber.TextFragments)
{
// Konum ve boyutları al
Aspose.Pdf.Rectangle rect = new Aspose.Pdf.Rectangle(
fragment.Position.XIndent,
fragment.Position.YIndent,
fragment.Position.XIndent + fragment.Rectangle.Width,
fragment.Position.YIndent + fragment.Rectangle.Height
);
// Bir redaksiyon notu oluşturun.
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Add and apply redaction
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");
What Happens
- Hedef metin ("John Doe") bulundu ve siyah bir kutuyla kaplandı.
- Bu sadece görsel değil - PDF katmanından içeriği kaldırır, dosyadan geri alınamaz hale getirir.
Ücretsiz Lisans Alın
Artık Aspose.PDF for .NET kullanarak PDF’lerde metin aramayı, çıkarmayı, vurgulamayı ve sansürlemeyi öğrendiğinize göre, bu bilgiyi uygulamaya dökme zamanı.
Kendin dene: Ücretsiz geçici lisans indir ve kendi akıllı PDF araçlarını oluşturmaya başla.
PDF’de Ara: Ücretsiz Kaynaklar
PDF’lerde sadece metin aramakla mı kalmak istiyorsunuz? Bu ücretsiz, geliştirici dostu kaynaklarla Aspose.PDF for .NET’in tüm yeteneklerini keşfedin:
Geliştirici Rehberi PDF dosyalarını programlı olarak nasıl oluşturacağınızı, değiştireceğinizi, dönüştüreceğinizi ve güvence altına alacağınızı öğrenin. Aspose.PDF for .NET Belgelendirmesi
Ücretsiz Çevrimiçi Araçlar PDF dosyalarını doğrudan tarayıcınızda dönüştürün, birleştirin, ayırın ve düzenleyin. Aspose Ücretsiz PDF Araçları
API Referansı Aspose.PDF for .NET’te mevcut olan sınıflar, özellikler ve yöntemler hakkında daha fazla bilgi edinin, böylece geliştirme sürecinizi hızlandırın. Aspose.PDF API Reference
Destek Forumu Sorular sor, sorunları bildirin ve doğrudan Aspose uzmanlarından cevaplar al. Aspose Support Forum
Bu kaynaklar ücretsizdir ve PDF geliştirme yolculuğunuzdan en iyi şekilde yararlanmanıza yardımcı olmak için mevcuttur.
Sonuç
PDF dosyalarında metin arama, birçok belge tabanlı uygulama için hayati bir özelliktir—ister verileri çıkartıyor olun, ister içeriği denetliyor olun, ister dosyaları sansürlemeye hazırlıyor olun. Aspose.PDF for .NET ile anahtar kelime aramaları yapabilir, düzenli ifadeler kullanabilir, sonuçları vurgulayabilir ve hassas bilgileri tam olarak ve kontrol ile gizleyebilirsiniz. Aspose.PDF, karmaşık PDF işlemlerini basit hale getiren geliştirici dostu bir API sunar—size zaman kazandırırken güçlü otomasyonu sağlar.
Herhangi bir sorunuz varsa veya daha fazla yardıma ihtiyacınız varsa, lütfen free support forum adresinden bizimle iletişime geçmekte özgür olun.