package com.tom_roush.pdfbox.pdmodel.interactive.digitalsignature.visible; import java.io.IOException; import com.tom_roush.pdfbox.cos.COSArray; import com.tom_roush.pdfbox.cos.COSName; import com.tom_roush.pdfbox.pdmodel.PDDocument; import com.tom_roush.pdfbox.pdmodel.PDPage; import com.tom_roush.pdfbox.pdmodel.PDResources; import com.tom_roush.pdfbox.pdmodel.common.PDRectangle; import com.tom_roush.pdfbox.pdmodel.common.PDStream; import com.tom_roush.pdfbox.pdmodel.graphics.form.PDFormXObject; import com.tom_roush.pdfbox.pdmodel.graphics.image.PDImageXObject; import com.tom_roush.pdfbox.pdmodel.interactive.form.PDAcroForm; import com.tom_roush.pdfbox.pdmodel.interactive.form.PDSignatureField; import com.tom_roush.pdfbox.util.awt.AffineTransform; import android.graphics.Bitmap; /** * That class builds visible signature template which will be added in our PDF document. * @author Vakhtang Koroghlishvili */ public interface PDFTemplateBuilder { /** * In order to create Affine Transform, using parameters * @param params */ void createAffineTransform(byte [] params); /** * Creates specified size page * @param properties */ void createPage(PDVisibleSignDesigner properties); /** * Creates template using page * @param page * @throws IOException */ void createTemplate(PDPage page) throws IOException; /** * Creates Acro forms in the template * @param template */ void createAcroForm(PDDocument template); /** * Creates signature fields * @param acroForm * @throws IOException */ void createSignatureField(PDAcroForm acroForm) throws IOException; /** * Creates PDSignatureField * @param pdSignatureField * @param page * @param signatureName * @throws IOException */ void createSignature(PDSignatureField pdSignatureField, PDPage page, String signatureName) throws IOException; /** * Create AcroForm Dictionary * @param acroForm * @param signatureField * @throws IOException */ void createAcroFormDictionary(PDAcroForm acroForm, PDSignatureField signatureField) throws IOException; /** * Creates SingatureRectangle * @param signatureField * @param properties * @throws IOException */ void createSignatureRectangle(PDSignatureField signatureField, PDVisibleSignDesigner properties) throws IOException; /** * Creates procSetArray of PDF,Text,ImageB,ImageC,ImageI */ void createProcSetArray(); /** * Creates signature image * @param template * @param image * @throws IOException */ void createSignatureImage(PDDocument template, Bitmap image) throws IOException; /** * * @param params */ void createFormaterRectangle(byte [] params); /** * * @param template */ void createHolderFormStream(PDDocument template); /** * Creates resources of form */ void createHolderFormResources(); /** * Creates Form * @param holderFormResources * @param holderFormStream * @param formrect */ void createHolderForm(PDResources holderFormResources, PDStream holderFormStream, PDRectangle formrect); /** * Creates appearance dictionary * @param holderForml * @param signatureField * @throws IOException */ void createAppearanceDictionary(PDFormXObject holderForml, PDSignatureField signatureField) throws IOException; /** * * @param template */ void createInnerFormStream(PDDocument template); /** * Creates InnerForm */ void createInnerFormResource(); /** * * @param innerFormResources * @param innerFormStream * @param formrect */ void createInnerForm(PDResources innerFormResources, PDStream innerFormStream, PDRectangle formrect); /** * * @param innerForm * @param holderFormResources */ void insertInnerFormToHolerResources(PDFormXObject innerForm, PDResources holderFormResources); /** * * @param template */ void createImageFormStream(PDDocument template); /** * Create resource of image form */ void createImageFormResources(); /** * Creates Image form * @param imageFormResources * @param innerFormResource * @param imageFormStream * @param formrect * @param affineTransform * @param img * @throws IOException */ void createImageForm(PDResources imageFormResources, PDResources innerFormResource, PDStream imageFormStream, PDRectangle formrect, AffineTransform affineTransform, PDImageXObject img) throws IOException; /** * Inject procSetArray * @param innerForm * @param page * @param innerFormResources * @param imageFormResources * @param holderFormResources * @param procSet */ void injectProcSetArray(PDFormXObject innerForm, PDPage page, PDResources innerFormResources, PDResources imageFormResources, PDResources holderFormResources, COSArray procSet); /** * injects appearance streams * @param holderFormStream * @param innterFormStream * @param imageFormStream * @param imageObjectName * @param imageName * @param innerFormName * @param properties * @throws IOException */ void injectAppearanceStreams(PDStream holderFormStream, PDStream innterFormStream, PDStream imageFormStream, COSName imageObjectName, COSName imageName, COSName innerFormName, PDVisibleSignDesigner properties) throws IOException; /** * just to create visible signature * @param template */ void createVisualSignature(PDDocument template); /** * adds Widget Dictionary * @param signatureField * @param holderFormResources * @throws IOException */ void createWidgetDictionary(PDSignatureField signatureField, PDResources holderFormResources) throws IOException; /** * * @return - PDF template Structure */ PDFTemplateStructure getStructure(); /** * Closes template * @param template * @throws IOException */ void closeTemplate(PDDocument template) throws IOException; }