46 lines
2.0 KiB
Java
46 lines
2.0 KiB
Java
package com.baeldung.pdfedition;
|
|
|
|
import java.io.IOException;
|
|
|
|
import com.itextpdf.kernel.colors.ColorConstants;
|
|
import com.itextpdf.kernel.pdf.PdfDocument;
|
|
import com.itextpdf.kernel.pdf.PdfPage;
|
|
import com.itextpdf.kernel.pdf.PdfReader;
|
|
import com.itextpdf.kernel.pdf.PdfWriter;
|
|
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
|
|
import com.itextpdf.kernel.pdf.canvas.parser.listener.IPdfTextLocation;
|
|
import com.itextpdf.layout.Canvas;
|
|
import com.itextpdf.layout.element.Paragraph;
|
|
import com.itextpdf.pdfcleanup.PdfCleaner;
|
|
import com.itextpdf.pdfcleanup.autosweep.CompositeCleanupStrategy;
|
|
import com.itextpdf.pdfcleanup.autosweep.RegexBasedCleanupStrategy;
|
|
|
|
public class PdfTextReplacement {
|
|
|
|
private static final String SOURCE = "src/main/resources/baeldung-modified.pdf";
|
|
private static final String DESTINATION = "src/main/resources/baeldung-fixed.pdf";
|
|
|
|
public static void main(String[] args) throws IOException {
|
|
PdfReader reader = new PdfReader(SOURCE);
|
|
PdfWriter writer = new PdfWriter(DESTINATION);
|
|
PdfDocument pdfDocument = new PdfDocument(reader, writer);
|
|
replaceTextContentFromDocument(pdfDocument);
|
|
pdfDocument.close();
|
|
}
|
|
|
|
private static void replaceTextContentFromDocument(PdfDocument pdfDocument) throws IOException {
|
|
CompositeCleanupStrategy strategy = new CompositeCleanupStrategy();
|
|
strategy.add(new RegexBasedCleanupStrategy("Baeldung tutorials").setRedactionColor(ColorConstants.WHITE));
|
|
PdfCleaner.autoSweepCleanUp(pdfDocument, strategy);
|
|
|
|
for (IPdfTextLocation location : strategy.getResultantLocations()) {
|
|
PdfPage page = pdfDocument.getPage(location.getPageNumber() + 1);
|
|
PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), page.getDocument());
|
|
Canvas canvas = new Canvas(pdfCanvas, location.getRectangle());
|
|
canvas.add(new Paragraph("HIDDEN").setFontSize(8)
|
|
.setMarginTop(0f));
|
|
}
|
|
}
|
|
|
|
}
|