org.apache.pdfbox.multipdf.Overlay Java Examples

The following examples show how to use org.apache.pdfbox.multipdf.Overlay. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: WaterMarkConverter.java    From workable-converter with GNU General Public License v3.0 6 votes vote down vote up
@Override
public boolean byStream(ConvertRequire require) throws ConvertFailedException {
    try {
        PDDocument pdfFile = PDDocument.load(require.getSrcStream());
        HashMap<Integer, String> overlayGuide = new HashMap<>();

        String tmpName = this.getTmpName(require.getWaterMarkRequire());
        //0 means add watermark in all page
        if (require.getWaterMarkRequire().getWaterMarkPage() == 0) {
            for (int i = 0; i < pdfFile.getNumberOfPages(); i++) {
                overlayGuide.put(i + 1, tmpName);
            }
        } else {
            overlayGuide.put(require.getWaterMarkRequire().getWaterMarkPage(), tmpName);
        }
        Overlay overlay = new Overlay();
        overlay.setInputPDF(pdfFile);
        overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
        overlay.overlay(overlayGuide);
        pdfFile.save(require.getDestStream());
    } catch (IOException e) {
        throw new ConvertFailedException(e.getMessage());
    }
    return true;
}
 
Example #2
Source File: OverlayDocuments.java    From testarea-pdfbox2 with Apache License 2.0 6 votes vote down vote up
/**
 * <a href="https://issues.apache.org/jira/browse/PDFBOX-4797">
 * Overlayed PDF file do not shows the difference
 * </a>
 * <br/>
 * <a href="https://issues.apache.org/jira/secure/attachment/12996277/10.pdf">
 * 10.pdf
 * </a>
 * <br/>
 * <a href="https://issues.apache.org/jira/secure/attachment/12996276/114.pdf">
 * 114.pdf
 * </a>
 * <p>
 * This test demonstrates how to use the blend mode when overlaying documents
 * for comparison.
 * </p>
 */
@Test
public void testOverlayWithMultiply() throws IOException {
    try (   InputStream file1 = getClass().getResourceAsStream("10.pdf");
            InputStream file2 = getClass().getResourceAsStream("114.pdf");
            PDDocument document1 = Loader.loadPDF(file1);
            PDDocument document2 = Loader.loadPDF(file2);
            Overlay overlayer = new Overlay()) {
        overlayer.setInputPDF(document1);
        overlayer.setAllPagesOverlayPDF(document2);
        try (   PDDocument result = overlayer.overlay(Collections.emptyMap()) ) {
            result.save(new File(RESULT_FOLDER, "10and114.pdf"));

            try (   PDPageContentStream canvas = new PDPageContentStream(result, result.getPage(5), AppendMode.PREPEND, false, false)) {
                PDExtendedGraphicsState extGState = new PDExtendedGraphicsState();
                extGState.setBlendMode(BlendMode.MULTIPLY);
                canvas.setGraphicsStateParameters(extGState);
            }
            result.save(new File(RESULT_FOLDER, "10and114multiply.pdf"));
        }
    }
}
 
Example #3
Source File: WaterMarkConverter.java    From workable-converter with GNU General Public License v3.0 5 votes vote down vote up
@Override
public boolean byFilePath(ConvertRequire require) throws ConvertFailedException {
    try {
        PDDocument pdfFile = PDDocument.load(new File(require.getWaitingFilePath()));
        HashMap<Integer, String> overlayGuide = new HashMap<>();

        String tmpName = this.getTmpName(require.getWaterMarkRequire());

        //0 means add watermark in all page
        if (require.getWaterMarkRequire().getWaterMarkPage() == 0) {
            for (int i = 0; i < pdfFile.getNumberOfPages(); i++) {
                overlayGuide.put(i + 1, tmpName);
            }
        } else {
            overlayGuide.put(require.getWaterMarkRequire().getWaterMarkPage(), tmpName);
        }
        Overlay overlay = new Overlay();
        overlay.setInputPDF(pdfFile);
        overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
        overlay.overlay(overlayGuide);
        pdfFile.save(require.getResultFilePath());
    } catch ( IOException e) {
        throw new ConvertFailedException(e.getMessage());
    }

    return true;
}
 
Example #4
Source File: WaterMarkConverter.java    From workable-converter with GNU General Public License v3.0 5 votes vote down vote up
@Override
public boolean byBase64(ConvertRequire require) throws ConvertFailedException {
    try {
        String tmpFileName = this.saveTmpFileByBase64(require.getSrcBase64(), "pdf");
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        PDDocument pdfFile = PDDocument.load(new File(tmpFileName));
        HashMap<Integer, String> overlayGuide = new HashMap<>();
        String tmpName = this.getTmpName(require.getWaterMarkRequire());
        //0 means add watermark in all page
        if (require.getWaterMarkRequire().getWaterMarkPage() == 0) {
            for (int i = 0; i < pdfFile.getNumberOfPages(); i++) {
                overlayGuide.put(i + 1, tmpName);
            }
        } else {
            overlayGuide.put(require.getWaterMarkRequire().getWaterMarkPage(), tmpName);
        }
        Overlay overlay = new Overlay();
        overlay.setInputPDF(pdfFile);
        overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
        overlay.overlay(overlayGuide);
        pdfFile.save(byteArrayOutputStream);
        require.setDestBase64(Base64FileTool.ByteArrayToBase64(byteArrayOutputStream.toByteArray()));
    } catch (IOException e) {
        throw new ConvertFailedException(e.getMessage());
    }
    return true;
}
 
Example #5
Source File: Misc.java    From RestServices with Apache License 2.0 5 votes vote down vote up
/**
   * Overlay a generated PDF document with another PDF (containing the company
   * stationary for example)
   *
   * @param context
   * @param generatedDocumentMendixObject The document to overlay
   * @param overlayMendixObject The document containing the overlay
* @param onTopOfContent if true, puts overlay position in the foreground, otherwise in the background
   * @return boolean
   * @throws IOException
   */
  public static boolean overlayPdf(IContext context, IMendixObject generatedDocumentMendixObject, IMendixObject overlayMendixObject, boolean onTopOfContent) throws IOException {
      LOG.trace("Retrieve generated document");
      try (
              PDDocument inputDoc = PDDocument.load(Core.getFileDocumentContent(context, generatedDocumentMendixObject));
              PDDocument overlayDoc = PDDocument.load(Core.getFileDocumentContent(context, overlayMendixObject));
              ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
          LOG.trace("Overlay PDF start, retrieve overlay PDF");

          LOG.trace("Perform overlay");
          Overlay overlay = new Overlay();
          overlay.setInputPDF(inputDoc);
          overlay.setDefaultOverlayPDF(overlayDoc);
          if (onTopOfContent == true) {
              overlay.setOverlayPosition(Overlay.Position.FOREGROUND);
          } else {
              overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
          }

          LOG.trace("Save result in output stream");

          overlay.overlay(new HashMap<>()).save(baos);

          LOG.trace("Duplicate result in input stream");
          try (InputStream overlayedContent = new ByteArrayInputStream(baos.toByteArray())) {
              LOG.trace("Store result in original document");
              Core.storeFileDocumentContent(context, generatedDocumentMendixObject, overlayedContent);
          }
      }

      LOG.trace("Overlay PDF end");
      return true;
  }
 
Example #6
Source File: Watermark.java    From arx with Apache License 2.0 5 votes vote down vote up
/**
 * Marks the document
 * @param document
 * @throws IOException
 */
public void mark(PDDocument document) throws IOException {   
    
    Overlay overlay = new Overlay();
    overlay.setInputPDF(document);
    overlay.setAllPagesOverlayPDF(watermark);
    overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
    overlay.overlay(new HashMap<Integer, String>());
}