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.

  1. Buka dokumen PDF sumber.
  2. Cari semua halaman untuk frasa target dengan TextFragmentAbsorber.
  3. 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.

  1. Buka dokumen PDF sumber.
  2. Konfigurasikan TextSearchOptions dengan batas halaman dan sebuah persegi panjang target.
  3. 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.

  1. Buka PDF sumber dan kumpulkan fragmen teks dari halaman target.
  2. Ubah persegi panjang pengganti dan pilih AdjustSpaceWidth perilaku.
  3. 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.

  1. Buka PDF sumber dan dapatkan fragmen teks pertama dari halaman target.
  2. Bangun kotak pengganti yang lebih besar dari kotak media halaman.
  3. 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.

  1. Buka PDF sumber dan akses fragmen teks target.
  2. Definisikan persegi pengganti dan aktifkan ScaleToFill penyesuaian font.
  3. 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.

  1. Buka PDF sumber dan pilih fragmen target.
  2. Gunakan kembali persegi panjang fragmen saat ini dan aktifkan ShrinkToFit.
  3. 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.

  1. Buka dokumen PDF sumber.
  2. Cari halaman dengan regex-enabled TextFragmentAbsorber.
  3. 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.

  1. Buka PDF sumber dan cari teks placeholder.
  2. Tetapkan teks pengganti dan perbarui pengaturan fontnya.
  3. 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.

  1. Buka PDF sumber dan kumpulkan semua fragmen teks.
  2. Periksa nama font setiap fragmen dan ganti font target.
  3. 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.

  1. Buka PDF sumber dan konfigurasikan TextEditOptions untuk menghapus font yang tidak terpakai.
  2. Serap fragmen teks dan tetapkan font pengganti.
  3. 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.

  1. Buka dokumen PDF sumber.
  2. Buat sebuah TextFragmentAbsorber dan panggil removeAllText(document).
  3. 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.

  1. Buka dokumen PDF sumber.
  2. Buat sebuah TextFragmentAbsorber dan hapus teks dari halaman target.
  3. 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.

  1. Buka dokumen PDF sumber.
  2. Buat sebuah TextFragmentAbsorber dan tentukan persegi panjang yang akan dibersihkan.
  3. 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.

  1. Buka PDF sumber dan serap semua TextFragment.
  2. Periksa setiap fragmen untuk keadaan teks tak terlihat.
  3. 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());
    }
}