Search in sources :

Example 1 with AcroFields

use of com.itextpdf.text.pdf.AcroFields in project portal by ixinportal.

the class PDFUtils method readPDF2.

public static ByteArrayOutputStream readPDF2(InputStream is, String enterpriseName, String keySn, String certSn, String mPhone) throws Exception {
    // 模版文件目录
    PdfReader reader = new PdfReader(is);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    PdfStamper ps = new PdfStamper(reader, bos);
    AcroFields s = ps.getAcroFields();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    s.setFieldProperty("enterpriseName", "textfont", bfChinese, null);
    s.setFieldProperty("mPhone", "textfont", bfChinese, null);
    s.setFieldProperty("keySn", "textfont", bfChinese, null);
    s.setFieldProperty("certSn", "textfont", bfChinese, null);
    s.setFieldProperty("nowdate", "textfont", bfChinese, null);
    s.setField("enterpriseName", enterpriseName);
    s.setField("keySn", keySn);
    s.setField("certSn", certSn);
    s.setField("mPhone", mPhone);
    s.setField("nowdate", format.format(new Date()));
    // 这句不能少
    ps.setFormFlattening(true);
    ps.close();
    reader.close();
    return bos;
}
Also used : PdfStamper(com.itextpdf.text.pdf.PdfStamper) AcroFields(com.itextpdf.text.pdf.AcroFields) BaseFont(com.itextpdf.text.pdf.BaseFont) PdfReader(com.itextpdf.text.pdf.PdfReader) ByteArrayOutputStream(java.io.ByteArrayOutputStream) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date)

Example 2 with AcroFields

use of com.itextpdf.text.pdf.AcroFields in project mica2 by obiba.

the class PdfUtils method fillOutForm.

public static void fillOutForm(byte[] input, OutputStream output, Map<String, Object> values) throws IOException, DocumentException {
    try (PdfReaderAutoclosable pdfReader = new PdfReaderAutoclosable(input);
        PdfStamperAutoclosable stamper = new PdfStamperAutoclosable(pdfReader, output)) {
        stamper.setFormFlattening(true);
        AcroFields fields = stamper.getAcroFields();
        values.forEach((k, v) -> {
            if (v instanceof Boolean)
                setField(fields, k, (Boolean) v);
            else
                setField(fields, k, v);
        });
    }
}
Also used : AcroFields(com.itextpdf.text.pdf.AcroFields)

Example 3 with AcroFields

use of com.itextpdf.text.pdf.AcroFields in project mica2 by obiba.

the class PdfUtils method addImage.

public static void addImage(byte[] input, OutputStream output, Image image, String placeholder) throws IOException, DocumentException {
    try (PdfReaderAutoclosable pdfReader = new PdfReaderAutoclosable(input);
        PdfStamperAutoclosable pdfStamper = new PdfStamperAutoclosable(pdfReader, output)) {
        AcroFields form = pdfStamper.getAcroFields();
        List<AcroFields.FieldPosition> positions = form.getFieldPositions(placeholder);
        positions.forEach(p -> {
            image.scaleToFit(p.position.getWidth(), p.position.getHeight());
            image.setAbsolutePosition(p.position.getLeft() + (p.position.getWidth() - image.getScaledWidth()) / 2, p.position.getBottom() + (p.position.getHeight() - image.getScaledHeight()) / 2);
            PdfContentByte cb = pdfStamper.getOverContent(p.page);
            try {
                cb.addImage(image);
            } catch (DocumentException e) {
                throw Throwables.propagate(e);
            }
        });
    }
}
Also used : DocumentException(com.itextpdf.text.DocumentException) AcroFields(com.itextpdf.text.pdf.AcroFields) PdfContentByte(com.itextpdf.text.pdf.PdfContentByte)

Example 4 with AcroFields

use of com.itextpdf.text.pdf.AcroFields in project portal by ixinportal.

the class PDFUtils method readPDF.

public static ByteArrayOutputStream readPDF(InputStream is, String enterpriseName, String realName, String mPhone, String email, String info, String info2) throws Exception {
    // 模版文件目录
    PdfReader reader = new PdfReader(is);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    PdfStamper ps = new PdfStamper(reader, bos);
    AcroFields s = ps.getAcroFields();
    // Item item = null;
    // 
    // Map<String, Item> fieldMap = s.getFields(); // pdf表单相关信息展示
    // for (Entry<String, Item> entry : fieldMap.entrySet()) {
    // String name = entry.getKey(); // name就是pdf模版中各个文本域的名字
    // item = (Item) entry.getValue();
    // System.out.println("[name]:" + name + ", [value]: " + item);
    // }
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    s.setFieldProperty("enterpriseName", "textfont", bfChinese, null);
    s.setFieldProperty("realName", "textfont", bfChinese, null);
    s.setFieldProperty("mPhone", "textfont", bfChinese, null);
    s.setFieldProperty("email", "textfont", bfChinese, null);
    s.setFieldProperty("department", "textfont", bfChinese, null);
    s.setFieldProperty("certNo", "textfont", bfChinese, null);
    s.setFieldProperty("nowdate", "textfont", bfChinese, null);
    s.setField("enterpriseName", enterpriseName);
    s.setField("realName", realName);
    s.setField("mPhone", mPhone);
    s.setField("email", email);
    s.setField("department", info);
    s.setField("certNo", info2);
    s.setField("nowdate", format.format(new Date()));
    // 这句不能少
    ps.setFormFlattening(true);
    ps.close();
    reader.close();
    return bos;
}
Also used : PdfStamper(com.itextpdf.text.pdf.PdfStamper) AcroFields(com.itextpdf.text.pdf.AcroFields) BaseFont(com.itextpdf.text.pdf.BaseFont) PdfReader(com.itextpdf.text.pdf.PdfReader) ByteArrayOutputStream(java.io.ByteArrayOutputStream) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date)

Example 5 with AcroFields

use of com.itextpdf.text.pdf.AcroFields 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)

Aggregations

AcroFields (com.itextpdf.text.pdf.AcroFields)5 PdfReader (com.itextpdf.text.pdf.PdfReader)3 PdfStamper (com.itextpdf.text.pdf.PdfStamper)3 SimpleDateFormat (java.text.SimpleDateFormat)3 Date (java.util.Date)3 BaseFont (com.itextpdf.text.pdf.BaseFont)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 DocumentException (com.itextpdf.text.DocumentException)1 PdfContentByte (com.itextpdf.text.pdf.PdfContentByte)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1