Search in sources :

Example 1 with PDFGeneratorException

use of io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException in project commons by mosip.

the class PDFGeneratorImpl method mergePDF.

/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * io.mosip.kernel.core.pdfgenerator.spi.PDFGenerator#mergePDF(java.util.List)
	 */
@Override
public byte[] mergePDF(List<URL> pdfFiles) throws IOException {
    try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
        com.itextpdf.text.Document document = new com.itextpdf.text.Document();
        PdfCopy pdfCopy = new PdfCopy(document, byteArrayOutputStream);
        document.open();
        for (URL file : pdfFiles) {
            PdfReader reader = new PdfReader(file);
            pdfCopy.addDocument(reader);
            pdfCopy.freeReader(reader);
            reader.close();
        }
        document.close();
        return byteArrayOutputStream.toByteArray();
    } catch (IOException | DocumentException e) {
        throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), e.getMessage());
    }
}
Also used : ByteArrayOutputStream(java.io.ByteArrayOutputStream) PdfReader(com.itextpdf.text.pdf.PdfReader) IOException(java.io.IOException) Document(com.itextpdf.layout.Document) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) URL(java.net.URL) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException) PdfCopy(com.itextpdf.text.pdf.PdfCopy) DocumentException(com.itextpdf.text.DocumentException)

Example 2 with PDFGeneratorException

use of io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException in project commons by mosip.

the class PDFGeneratorImpl method signAndEncryptPDF.

@Override
public OutputStream signAndEncryptPDF(byte[] pdf, io.mosip.kernel.core.pdfgenerator.model.Rectangle rectangle, String reason, int pageNumber, Provider provider, CertificateEntry<X509Certificate, PrivateKey> certificateEntry, String password) throws IOException, GeneralSecurityException {
    OutputStream outputStream = new ByteArrayOutputStream();
    PdfReader pdfReader = null;
    PdfStamper pdfStamper = null;
    try {
        pdfReader = new PdfReader(pdf);
        pdfStamper = PdfStamper.createSignature(pdfReader, outputStream, '\0');
        LOGGER.debug("certificate entry {}", certificateEntry);
        LOGGER.info("provider {}", provider);
        if (password != null && !password.trim().isEmpty()) {
            pdfStamper.setEncryption(password.getBytes(), pdfOwnerPassword.getBytes(), com.itextpdf.text.pdf.PdfWriter.ALLOW_PRINTING, com.itextpdf.text.pdf.PdfWriter.ENCRYPTION_AES_256);
        }
        PdfSignatureAppearance signAppearance = pdfStamper.getSignatureAppearance();
        signAppearance.setReason(reason);
        // comment next line to have an invisible signature
        signAppearance.setVisibleSignature(new Rectangle(rectangle.getLlx(), rectangle.getLly(), rectangle.getUrx(), rectangle.getUry()), pageNumber, null);
        OcspClient ocspClient = new OcspClientBouncyCastle(null);
        TSAClient tsaClient = null;
        for (X509Certificate certificate : certificateEntry.getChain()) {
            String tsaUrl = CertificateUtil.getTSAURL(certificate);
            if (tsaUrl != null) {
                tsaClient = new TSAClientBouncyCastle(tsaUrl);
                break;
            }
            signAppearance.setCertificate(certificate);
        }
        List<CrlClient> crlList = new ArrayList<>();
        crlList.add(new CrlClientOnline(certificateEntry.getChain()));
        ExternalSignature pks = new PrivateKeySignature(certificateEntry.getPrivateKey(), SHA256, provider.getName());
        ExternalDigest digest = new BouncyCastleDigest();
        // Sign the document using the detached mode, CMS or CAdES equivalent.
        MakeSignature.signDetached(signAppearance, digest, pks, certificateEntry.getChain(), crlList, ocspClient, tsaClient, 0, CryptoStandard.CMS);
    } catch (DocumentException e) {
        LOGGER.error("Document Exception occur {}", e.getCause());
        throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), e.getMessage(), e);
    } finally {
        outputStream.close();
        if (pdfStamper != null) {
            closeQuietly(pdfStamper);
        }
        if (pdfReader != null) {
            pdfReader.close();
        }
    }
    return outputStream;
}
Also used : PrivateKeySignature(com.itextpdf.text.pdf.security.PrivateKeySignature) OcspClient(com.itextpdf.text.pdf.security.OcspClient) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OutputStream(java.io.OutputStream) Rectangle(com.itextpdf.text.Rectangle) ArrayList(java.util.ArrayList) CrlClientOnline(com.itextpdf.text.pdf.security.CrlClientOnline) PdfSignatureAppearance(com.itextpdf.text.pdf.PdfSignatureAppearance) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PdfReader(com.itextpdf.text.pdf.PdfReader) TSAClientBouncyCastle(com.itextpdf.text.pdf.security.TSAClientBouncyCastle) X509Certificate(java.security.cert.X509Certificate) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException) TSAClient(com.itextpdf.text.pdf.security.TSAClient) CrlClient(com.itextpdf.text.pdf.security.CrlClient) ExternalDigest(com.itextpdf.text.pdf.security.ExternalDigest) PdfStamper(com.itextpdf.text.pdf.PdfStamper) DocumentException(com.itextpdf.text.DocumentException) OcspClientBouncyCastle(com.itextpdf.text.pdf.security.OcspClientBouncyCastle) ExternalSignature(com.itextpdf.text.pdf.security.ExternalSignature) BouncyCastleDigest(com.itextpdf.text.pdf.security.BouncyCastleDigest)

Example 3 with PDFGeneratorException

use of io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException in project commons by mosip.

the class PDFGeneratorImpl method generate.

/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.kernel.core.pdfgenerator.spi.PDFGenerator#generate(java.io.
	 * InputStream)
	 */
@Override
public OutputStream generate(InputStream is) throws IOException {
    isValidInputStream(is);
    OutputStream os = new ByteArrayOutputStream();
    try {
        HtmlConverter.convertToPdf(is, os);
    } catch (Exception e) {
        throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), e.getMessage());
    }
    return os;
}
Also used : ByteArrayOutputStream(java.io.ByteArrayOutputStream) OutputStream(java.io.OutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) GeneralSecurityException(java.security.GeneralSecurityException) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException) IOException(java.io.IOException) DocumentException(com.itextpdf.text.DocumentException) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException)

Example 4 with PDFGeneratorException

use of io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException in project commons by mosip.

the class PDFGeneratorImpl method asPDF.

/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.kernel.core.pdfgenerator.spi.PDFGenerator#asPDF(java.util.List)
	 */
@Override
public byte[] asPDF(List<BufferedImage> bufferedImages) throws IOException {
    byte[] scannedPdfFile = null;
    try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
        PdfWriter pdfWriter = new PdfWriter(byteArrayOutputStream);
        Document document = new Document(new PdfDocument(pdfWriter));
        for (BufferedImage bufferedImage : bufferedImages) {
            Image image = new Image(ImageDataFactory.create(getImageBytesFromBufferedImage(bufferedImage)));
            image.scaleToFit(600, 750);
            document.add(image);
        }
        document.close();
        pdfWriter.close();
        scannedPdfFile = byteArrayOutputStream.toByteArray();
    } catch (IOException e) {
        throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), e.getMessage());
    }
    return scannedPdfFile;
}
Also used : PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) Document(com.itextpdf.layout.Document) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) BufferedImage(java.awt.image.BufferedImage) Image(com.itextpdf.layout.element.Image) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) BufferedImage(java.awt.image.BufferedImage) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException)

Example 5 with PDFGeneratorException

use of io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException in project commons by mosip.

the class PDFGeneratorImpl method generate.

/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.kernel.core.pdfgenerator.spi.PDFGenerator#generate(java.io.
	 * InputStream, java.lang.String)
	 */
@Override
public OutputStream generate(InputStream is, String resourceLoc) throws IOException {
    isValidInputStream(is);
    OutputStream os = new ByteArrayOutputStream();
    PdfWriter pdfWriter = new PdfWriter(os);
    PdfDocument pdfDoc = new PdfDocument(pdfWriter);
    ConverterProperties converterProperties = new ConverterProperties();
    pdfDoc.setTagged();
    PageSize pageSize = PageSize.A4.rotate();
    pdfDoc.setDefaultPageSize(pageSize);
    float screenWidth = CssUtils.parseAbsoluteLength("" + pageSize.getWidth());
    MediaDeviceDescription mediaDescription = new MediaDeviceDescription(MediaType.SCREEN);
    mediaDescription.setWidth(screenWidth);
    DefaultFontProvider dfp = new DefaultFontProvider(true, true, false);
    converterProperties.setMediaDeviceDescription(mediaDescription);
    converterProperties.setFontProvider(dfp);
    converterProperties.setBaseUri(resourceLoc);
    converterProperties.setCreateAcroForm(true);
    try {
        HtmlConverter.convertToPdf(is, pdfDoc, converterProperties);
    } catch (Exception e) {
        throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), e.getMessage());
    }
    return os;
}
Also used : ConverterProperties(com.itextpdf.html2pdf.ConverterProperties) PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) PageSize(com.itextpdf.kernel.geom.PageSize) DefaultFontProvider(com.itextpdf.html2pdf.resolver.font.DefaultFontProvider) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OutputStream(java.io.OutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) MediaDeviceDescription(com.itextpdf.html2pdf.css.media.MediaDeviceDescription) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) GeneralSecurityException(java.security.GeneralSecurityException) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException) IOException(java.io.IOException) DocumentException(com.itextpdf.text.DocumentException) PDFGeneratorException(io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException)

Aggregations

PDFGeneratorException (io.mosip.kernel.core.pdfgenerator.exception.PDFGeneratorException)5 ByteArrayOutputStream (java.io.ByteArrayOutputStream)5 DocumentException (com.itextpdf.text.DocumentException)4 IOException (java.io.IOException)4 PdfDocument (com.itextpdf.kernel.pdf.PdfDocument)3 OutputStream (java.io.OutputStream)3 PdfWriter (com.itextpdf.kernel.pdf.PdfWriter)2 Document (com.itextpdf.layout.Document)2 PdfReader (com.itextpdf.text.pdf.PdfReader)2 GeneralSecurityException (java.security.GeneralSecurityException)2 ConverterProperties (com.itextpdf.html2pdf.ConverterProperties)1 MediaDeviceDescription (com.itextpdf.html2pdf.css.media.MediaDeviceDescription)1 DefaultFontProvider (com.itextpdf.html2pdf.resolver.font.DefaultFontProvider)1 PageSize (com.itextpdf.kernel.geom.PageSize)1 Image (com.itextpdf.layout.element.Image)1 Rectangle (com.itextpdf.text.Rectangle)1 PdfCopy (com.itextpdf.text.pdf.PdfCopy)1 PdfSignatureAppearance (com.itextpdf.text.pdf.PdfSignatureAppearance)1 PdfStamper (com.itextpdf.text.pdf.PdfStamper)1 BouncyCastleDigest (com.itextpdf.text.pdf.security.BouncyCastleDigest)1