Search in sources :

Example 16 with PdfReader

use of com.itextpdf.text.pdf.PdfReader in project trainning by fernandotomasio.

the class ReportUtil method setBackground.

public byte[] setBackground(byte[] documentSource, String url) {
    PdfReader reader = null;
    PdfStamper stamp = null;
    ByteArrayOutputStream byteArray = null;
    try {
        byteArray = new ByteArrayOutputStream();
        reader = new PdfReader(documentSource);
        int n = reader.getNumberOfPages();
        // Create a stamper that will copy the document to a new file
        stamp = new PdfStamper(reader, byteArray);
        int i = 1;
        PdfContentByte under;
        PdfContentByte over;
        Image image = Image.getInstance(url);
        image.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
        image.setAbsolutePosition(0, 0);
        // image.setAbsolutePosition(200, 400);
        while (i <= n) {
            // Watermark under the existing page
            under = stamp.getUnderContent(i);
            under.addImage(image);
            // Text over the existing page
            // over = stamp.getOverContent(i);
            // over.beginText();
            // over.setFontAndSize(bf, 18);
            // over.showText("page " + i);
            // over.endText();
            i++;
        }
        stamp.close();
    } catch (DocumentException ex) {
        Logger.getLogger(ReportUtil.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return byteArray.toByteArray();
}
Also used : PdfStamper(com.itextpdf.text.pdf.PdfStamper) DocumentException(com.itextpdf.text.DocumentException) PdfContentByte(com.itextpdf.text.pdf.PdfContentByte) PdfReader(com.itextpdf.text.pdf.PdfReader) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) Image(com.itextpdf.text.Image)

Example 17 with PdfReader

use of com.itextpdf.text.pdf.PdfReader in project pancm_project by xuwujing.

the class DownPdf method createAllPdf.

public void createAllPdf() throws Exception {
    // 填充创建pdf
    PdfReader reader = null;
    PdfStamper stamp = null;
    try {
        reader = new PdfReader("E:/module.pdf");
        SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd");
        String times = simp.format(new Date()).trim();
        // 创建生成报告名称
        String root = "E:/pdf" + File.separator;
        if (!new File(root).exists())
            new File(root).mkdirs();
        File deskFile = new File(root, times + ".pdf");
        stamp = new PdfStamper(reader, new FileOutputStream(deskFile));
        // 取出报表模板中的所有字段
        AcroFields form = stamp.getAcroFields();
        // 填充数据
        form.setField("name", "zhangsan");
        form.setField("sex", "男");
        form.setField("age", "15");
        // 报告生成日期
        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
        String generationdate = dateformat.format(new Date());
        form.setField("generationdate", generationdate);
        stamp.setFormFlattening(true);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (stamp != null) {
            stamp.close();
        }
        if (reader != null) {
            reader.close();
        }
    }
}
Also used : PdfStamper(com.itextpdf.text.pdf.PdfStamper) FileOutputStream(java.io.FileOutputStream) AcroFields(com.itextpdf.text.pdf.AcroFields) PdfReader(com.itextpdf.text.pdf.PdfReader) SimpleDateFormat(java.text.SimpleDateFormat) File(java.io.File) Date(java.util.Date)

Example 18 with PdfReader

use of com.itextpdf.text.pdf.PdfReader in project spring-cloud-digital-sign by SpringForAll.

the class Sign method sign.

/**
 * 单多次签章通用
 * @param src string source pdf
 * @param target string target pdf
 * @param signatureInfos SignatureInfo
 */
public static void sign(String src, String target, SignatureInfo... signatureInfos) {
    InputStream inputStream = null;
    FileOutputStream outputStream = null;
    ByteArrayOutputStream result = new ByteArrayOutputStream();
    try {
        inputStream = new FileInputStream(src);
        for (SignatureInfo signatureInfo : signatureInfos) {
            ByteArrayOutputStream tempArrayOutputStream = new ByteArrayOutputStream();
            PdfReader reader = new PdfReader(inputStream);
            // 创建签章工具PdfStamper ,最后一个boolean参数是否允许被追加签名
            PdfStamper stamper = PdfStamper.createSignature(reader, tempArrayOutputStream, '\0', null, true);
            // 获取数字签章属性对象
            PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
            appearance.setReason(signatureInfo.getReason());
            appearance.setLocation(signatureInfo.getLocation());
            // 设置签名的签名域名称,多次追加签名的时候,签名预名称不能一样,图片大小受表单域大小影响(过小导致压缩)
            appearance.setVisibleSignature(signatureInfo.getFieldName());
            // 读取图章图片
            Image image = Image.getInstance(signatureInfo.getImagePath());
            appearance.setSignatureGraphic(image);
            appearance.setCertificationLevel(signatureInfo.getCertificationLevel());
            // 设置图章的显示方式,如下选择的是只显示图章(还有其他的模式,可以图章和签名描述一同显示)
            appearance.setRenderingMode(signatureInfo.getRenderingMode());
            /**
             * 粘贴图片
             */
            // PdfContentByte over = stamper.getOverContent(1);
            // image.setAbsolutePosition(0 , 0);
            // image.scaleToFit(300 , 109);
            // over.addImage(image);
            // 摘要算法
            ExternalDigest digest = new BouncyCastleDigest();
            // 签名算法
            ExternalSignature signature = new PrivateKeySignature(signatureInfo.getPk(), signatureInfo.getDigestAlgorithm(), null);
            // 调用itext签名方法完成pdf签章
            MakeSignature.signDetached(appearance, digest, signature, signatureInfo.getChain(), null, null, null, 0, signatureInfo.getSubfilter());
            // 定义输入流为生成的输出流内容,以完成多次签章的过程
            inputStream = new ByteArrayInputStream(tempArrayOutputStream.toByteArray());
            result = tempArrayOutputStream;
        }
        outputStream = new FileOutputStream(new File(target));
        outputStream.write(result.toByteArray());
        outputStream.flush();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (null != outputStream) {
                outputStream.close();
            }
            if (null != inputStream) {
                inputStream.close();
            }
            if (null != result) {
                result.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Also used : PdfSignatureAppearance(com.itextpdf.text.pdf.PdfSignatureAppearance) PdfReader(com.itextpdf.text.pdf.PdfReader) Image(com.itextpdf.text.Image) PdfStamper(com.itextpdf.text.pdf.PdfStamper)

Aggregations

PdfReader (com.itextpdf.text.pdf.PdfReader)18 PdfStamper (com.itextpdf.text.pdf.PdfStamper)9 IOException (java.io.IOException)8 PdfContentByte (com.itextpdf.text.pdf.PdfContentByte)7 PdfImportedPage (com.itextpdf.text.pdf.PdfImportedPage)5 ByteArrayOutputStream (java.io.ByteArrayOutputStream)5 FileOutputStream (java.io.FileOutputStream)5 DocumentException (com.itextpdf.text.DocumentException)4 BaseFont (com.itextpdf.text.pdf.BaseFont)4 File (java.io.File)4 SimpleDateFormat (java.text.SimpleDateFormat)4 Date (java.util.Date)4 AcroFields (com.itextpdf.text.pdf.AcroFields)3 PdfPTable (com.itextpdf.text.pdf.PdfPTable)3 Document (com.itextpdf.text.Document)2 Image (com.itextpdf.text.Image)2 PdfSignatureAppearance (com.itextpdf.text.pdf.PdfSignatureAppearance)2 CurriculoMinimoDTO (com.tomasio.projects.trainning.dto.CurriculoMinimoDTO)2 CoreException (com.tomasio.projects.trainning.exeption.CoreException)2 Test (org.junit.Test)2