
Mencari teks spesifik di PDF adalah tugas umum dalam sistem manajemen dokumen, alat tinjauan hukum, pemroses faktur, dan aplikasi perusahaan lainnya. Apakah Anda mencoba untuk menemukan kata kunci, mengekstrak nilai tertentu, atau menyensor informasi sensitif, mengotomatiskan pencarian PDF dapat menghemat banyak waktu dan usaha.
Dalam posting blog ini, Anda akan belajar cara mencari teks dalam file PDF secara programatis menggunakan C#. Kami akan memandu Anda melalui fitur-fitur kunci langkah demi langkah dengan contoh kode C# praktis.
Artikel ini membahas topik-topik berikut:
- C# Library untuk Mencari di Dokumen PDF
- Cari Teks di PDF menggunakan C#
- Pencarian Sensitif Huruf dan Kata Utuh dalam PDF
- Mencari dengan Ekspresi Reguler di PDF
- Cari dan Ekstrak Teks dengan Detail Posisi
- Menyoroti atau Mengganti Teks yang Ditemukan
- Cari di Semua Halaman atau Halaman Tertentu
- Cari dan Redaksi Informasi Sensitif
- Sumber Daya Gratis
C# Library untuk Mencari di Dokumen PDF
Aspose.PDF for .NET menyederhanakan proses pencarian teks dalam file PDF menggunakan C#. Ini memungkinkan Anda untuk menemukan kata-kata yang tepat, mencocokkan pola menggunakan ekspresi reguler, dan bahkan menyoroti atau mengganti teks yang cocok—semua hanya dengan beberapa baris kode. Perpustakaan yang kuat ini menyediakan fitur-fitur yang kuat untuk memanipulasi dokumen PDF. Ini memungkinkan pengembang untuk dengan mudah menerapkan fungsionalitas pencarian. Dengan Aspose.PDF, Anda dapat dengan cepat menemukan kata-kata dalam sebuah PDF, menjadikannya alat yang sangat berharga bagi pengembang perangkat lunak.
Sebelum mulai mencari teks di PDF, Anda perlu menyiapkan lingkungan pengembangan Anda. Ikuti langkah-langkah ini untuk memulai dengan Aspose.PDF for .NET:
1. Instal Aspose.PDF for .NET.
Download ini dari releases atau instal melalui NuGet.Buka proyek .NET Anda di Visual Studio dan jalankan perintah berikut di Console Manajer Paket NuGet:
PM> Install-Package Aspose.PDF
Perintah ini menambahkan perpustakaan Aspose.PDF ke proyek Anda sehingga Anda dapat mengakses fitur pemrosesan PDF yang kuat.
2. Impor Ruang Nama yang Diperlukan
Di bagian atas file C# Anda, tambahkan direktif using berikut:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Sekarang Anda siap untuk mulai mencari teks di dalam file PDF Anda menggunakan API Aspose.PDF.
Cari Teks di PDF Menggunakan C#
Dengan Aspose.PDF for .NET, Anda dapat dengan mudah mencari kata atau frasa tertentu dalam PDF, menemukan semua instance-nya, dan mengambil tindakan seperti menyorotnya atau mengekstrak detailnya.
Ikuti langkah-langkah ini untuk melakukan pencarian teks dasar:
- Muat berkas PDF target menggunakan kelas Document.
- Buat TextFragmentAbsorber untuk mendefinisikan kata kunci pencarian.
- Jalankan absorber di semua halaman menggunakan metode Accept().
- Retrieve all matching text fragments.
- Print jumlah pertandingan yang ditemukan.
- Loop melalui dan tampilkan setiap pertandingan beserta nomor halamannya.
Contoh kode berikut mengimplementasikan langkah-langkah ini.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Buat penyerap teks dengan kata kunci pencarian
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Terapkan pengabsorpsi ke semua halaman
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loop melalui dan cetak setiap teks yang ditemukan
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Output Example
Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3
Contoh ini menunjukkan pencarian kata kunci sederhana yang berfungsi di semua halaman dalam PDF. Anda akan melihat teks yang cocok beserta nomor halamannya.
Memahami Kelas Kunci yang Digunakan dalam Pencarian PDF
Untuk lebih memahami apa yang terjadi dalam kode, berikut adalah ringkasan cepat tentang kelas dan metode kunci yang terlibat:
Dokumen: Mewakili seluruh file PDF. Ini memberikan akses ke halaman, konten, dan struktur.TextFragmentAbsorber: Menemukan semua kemunculan string atau pola tertentu dalam PDF. Anda juga dapat mengaktifkan fitur seperti pencarian yang tidak peka huruf besar/kecil atau berbasis regex.Accept(): Menerapkan penyerap ke setiap halaman. Ini memindai dokumen dan mengumpulkan fragmen yang cocok.TextFragments: Koleksi dari semua fragmen teks yang cocok yang dikembalikan oleh absorber.TextFragment: Setiap pertandingan individu dengan detail seperti konten, posisi, dan nomor halaman.
Pencarian yang Tidak Sensitif Huruf dan Kata Utuh menggunakan C#
Ketika Anda mencari konten PDF, Anda perlu mengontrol bagaimana sistem menemukan kecocokan untuk memastikan hasil yang akurat. Terkadang, Anda ingin mengabaikan huruf besar-kecil (Invoice” vs. invoice”), atau Anda ingin mencocokkan kata-kata penuh saja—bukan kecocokan sebagian di dalam kata lain.
Aspose.PDF for .NET memberikan Anda alat untuk melakukan keduanya.
Pencarian yang Tidak Sensitif terhadap Huruf Besar/Kecil
Secara default, pencarian bersifat sensitif terhadap huruf besar. Untuk mengabaikan huruf besar, gunakan TextSearchOptions dengan IgnoreCase diaktifkan:
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Buat penyerap teks dengan ekspresi reguler yang tidak peka huruf besar-kecil.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Atur opsi pencarian teks untuk mengaktifkan penggunaan ekspresi reguler
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Terapkan penyerap ke semua halaman
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Retrieve the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loop melalui dan tampilkan setiap fragmen teks yang ditemukan
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Ini akan menemukan "Invoice", "invoice", "INVOICE", dan variasi lainnya.
Cocokkan Kata Seluruh Saja
Anda juga dapat mencegah kecocokan parsial. Misalnya, pencarian untuk car tidak seharusnya mencocokkan care atau scar.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Buat penyerap teks dengan pola ekspresi reguler untuk pencocokan kata utuh.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Atur opsi pencarian teks untuk mengaktifkan penggunaan ekspresi reguler
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Terapkan penyerap pada semua halaman
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Retrieve the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loop melalui dan tampilkan setiap fragmen teks yang ditemukan
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Ini memastikan hanya contoh kata “mobil” yang berdiri sendiri yang dicocokkan.
Mencari dengan Ekspresi Reguler di PDF
Dalam kasus tertentu, Anda perlu menemukan lebih dari sekadar kata spesifik—Anda ingin mencocokkan pola seperti tanggal, alamat email, atau nomor referensi. Di situlah ekspresi reguler (regex) berperan.
Aspose.PDF for .NET memungkinkan Anda menggunakan regex untuk pencarian teks lanjutan di seluruh bagian dokumen PDF Anda.
Contoh: Temukan Semua Tanggal di PDF
Mari kita katakan Anda ingin menemukan semua tanggal dalam format dd/mm/yyyy:
// Muat PDF dan cari teks
Document pdfDocument = new Document("sample.pdf");
// Aktifkan regex di opsi pencarian
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Buat penyerap dengan pola tanggal
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Terapkan penyerap ke halaman-halaman
pdfDocument.Pages.Accept(absorber);
// Loop dan cetak pola yang ditemukan
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Polanya Berguna Lainnya:
- 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 memperluas kemampuan pencarian Anda jauh melampaui teks statis, membantu Anda mengekstrak data terstruktur dari dokumen yang tidak terstruktur.
Cari dan Ekstrak Teks dengan Detail Posisi
Terkadang, menemukan teks saja tidak cukup—Anda mungkin perlu mengetahui di mana tepatnya teks itu muncul di PDF. Aspose.PDF memungkinkan Anda untuk mengekstrak nomor halaman, koordinat, dan detail format dari setiap hasil yang cocok.
Fitur ini sangat berguna untuk membangun indeks, menandai dokumen, atau membuat tautan yang dapat diklik.
Contoh: Dapatkan Posisi Setiap Kecocokan
// Muatan PDF dan cari teks
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Dapatkan fragmen yang cocok
TextFragmentCollection fragments = absorber.TextFragments;
// Cetak posisi dan teks untuk setiap pertandingan
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
------------
Anda sekarang tahu dengan tepat di mana kata `invoice” muncul, bersama dengan bagaimana ia ditata. Tingkat detail ini membuka pintu untuk pemrosesan lanjutan, seperti anotasi, tooltip, atau sorotan dinamis.
Menyoroti atau Mengganti Teks yang Ditemukan
Setelah Anda menemukan teks tertentu di PDF, Anda dapat mengambil langkah lebih jauh dengan menyorotnya atau bahkan menggantinya dengan konten baru. Aspose.PDF for .NET memungkinkan Anda untuk menata atau mengubah teks yang cocok dengan mudah menggunakan objek TextFragment.
Cari dan Sorot Teks di PDF
Anda dapat menyoroti teks secara visual dengan mengubah latar belakang dan warna fontnya.
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;
}
Ini berguna untuk meninjau, memberi garis merah, atau menghasilkan laporan yang dianotasi.
Temukan dan Ganti Teks
Perlu mengedit atau memperbarui teks dalam dokumen? Cukup ganti langsung:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Anda bahkan dapat menerapkan format baru saat mengganti:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Menyoroti dan mengganti teks secara programatik memungkinkan Anda untuk mengotomatiskan banyak tugas pemrosesan dokumen, seperti membersihkan template, memperbarui konten yang sudah usang, atau menyensor data pribadi.
Cari di Semua Halaman atau Halaman Tertentu
Secara default, Aspose.PDF mencari di semua halaman dalam PDF. Tetapi terkadang, Anda mungkin ingin membatasi pencarian ke halaman tertentu atau rentang halaman—terutama saat bekerja dengan file besar atau ketika kontennya dapat diprediksi.
Aspose.PDF memudahkan untuk melakukan keduanya.
Cari di Semua Halaman (Default)
Jika Anda tidak menentukan halaman, penyerap secara otomatis mencari di setiap halaman.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Cari di Halaman Tertentu
Anda juga dapat mencari halaman tunggal dengan menargetkan langsung:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Cari di Rentang Halaman
Untuk mencari rentang kustom (misalnya, halaman 2 hingga 4), cukup lakukan iterasi melalui rentang:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
Pendekatan ini memberi Anda kontrol penuh atas kinerja dan ketepatan, terutama berguna untuk dokumen yang dipindai atau yang dipotong.
Kasus Penggunaan Lanjutan: Mencari dan Menghapus Informasi Sensitif
Dalam dokumen hukum, SDM, atau keuangan, adalah hal yang umum untuk menyembunyikan konten sensitif—seperti nama, ID, atau nomor akun—sebelum dibagikan. Aspose.PDF for .NET memudahkan hal ini dengan menggabungkan pencarian dengan fitur penghitaman.
Anda bisa mencari istilah dan kemudian menerapkan overlay hitam menggunakan RedactionAnnotation.
// Muati PDF dan cari teks
Document pdfDocument = new Document("sample.pdf");
// Cari nama \"John Doe\"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Loop melalui fragmen yang ditemukan dan merahasiakannya
foreach (TextFragment fragment in absorber.TextFragments)
{
// Dapatkan posisi dan dimensi
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
);
// Buat anotasi redaksi
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Add and apply redaction
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// Simpan dokumen yang telah dimodifikasi
pdfDocument.Save("SearchAndRedact.pdf");
Apa yang Terjadi
- Teks target ("John Doe") ditemukan dan ditutupi dengan kotak hitam.
- Ini bukan hanya visual—ia menghapus konten dari lapisan PDF, membuatnya tidak dapat dipulihkan dari file.
Dapatkan Lisensi Gratis
Sekarang Anda telah belajar bagaimana cara mencari, mengekstrak, menyoroti, dan menghapus teks dalam PDF menggunakan Aspose.PDF for .NET, saatnya untuk menerapkan pengetahuan itu dalam tindakan.
Cobalah sendiri: Unduh lisensi sementara gratis dan mulai membangun alat PDF cerdas Anda sendiri.
Cari di PDF: Sumber Daya Gratis
Ingin melakukan lebih dari sekadar mencari teks dalam PDF? Jelajahi kemampuan penuh Aspose.PDF for .NET dengan sumber daya gratis yang ramah pengembang ini:
Panduan Pengembang Pelajari cara membuat, memodifikasi, mengonversi, dan mengamankan file PDF secara programatik. Aspose.PDF for .NET Documentation
Alat Daring Gratis Konversi, gabungkan, pisahkan, dan edit file PDF langsung di peramban Anda. Aspose Free PDF Tools
Referensi API Pelajari lebih lanjut tentang kelas, properti, dan metode yang tersedia di Aspose.PDF for .NET untuk mempercepat pengembangan Anda. Aspose.PDF API Reference
Forum Dukungan Ajukan pertanyaan, laporkan masalah, dan dapatkan jawaban langsung dari para ahli Aspose. Aspose Support Forum
Sumber daya ini gratis dan tersedia untuk membantu Anda memaksimalkan perjalanan pengembangan PDF Anda.
Kesimpulan
Mencari teks dalam file PDF adalah fitur penting untuk banyak aplikasi berbasis dokumen—baik Anda sedang mengekstrak data, mengaudit konten, atau menyiapkan file untuk penghapusan. Dengan Aspose.PDF for .NET, Anda dapat dengan mudah melakukan pencarian kata kunci, menggunakan ekspresi reguler, menyoroti hasil, dan bahkan menghapus informasi sensitif dengan presisi dan kontrol. Aspose.PDF menawarkan API yang ramah pengembang yang menyederhanakan operasi PDF yang kompleks—menghemat waktu Anda sekaligus memungkinkan otomatisasi yang kuat.
Jika Anda memiliki pertanyaan atau membutuhkan bantuan lebih lanjut, silakan merasa bebas untuk menghubungi kami di free support forum.