From 8f42cd42817fd130ee57a38147658551f16a9ddc Mon Sep 17 00:00:00 2001 From: "thibault.faure" Date: Mon, 3 Oct 2022 23:41:45 +0200 Subject: [PATCH] BAEL-5772 add code for the Edit Existing PDF Files in Java article --- pdf-2/pom.xml | 45 +++++++++ .../pdfedition/PdfContentRemover.java | 43 +++++++++ .../com/baeldung/pdfedition/PdfEditor.java | 86 ++++++++++++++++++ .../pdfedition/PdfTextReplacement.java | 45 +++++++++ pdf-2/src/main/resources/baeldung-cleaned.pdf | Bin 0 -> 16264 bytes pdf-2/src/main/resources/baeldung-fixed.pdf | Bin 0 -> 14847 bytes .../src/main/resources/baeldung-modified.pdf | Bin 0 -> 14364 bytes pdf-2/src/main/resources/baeldung.pdf | Bin 0 -> 8087 bytes pdf-2/src/main/resources/baeldung.png | Bin 0 -> 4567 bytes pom.xml | 1 + 10 files changed, 220 insertions(+) create mode 100644 pdf-2/pom.xml create mode 100644 pdf-2/src/main/java/com/baeldung/pdfedition/PdfContentRemover.java create mode 100644 pdf-2/src/main/java/com/baeldung/pdfedition/PdfEditor.java create mode 100644 pdf-2/src/main/java/com/baeldung/pdfedition/PdfTextReplacement.java create mode 100644 pdf-2/src/main/resources/baeldung-cleaned.pdf create mode 100644 pdf-2/src/main/resources/baeldung-fixed.pdf create mode 100644 pdf-2/src/main/resources/baeldung-modified.pdf create mode 100644 pdf-2/src/main/resources/baeldung.pdf create mode 100644 pdf-2/src/main/resources/baeldung.png diff --git a/pdf-2/pom.xml b/pdf-2/pom.xml new file mode 100644 index 0000000000..6a15dc7f29 --- /dev/null +++ b/pdf-2/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + pdf-2 + pdf-2 + http://maven.apache.org + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + com.itextpdf + itext7-core + ${itextpdf.core.version} + pom + + + com.itextpdf + cleanup + ${itextpdf.cleanup.version} + + + + + pdf + + + src/main/resources + true + + + + + + 7.2.3 + 3.0.1 + + + \ No newline at end of file diff --git a/pdf-2/src/main/java/com/baeldung/pdfedition/PdfContentRemover.java b/pdf-2/src/main/java/com/baeldung/pdfedition/PdfContentRemover.java new file mode 100644 index 0000000000..62ccdcb51f --- /dev/null +++ b/pdf-2/src/main/java/com/baeldung/pdfedition/PdfContentRemover.java @@ -0,0 +1,43 @@ +package com.baeldung.pdfedition; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.pdfcleanup.CleanUpProperties; +import com.itextpdf.pdfcleanup.PdfCleanUpLocation; +import com.itextpdf.pdfcleanup.PdfCleanUpTool; +import com.itextpdf.pdfcleanup.PdfCleaner; +import com.itextpdf.pdfcleanup.autosweep.CompositeCleanupStrategy; +import com.itextpdf.pdfcleanup.autosweep.RegexBasedCleanupStrategy; + +public class PdfContentRemover { + + private static final String SOURCE = "src/main/resources/baeldung-modified.pdf"; + private static final String DESTINATION = "src/main/resources/baeldung-cleaned.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); + removeContentFromDocument(pdfDocument); + pdfDocument.close(); + } + + private static void removeContentFromDocument(PdfDocument pdfDocument) throws IOException { + // 5.1. remove text + CompositeCleanupStrategy strategy = new CompositeCleanupStrategy(); + strategy.add(new RegexBasedCleanupStrategy("Baeldung")); + PdfCleaner.autoSweepCleanUp(pdfDocument, strategy); + + // 5.2. remove other areas + List cleanUpLocations = Arrays.asList(new PdfCleanUpLocation(1, new Rectangle(10, 50, 90, 70)), new PdfCleanUpLocation(2, new Rectangle(35, 400, 100, 35))); + PdfCleanUpTool cleaner = new PdfCleanUpTool(pdfDocument, cleanUpLocations, new CleanUpProperties()); + cleaner.cleanUp(); + } + +} diff --git a/pdf-2/src/main/java/com/baeldung/pdfedition/PdfEditor.java b/pdf-2/src/main/java/com/baeldung/pdfedition/PdfEditor.java new file mode 100644 index 0000000000..cfdf5917b8 --- /dev/null +++ b/pdf-2/src/main/java/com/baeldung/pdfedition/PdfEditor.java @@ -0,0 +1,86 @@ +package com.baeldung.pdfedition; + +import java.io.IOException; +import java.net.MalformedURLException; + +import com.itextpdf.forms.PdfAcroForm; +import com.itextpdf.forms.fields.PdfFormField; +import com.itextpdf.forms.fields.PdfTextFormField; +import com.itextpdf.io.image.ImageData; +import com.itextpdf.io.image.ImageDataFactory; +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfString; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.annot.PdfAnnotation; +import com.itextpdf.kernel.pdf.annot.PdfTextAnnotation; +import com.itextpdf.layout.Document; +import com.itextpdf.layout.element.Image; +import com.itextpdf.layout.element.Paragraph; +import com.itextpdf.layout.element.Table; +import com.itextpdf.layout.element.Text; +import com.itextpdf.layout.properties.UnitValue; + +public class PdfEditor { + + private static final String SOURCE = "src/main/resources/baeldung.pdf"; + private static final String DESTINATION = "src/main/resources/baeldung-modified.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); + addContentToDocument(pdfDocument); + } + + private static void addContentToDocument(PdfDocument pdfDocument) throws MalformedURLException { + // 4.1. add form + PdfFormField personal = PdfFormField.createEmptyField(pdfDocument); + personal.setFieldName("information"); + PdfTextFormField name = PdfFormField.createText(pdfDocument, new Rectangle(35, 400, 100, 30), "name", ""); + personal.addKid(name); + PdfAcroForm.getAcroForm(pdfDocument, true) + .addField(personal, pdfDocument.getFirstPage()); + + // 4.2. add new page + pdfDocument.addNewPage(1); + + // 4.3. add annotation + PdfAnnotation ann = new PdfTextAnnotation(new Rectangle(40, 435, 0, 0)).setTitle(new PdfString("name")) + .setContents("Your name"); + pdfDocument.getPage(2) + .addAnnotation(ann); + + // create document form pdf document + Document document = new Document(pdfDocument); + + // 4.4. add an image + ImageData imageData = ImageDataFactory.create("src/main/resources/baeldung.png"); + Image image = new Image(imageData).scaleAbsolute(550, 100) + .setFixedPosition(1, 10, 50); + document.add(image); + + // 4.5. add a paragraph + Text title = new Text("This is a demo").setFontSize(16); + Text author = new Text("Baeldung tutorials."); + Paragraph p = new Paragraph().setFontSize(8) + .add(title) + .add(" from ") + .add(author); + document.add(p); + + // 4.6. add a table + Table table = new Table(UnitValue.createPercentArray(2)); + table.addHeaderCell("#"); + table.addHeaderCell("company"); + table.addCell("name"); + table.addCell("baeldung"); + document.add(table); + + // close the document + // this automatically closes the pdfDocument, which then closes automatically the pdfReader and pdfWriter + document.close(); + } + +} diff --git a/pdf-2/src/main/java/com/baeldung/pdfedition/PdfTextReplacement.java b/pdf-2/src/main/java/com/baeldung/pdfedition/PdfTextReplacement.java new file mode 100644 index 0000000000..e81adff1ec --- /dev/null +++ b/pdf-2/src/main/java/com/baeldung/pdfedition/PdfTextReplacement.java @@ -0,0 +1,45 @@ +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)); + } + } + +} diff --git a/pdf-2/src/main/resources/baeldung-cleaned.pdf b/pdf-2/src/main/resources/baeldung-cleaned.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fd1f8cba5c347f284fbc71159111582d48890c8c GIT binary patch literal 16264 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 Tl^1}yK-}nlPkJ#0aqRyC3}X*K literal 0 HcmV?d00001 diff --git a/pdf-2/src/main/resources/baeldung-modified.pdf b/pdf-2/src/main/resources/baeldung-modified.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7a695620a6cda7f6dd4f27cd91fb9effa09380ad GIT binary patch literal 14364 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 B*vkL_ literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index b7c414fb0e..19104f709b 100644 --- a/pom.xml +++ b/pom.xml @@ -474,6 +474,7 @@ patterns-modules pdf + pdf-2 performance-tests persistence-modules protobuffer