Search in sources :

Example 1 with PdfRedactAnnotation

use of com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation in project i7j-pdfsweep by itext.

the class PdfAutoSweepTools method tentativeCleanUp.

/**
 * Perform tentative cleanup of areas of interest on a given {@link PdfPage}
 * This method will add all redaction annotations to the given page, allowing
 * the end-user to choose which redactions to keep or delete.
 *
 * @param pdfPage the page to clean up
 */
public void tentativeCleanUp(PdfPage pdfPage) {
    List<PdfCleanUpLocation> cleanUpLocations = getPdfCleanUpLocations(pdfPage);
    for (PdfCleanUpLocation loc : cleanUpLocations) {
        PdfString title = new PdfString("Annotation:" + annotationNumber);
        annotationNumber++;
        float[] color = loc.getCleanUpColor().getColorValue();
        // convert to annotation
        PdfAnnotation redact = new PdfRedactAnnotation(loc.getRegion()).setDefaultAppearance(new PdfString("Helvetica 12 Tf 0 g")).setTitle(title).put(PdfName.Subj, PdfName.Redact).put(PdfName.IC, new PdfArray(new float[] { 0f, 0f, 0f })).put(PdfName.OC, new PdfArray(color));
        pdfPage.addAnnotation(redact);
    }
}
Also used : PdfRedactAnnotation(com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation) PdfArray(com.itextpdf.kernel.pdf.PdfArray) PdfAnnotation(com.itextpdf.kernel.pdf.annot.PdfAnnotation) PdfCleanUpLocation(com.itextpdf.pdfcleanup.PdfCleanUpLocation) PdfString(com.itextpdf.kernel.pdf.PdfString)

Example 2 with PdfRedactAnnotation

use of com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation in project i7j-pdfsweep by itext.

the class PdfCleanUpToolTest method cleanUpTest45.

@Test
public void cleanUpTest45() throws IOException, InterruptedException {
    String input = INPUT_PATH + "emptyPdf.pdf";
    String output = OUTPUT_PATH + "emptyPdf.pdf";
    String cmp = INPUT_PATH + "cmp_emptyPdf.pdf";
    PdfAnnotation redactAnnotation = new PdfRedactAnnotation(new Rectangle(97, 405, 383, 40)).setOverlayText(new PdfString("OverlayTest")).setDefaultAppearance(new PdfString("/Helv 0 Tf 0 g"));
    PdfDocument pdfDocument = new PdfDocument(new PdfReader(input), new PdfWriter(output));
    pdfDocument.getFirstPage().addAnnotation(redactAnnotation);
    PdfCleaner.cleanUpRedactAnnotations(pdfDocument);
    pdfDocument.close();
    compareByContent(cmp, output, OUTPUT_PATH, "diff_45");
}
Also used : PdfRedactAnnotation(com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation) PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) PdfAnnotation(com.itextpdf.kernel.pdf.annot.PdfAnnotation) Rectangle(com.itextpdf.kernel.geom.Rectangle) PdfString(com.itextpdf.kernel.pdf.PdfString) PdfReader(com.itextpdf.kernel.pdf.PdfReader) PdfString(com.itextpdf.kernel.pdf.PdfString) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) IntegrationTest(com.itextpdf.test.annotations.type.IntegrationTest) ExtendedITextTest(com.itextpdf.test.ExtendedITextTest) Test(org.junit.Test)

Example 3 with PdfRedactAnnotation

use of com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation in project i7j-pdfsweep by itext.

the class PdfCleanUpToolTest method cleanUpTest46.

@Test
public void cleanUpTest46() throws IOException {
    String input = INPUT_PATH + "emptyPdf.pdf";
    String output = OUTPUT_PATH + "emptyPdf.pdf";
    PdfAnnotation redactAnnotation = new PdfRedactAnnotation(new Rectangle(97, 405, 383, 40)).setOverlayText(new PdfString("OverlayTest"));
    try (PdfReader reader = new PdfReader(input);
        PdfWriter writer = new PdfWriter(output);
        PdfDocument pdfDocument = new PdfDocument(reader, writer)) {
        pdfDocument.getFirstPage().addAnnotation(redactAnnotation);
        Exception e = Assert.assertThrows(PdfException.class, () -> PdfCleaner.cleanUpRedactAnnotations(pdfDocument));
        Assert.assertEquals(CleanupExceptionMessageConstant.DEFAULT_APPEARANCE_NOT_FOUND, e.getMessage());
    }
}
Also used : PdfRedactAnnotation(com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation) PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) PdfAnnotation(com.itextpdf.kernel.pdf.annot.PdfAnnotation) Rectangle(com.itextpdf.kernel.geom.Rectangle) PdfString(com.itextpdf.kernel.pdf.PdfString) PdfReader(com.itextpdf.kernel.pdf.PdfReader) PdfString(com.itextpdf.kernel.pdf.PdfString) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) IOException(java.io.IOException) PdfException(com.itextpdf.kernel.exceptions.PdfException) IntegrationTest(com.itextpdf.test.annotations.type.IntegrationTest) ExtendedITextTest(com.itextpdf.test.ExtendedITextTest) Test(org.junit.Test)

Example 4 with PdfRedactAnnotation

use of com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation in project i7j-pdfsweep by itext.

the class PdfCleanUpTool method removeRedactAnnots.

/**
 * Remove the redaction annotations.
 * This method is called after the annotations are processed.
 *
 * @throws IOException
 */
private void removeRedactAnnots() throws IOException {
    for (PdfRedactAnnotation annotation : redactAnnotations.keySet()) {
        PdfPage page = annotation.getPage();
        if (page != null) {
            page.removeAnnotation(annotation);
            PdfPopupAnnotation popup = annotation.getPopup();
            if (popup != null) {
                page.removeAnnotation(popup);
            }
        }
        PdfCanvas canvas = new PdfCanvas(page);
        PdfStream redactRolloverAppearance = annotation.getRedactRolloverAppearance();
        PdfString overlayText = annotation.getOverlayText();
        Rectangle annotRect = annotation.getRectangle().toRectangle();
        if (redactRolloverAppearance != null) {
            drawRolloverAppearance(canvas, redactRolloverAppearance, annotRect, redactAnnotations.get(annotation));
        } else if (overlayText != null && !overlayText.toUnicodeString().isEmpty()) {
            drawOverlayText(canvas, overlayText.toUnicodeString(), annotRect, annotation.getRepeat(), annotation.getDefaultAppearance(), annotation.getJustification());
        }
    }
}
Also used : PdfRedactAnnotation(com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation) PdfPopupAnnotation(com.itextpdf.kernel.pdf.annot.PdfPopupAnnotation) Rectangle(com.itextpdf.kernel.geom.Rectangle) PdfCanvas(com.itextpdf.kernel.pdf.canvas.PdfCanvas) PdfPage(com.itextpdf.kernel.pdf.PdfPage) PdfStream(com.itextpdf.kernel.pdf.PdfStream) PdfString(com.itextpdf.kernel.pdf.PdfString)

Aggregations

PdfString (com.itextpdf.kernel.pdf.PdfString)4 PdfRedactAnnotation (com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation)4 Rectangle (com.itextpdf.kernel.geom.Rectangle)3 PdfAnnotation (com.itextpdf.kernel.pdf.annot.PdfAnnotation)3 PdfDocument (com.itextpdf.kernel.pdf.PdfDocument)2 PdfReader (com.itextpdf.kernel.pdf.PdfReader)2 PdfWriter (com.itextpdf.kernel.pdf.PdfWriter)2 ExtendedITextTest (com.itextpdf.test.ExtendedITextTest)2 IntegrationTest (com.itextpdf.test.annotations.type.IntegrationTest)2 Test (org.junit.Test)2 PdfException (com.itextpdf.kernel.exceptions.PdfException)1 PdfArray (com.itextpdf.kernel.pdf.PdfArray)1 PdfPage (com.itextpdf.kernel.pdf.PdfPage)1 PdfStream (com.itextpdf.kernel.pdf.PdfStream)1 PdfPopupAnnotation (com.itextpdf.kernel.pdf.annot.PdfPopupAnnotation)1 PdfCanvas (com.itextpdf.kernel.pdf.canvas.PdfCanvas)1 PdfCleanUpLocation (com.itextpdf.pdfcleanup.PdfCleanUpLocation)1 IOException (java.io.IOException)1