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());
}
}
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;
}
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;
}
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;
}
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;
}
Aggregations