Mengganti teks dalam PDF dengan Java
Aspose.PDF for Java menyediakan fitur penggantian sederhana dan penggantian yang memperhatikan tata letak melalui TextFragmentAbsorber dan opsi penggantian.
Mengganti teks pada semua halaman
Gunakan contoh ini ketika frasa yang sama harus diganti di seluruh dokumen.
- Buka dokumen PDF sumber.
- Cari semua halaman untuk frasa target dengan
TextFragmentAbsorber. - Ganti teks yang cocok dan simpan PDF yang diperbarui.
public static void replaceTextOnAllPages(Path inputFile, Path outputFile) {
String searchPhrase = "PDF";
String replacePhrase = "pdf";
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber(searchPhrase);
document.getPages().accept(absorber);
for (TextFragment fragment : absorber.getTextFragments()) {
fragment.setText(replacePhrase);
}
document.save(outputFile.toString());
}
}
Mengganti teks pada wilayah halaman tertentu
Gunakan contoh ini ketika penggantian harus dibatasi pada persegi panjang yang dipilih pada satu halaman.
- Buka dokumen PDF sumber.
- Konfigurasikan
TextSearchOptionsdengan batas halaman dan sebuah persegi panjang target. - Ganti teks yang cocok di dalam wilayah tersebut dan simpan dokumen.
public static void replaceTextInParticularPageRegion(Path inputFile, Path outputFile) {
String searchPhrase = "doc";
String replacePhrase = "DOC";
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber(searchPhrase);
absorber.getTextSearchOptions().setLimitToPageBounds(true);
absorber.getTextSearchOptions().setRectangle(new Rectangle(300, 442, 500, 742, true));
document.getPages().get_Item(1).accept(absorber);
for (TextFragment fragment : absorber.getTextFragments()) {
fragment.setText(replacePhrase);
}
document.save(outputFile.toString());
}
}
Mengganti teks dan menyesuaikan spasi di dalam persegi panjang yang dipindahkan
Gunakan contoh ini ketika teks pengganti harus tetap berada di halaman dengan spasi yang disesuaikan tetapi ukuran font harus tetap tidak berubah.
- Buka PDF sumber dan kumpulkan fragmen teks dari halaman target.
- Ubah persegi panjang pengganti dan pilih
AdjustSpaceWidthperilaku. - Atur teks baru dan simpan dokumen.
public static void replaceTextAndResizeAndShiftWithoutChangingFontSize(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.visit(document.getPages().get_Item(1));
TextFragment fragment = absorber.getTextFragments().get_Item(1);
String text = fragment.getText();
Rectangle rectangle = fragment.getRectangle();
rectangle.setLLX(rectangle.getLLX() + 50);
rectangle.setURX(rectangle.getURX() - 50);
fragment.getReplaceOptions().setRectangle(rectangle);
fragment.getReplaceOptions().setReplaceAdjustmentAction(TextReplaceOptions.ReplaceAdjustment.AdjustSpaceWidth);
fragment.setText(text + " " + text);
document.save(outputFile.toString());
}
}
Mengganti teks di dalam persegi panjang paragraf yang lebih besar
Gunakan contoh ini ketika teks pengganti harus memperluas ke area halaman yang lebih besar.
- Buka PDF sumber dan dapatkan fragmen teks pertama dari halaman target.
- Bangun kotak pengganti yang lebih besar dari kotak media halaman.
- Terapkan opsi penggantian dan simpan PDF.
public static void replaceTextAndResizeAndShiftParagraph(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.visit(document.getPages().get_Item(1));
TextFragment fragment = absorber.getTextFragments().get_Item(1);
String text = fragment.getText();
Rectangle rectangle = document.getPages().get_Item(1).getMediaBox();
rectangle.setLLX(rectangle.getLLX() + 20);
rectangle.setURX(rectangle.getURX() - 20);
rectangle.setURY(rectangle.getURY() - 20);
fragment.getReplaceOptions().setRectangle(rectangle);
fragment.getReplaceOptions().setReplaceAdjustmentAction(TextReplaceOptions.ReplaceAdjustment.AdjustSpaceWidth);
fragment.setText(text + " " + text);
document.save(outputFile.toString());
}
}
Mengganti teks dan skala font agar mengisi persegi panjang
Gunakan contoh ini ketika teks pengganti harus diperbesar untuk mengisi area target.
- Buka PDF sumber dan akses fragmen teks target.
- Definisikan persegi pengganti dan aktifkan
ScaleToFillpenyesuaian font. - Atur teks baru dan simpan dokumen yang diperbarui.
public static void replaceTextAndResizeAndExpandFont(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.visit(document.getPages().get_Item(1));
TextFragment fragment = absorber.getTextFragments().get_Item(1);
String text = fragment.getText();
fragment.getReplaceOptions().setRectangle(new Rectangle(100, 300, 512, 692, true));
fragment.getReplaceOptions().setReplaceAdjustmentAction(TextReplaceOptions.ReplaceAdjustment.AdjustSpaceWidth);
fragment.getReplaceOptions().setFontSizeAdjustmentAction(TextReplaceOptions.FontSizeAdjustment.ScaleToFill);
fragment.setText(text + " " + text);
document.save(outputFile.toString());
}
}
Mengganti teks dan perkecil agar pas
Gunakan contoh ini ketika teks pengganti harus tetap berada di dalam persegi panjang teks asli.
- Buka PDF sumber dan pilih fragmen target.
- Gunakan kembali persegi panjang fragmen saat ini dan aktifkan
ShrinkToFit. - Ganti teks dan simpan dokumen.
public static void replaceTextAndFitTextIntoRectangle(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.visit(document.getPages().get_Item(1));
TextFragment fragment = absorber.getTextFragments().get_Item(1);
String text = fragment.getText();
fragment.getReplaceOptions().setRectangle(fragment.getRectangle());
fragment.getReplaceOptions().setFontSizeAdjustmentAction(TextReplaceOptions.FontSizeAdjustment.ShrinkToFit);
fragment.getReplaceOptions().setReplaceAdjustmentAction(TextReplaceOptions.ReplaceAdjustment.AdjustSpaceWidth);
fragment.setText(text + " " + text);
document.save(outputFile.toString());
}
}
Mengganti teks dengan ekspresi reguler
Gunakan contoh ini ketika teks yang cocok harus ditemukan oleh pola regex dan diubah gaya selama penggantian.
- Buka dokumen PDF sumber.
- Cari halaman dengan regex-enabled
TextFragmentAbsorber. - Ganti setiap kecocokan, perbarui gaya teksnya, dan simpan hasilnya.
public static void replaceTextBasedOnRegex(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber(Pattern.compile("\\d{4}-\\d{4}"));
absorber.setTextSearchOptions(new TextSearchOptions(true));
document.getPages().get_Item(1).accept(absorber);
for (TextFragment fragment : absorber.getTextFragments()) {
fragment.setText("ABC1-2XZY");
fragment.getTextState().setFont(FontRepository.findFont("Verdana"));
fragment.getTextState().setFontSize(12);
fragment.getTextState().setForegroundColor(Color.getBlue());
fragment.getTextState().setBackgroundColor(Color.getLightGreen());
}
document.save(outputFile.toString());
}
}
Mengganti teks placeholder dan biarkan halaman mengatur ulang
Gunakan contoh ini ketika placeholder harus diganti dengan nilai nyata yang lebih panjang sambil mempertahankan tata letak halaman.
- Buka PDF sumber dan cari teks placeholder.
- Tetapkan teks pengganti dan perbarui pengaturan fontnya.
- Simpan dokumen sehingga tata letaknya dihitung ulang.
public static void automaticallyRearrangePageContents(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber("[Long_placeholder_Long_placeholder]");
document.getPages().accept(absorber);
for (TextFragment textFragment : absorber.getTextFragments()) {
textFragment.setText("John Smith, South Development Studio");
textFragment.getTextState().setFont(FontRepository.findFont("Calibri"));
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setForegroundColor(Color.getNavy());
}
document.save(outputFile.toString());
}
}
Mengganti satu font dengan yang lain
Gunakan contoh ini ketika teks yang menggunakan font tertanam tertentu harus diganti dengan font lain.
- Buka PDF sumber dan kumpulkan semua fragmen teks.
- Periksa nama font setiap fragmen dan ganti font target.
- Simpan PDF yang diperbarui.
public static void replaceFonts(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
document.getPages().accept(absorber);
for (TextFragment fragment : absorber.getTextFragments()) {
if ("Arial-BoldMT".equals(fragment.getTextState().getFont().getFontName())) {
fragment.getTextState().setFont(FontRepository.findFont("Verdana"));
}
}
document.save(outputFile.toString());
}
}
Mengganti font dan menghapus sumber daya font yang tidak terpakai
Gunakan contoh ini ketika dokumen harus dibersihkan setelah penggantian font.
- Buka PDF sumber dan konfigurasikan
TextEditOptionsuntuk menghapus font yang tidak terpakai. - Serap fragmen teks dan tetapkan font pengganti.
- Simpan dokumen yang dioptimalkan.
public static void removeUnusedFonts(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextEditOptions options = new TextEditOptions(TextEditOptions.FontReplace.RemoveUnusedFonts);
TextFragmentAbsorber absorber = new TextFragmentAbsorber(options);
document.getPages().accept(absorber);
for (TextFragment textFragment : absorber.getTextFragments()) {
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
}
document.save(outputFile.toString());
}
}
Menghapus semua teks dari dokumen
Gunakan contoh ini ketika semua konten teks harus dihapus dari setiap halaman.
- Buka dokumen PDF sumber.
- Buat sebuah
TextFragmentAbsorberdan panggilremoveAllText(document). - Simpan PDF yang telah dibersihkan.
public static void removeAllTextUsingAbsorber1(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.removeAllText(document);
document.save(outputFile.toString());
}
}
Menghapus semua teks dari satu halaman
Gunakan contoh ini ketika semua teks harus dihapus hanya dari halaman tertentu.
- Buka dokumen PDF sumber.
- Buat sebuah
TextFragmentAbsorberdan hapus teks dari halaman target. - Simpan dokumen yang diperbarui.
public static void removeAllTextUsingAbsorber2(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.removeAllText(document.getPages().get_Item(1));
document.save(outputFile.toString());
}
}
Menghapus teks dari persegi panjang yang dipilih
Gunakan contoh ini ketika teks harus dihapus hanya di dalam area halaman yang dipilih.
- Buka dokumen PDF sumber.
- Buat sebuah
TextFragmentAbsorberdan tentukan persegi panjang yang akan dibersihkan. - Hapus teks dari wilayah itu dan simpan dokumen.
public static void removeAllTextUsingAbsorber3(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.removeAllText(document.getPages().get_Item(1), new Rectangle(10, 200, 120, 600, true));
document.save(outputFile.toString());
}
}
Menghapus teks tersembunyi
Gunakan contoh ini ketika fragmen teks tak terlihat harus dihapus dari PDF.
- Buka PDF sumber dan serap semua TextFragment.
- Periksa setiap fragmen untuk keadaan teks tak terlihat.
- Hapus teks tersembunyi dan simpan dokumen.
public static void removeHiddenText(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber textAbsorber = new TextFragmentAbsorber();
textAbsorber.setTextReplaceOptions(new TextReplaceOptions(TextReplaceOptions.ReplaceAdjustment.None));
document.getPages().accept(textAbsorber);
for (TextFragment fragment : textAbsorber.getTextFragments()) {
if (fragment.getTextState().isInvisible()) {
fragment.setText("");
}
}
document.save(outputFile.toString());
}
}