itext pdf 导出,文本域值超出文本域宽度限制的处理

 

private void fillPdfTemplateData(File file, Map params, String targetFileUrl) throws IOException {
        PdfDocument pdf = new PdfDocument(new PdfReader(file), new PdfWriter(targetFileUrl));
        PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);//第二个参数,如果不显示值设置为true
        Map fields = form.getFormFields();
        String path = this.getClass().getResource("/").getPath();
        path = path.substring(0, path.indexOf("classes") - 1) + "/classes/font/simsun.ttc,1";

        //使用指定字体如--微软雅黑
        PdfFont font = PdfFontFactory.createFont(path, PdfEncodings.IDENTITY_H, BaseFont.EMBEDDED);
        //PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);

       //遍历值域,填充对应值
        Iterator it = fields.keySet().iterator();
        while (it.hasNext()) {
            String name = it.next().toString();
            logger.info("pdf中标签参数名称:"+name);
            logger.info(name+"对应的值:"+params.get(name));

            //设置字体,设置值,设置字体大小为自动
            fields.get(name).setFont(font).setValue(params.get(name) == null ? "" : params.get(name)).setFontSizeAutoScale();
            //fields.get(name).setFont(font).setValue(params.get(name));
        }
        form.flattenFields();
        pdf.close();
    }


    效果图:

itext pdf 导出,文本域值超出文本域宽度限制的处理_第1张图片

你可能感兴趣的:(java)