diff options
author | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-06-08 08:12:21 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2016-08-17 16:45:49 +0200 |
commit | c4e41301d0746ce57044a3aa41375cff3a9f2b5e (patch) | |
tree | bdf13d0a0d7fae97215a84286e31ff894bacc979 /pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureProperties.java | |
parent | a7945fff6ca14d35ac75039712736dddc6d48e90 (diff) | |
download | pdf-as-4-c4e41301d0746ce57044a3aa41375cff3a9f2b5e.tar.gz pdf-as-4-c4e41301d0746ce57044a3aa41375cff3a9f2b5e.tar.bz2 pdf-as-4-c4e41301d0746ce57044a3aa41375cff3a9f2b5e.zip |
initial pdfbox-2 commit
Diffstat (limited to 'pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureProperties.java')
-rw-r--r-- | pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureProperties.java | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureProperties.java b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureProperties.java new file mode 100644 index 00000000..db96767a --- /dev/null +++ b/pdf-as-pdfbox-2/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/pdfbox2/PDFAsVisualSignatureProperties.java @@ -0,0 +1,149 @@ +/******************************************************************************* + * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> + * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a + * joint initiative of the Federal Chancellery Austria and Graz University of + * Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + ******************************************************************************/ +package at.gv.egiz.pdfas.lib.impl.stamping.pdfbox2; + +import java.io.IOException; +import java.util.List; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageTree; +import org.apache.pdfbox.pdmodel.interactive.digitalsignature.visible.PDVisibleSigProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.common.exceptions.PdfAsWrappedIOException; +import at.gv.egiz.pdfas.common.settings.ISettings; +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; +import at.gv.egiz.pdfas.lib.impl.pdfbox2.PDFBOXObject; +import at.knowcenter.wag.egov.egiz.pdf.PositioningInstruction; + +public class PDFAsVisualSignatureProperties extends PDVisibleSigProperties { + + private static final Logger logger = LoggerFactory.getLogger(PDFAsVisualSignatureProperties.class); + + private ISettings settings; + + private PDFBoxTable main; + + private PDFAsVisualSignatureDesigner designer; + + private float rotationAngle = 0; + + private PDDocument origDoc; + + private SignatureProfileSettings signatureProfileSettings; + + private String alternativeTableCaption=""; + + public PDFAsVisualSignatureProperties(ISettings settings, PDFBOXObject object, + PdfBoxVisualObject visObj, PositioningInstruction pos, SignatureProfileSettings signatureProfileSettings) { + this.settings = settings; + this.signatureProfileSettings = signatureProfileSettings; + try { + main = visObj.getTable(); + } catch (Throwable e) { + e.printStackTrace(); + } + this.rotationAngle = pos.getRotation(); + try { + origDoc = object.getDocument(); + + designer = new PDFAsVisualSignatureDesigner(origDoc, pos.getPage(), this, pos.isMakeNewPage()); + PDPageTree pages = origDoc.getDocumentCatalog().getPages(); + PDPage page = null; + if(pos.isMakeNewPage()) { + page = (PDPage) pages.get(pages.getCount()-1); + } else { + page = (PDPage) pages.get(pos.getPage() - 1); + } + logger.debug("PAGE width {} HEIGHT {}", designer.getPageWidth(), designer.getPageHeight()); + logger.debug("POS X {} Y {}", pos.getX(), pos.getY()); + int rot = page.getRotation(); + float posy = designer.getPageHeight() - pos.getY(); + float posx = pos.getX(); + /*switch (rot) { + case 90: // CW + posx = designer.getPageHeight() - pos.getY(); + posy = designer.getPageWidth() - main.getWidth(); + break; + case 180: + posy = pos.getY(); + posx = designer.getPageWidth() - pos.getX(); + break; + case 270: // CCW + posx = pos.getY(); + posy = designer.getPageWidth() - pos.getX(); + break; + }*/ + logger.debug("ROT {}", rot); + logger.debug("COORD X {} Y {}", posx, posy); + designer.coordinates(posx, posy); + float[] form_rect = new float[] {0,0, main.getWidth() + 2, main.getHeight() + 2}; + logger.debug("AP Rect: {} {} {} {}", form_rect[0], form_rect[1], form_rect[2], form_rect[3]); + designer.formaterRectangleParams(form_rect); + //this.setPdVisibleSignature(designer); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + @Override + public void buildSignature() throws IOException { + PDFAsVisualSignatureBuilder builder = new PDFAsVisualSignatureBuilder(this, this.settings, designer); + PDFAsTemplateCreator creator = new PDFAsTemplateCreator(builder); + try { + setVisibleSignature(creator.buildPDF(designer, this.origDoc)); + } catch (PdfAsException e) { + throw new PdfAsWrappedIOException(e); + } + } + + public PDFBoxTable getMainTable() { + return main; + } + + + public float getRotation() { + return this.rotationAngle; + } + + public PDFAsVisualSignatureDesigner getDesigner() { + return designer; + } + + public SignatureProfileSettings getSignatureProfileSettings() { + return signatureProfileSettings; + } + + public String getAlternativeTableCaption() { + return alternativeTableCaption; + } + + public void setAlternativeTableCaption(String alternativeTableCaption) { + this.alternativeTableCaption = alternativeTableCaption; + } + +} |