001/*
002 * (C) Copyright 2016 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 * Contributors:
017 *     Michael Vachette
018 */
019package org.nuxeo.ecm.platform.pdf.service;
020
021import org.nuxeo.ecm.core.api.Blob;
022import org.nuxeo.ecm.platform.pdf.service.watermark.WatermarkProperties;
023
024/**
025 * @since 8.10
026 */
027public interface PDFTransformationService {
028
029    /**
030     *
031     * @return the watermark default properties
032     */
033    WatermarkProperties getDefaultProperties();
034
035
036    /**
037     * Add a text watermark to the input PDF blob
038     *
039     * @param input A PDF blob
040     * @param text The text to use for the watermark
041     * @param properties the properties of the watermark
042     * @return a new PDF file
043     */
044    Blob applyTextWatermark(Blob input, String text, WatermarkProperties properties);
045
046    /**
047     * Add an Image watermark to the input PDF blob
048     *
049     * @param input A PDF blob
050     * @param watermark The image to use for the watermark
051     * @param properties the properties of the watermark
052     * @return a new PDF file
053     */
054    Blob applyImageWatermark(Blob input, Blob watermark, WatermarkProperties properties);
055
056
057    /**
058     * Overlay a PDF file on top of the input Blob
059     *
060     * @param input The original PDF file
061     * @param overlayBlob The PDF file to overlay on top inBlob
062     * @return a new PDF file
063     */
064    Blob overlayPDF(Blob input, Blob overlayBlob);
065
066}