001/* Copyright (C) 2014 konik.io
002 *
003 * This file is part of the Konik library.
004 *
005 * The Konik library is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * The Konik library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>.
017 */
018package io.konik.harness;
019
020import io.konik.zugferd.Invoice;
021
022import java.io.InputStream;
023import java.io.OutputStream;
024
025/**
026 * The Invoice Appender interface. A PDF Carriage implement this interface to append the invoice model to a PDF.
027 * 
028 * @author Vadim Bauer
029 */
030public interface InvoiceAppender {
031
032   /**
033    * Append invoice to a PDF.
034    * 
035    * @param invoice the invoice
036    * @param inputPdf the input pdf.
037    * @return the resulting PDF.
038    */
039   byte[] append(Invoice invoice, byte[] inputPdf);
040
041   /**
042    * Append invoice to a PDF.
043    * 
044    * @param invoice the invoice
045    * @param inputPdf the input pdf
046    * @param resultingPdf the resulting pdf
047    */
048   void append(Invoice invoice, InputStream inputPdf, OutputStream resultingPdf);
049
050   /**
051    * Append invoice to a PDF.
052    *
053    * @param invoice the invoice
054    * @param inputStreamPdf the input stream pdf file
055    * @return the byte[] of the resulting pdf
056    */
057   byte[] append(Invoice invoice, InputStream inputStreamPdf);
058
059}