标签:

废话少说,不懂itext干啥用的直接去百度吧。

***************制作模板*******************

1.先用word做出界面

20180110174857865651.png

2.再转换成pdf格式

20180110174857867604.png

20180110174857868580.png

3.用Adobe Acrobat 打开你刚刚用word转换成的pdf

20180110174857870533.png

会出现如下界面

20180110174857878345.png

下一步

20180110174857891040.png

点击浏览,选择刚才你转换好的pdf

20180110174857892993.png

下一步

4.打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框,有的人说要改成中文字体,可是我没有改一样成功啦

20180110174857893969.png

5.一般情况下不需要修改什么东西,至少我没有修改哦

20180110174857894946.png

6.直接另存为就行了

************************上程序********************************

准备:itext的jar包包:官网:http://sourceforge.net/projects/itext/files/

因为是利用模板,所以不需要建立字体来解决中文不显示的问题

public void fillTemplate(){//利用模板生成pdf

//模板路径

String templatePath = "pdfFolder/template_demo.pdf";

//生成的新文件路径

String newPDFPath = "pdfFolder/newPdf.pdf";

PdfReader reader;

FileOutputStream out;

ByteArrayOutputStream bos;

PdfStamper stamper;

try {

out = new FileOutputStream(newPDFPath);//输出流

reader = new PdfReader(templatePath);//读取pdf模板

bos = new ByteArrayOutputStream();

stamper = new PdfStamper(reader, bos);

AcroFields form = stamper.getAcroFields();

String[] str = {"123456789","小鲁","男","1994-00-00",

"130222111133338888"

,"河北省唐山市"};

int i = 0;

java.util.Iterator it = form.getFields().keySet().iterator();

while(it.hasNext()){

String name = it.next().toString();

System.out.println(name);

form.setField(name, str[i++]);

}

stamper.setFormFlattening(true);//如果为false那么生成的PDF文件还能编辑,一定要设为true

stamper.close();

Document doc = new Document();

PdfCopy copy = new PdfCopy(doc, out);

doc.open();

PdfImportedPage importPage = copy.getImportedPage(

new PdfReader(bos.toByteArray()), 1);

copy.addPage(importPage);

doc.close();

} catch (IOException e) {

System.out.println(1);

} catch (DocumentException e) {

System.out.println(2);

}

}

模板如图:

20180110174857896899.png

程序结果如图:

20180110174857897875.png

可以看到,少了一个鲁......于是我把模板的表单域的字体改成了宋体,结果中文一个也不显示了,所以我判断是他那个字体支持的中文比较少吧,先不管这个了

现在都两点多了(不是下午两点多啊。。。)

到此时,利用模板生成pdf已经over了,我再说说入门的hello word 级别的程序吧,反正闲着也是闲着

程序一:

1 public void test1(){//生成pdf

2 Document document = newDocument();3 try{4 PdfWriter.getInstance(document, new FileOutputStream("pdfFolder/1.pdf"));5 document.open();6 document.add(new Paragraph("hello word"));7 document.close();8 } catch (FileNotFoundException |DocumentException e) {9 System.out.println("file create exception");10 }11 }

结果:

20180110174857899828.png

可是如果要输出中文呢,上面这个就不行了,就要用到语言包了

最新亚洲语言包:http://sourceforge.net/projects/itext/files/extrajars/

20180110174857901781.png

1 public voidtest1_1(){2 BaseFont bf;3 Font font = null;4 try{5 bf = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H",6 BaseFont.NOT_EMBEDDED);//创建字体7 font = new Font(bf,12);//使用字体8 } catch (DocumentException |IOException e) {9 e.printStackTrace();10 }11 Document document = newDocument();12 try{13 PdfWriter.getInstance(document, new FileOutputStream("pdfFolder/2.pdf"));14 document.open();15 document.add(new Paragraph("hello word 你好 世界",font));//引用字体16 document.close();17 } catch (FileNotFoundException |DocumentException e) {18 System.out.println("file create exception");19 }20 }

结果如下:

20180110174857903734.png

另外一种方法:我不用第三方语言包:

我是在工程目录里面新建了一个字体文件夹Font,然后把宋体的字体文件拷贝到这个文件夹里面了

上程序:

1 public voidtest1_2(){2 BaseFont bf;3 Font font = null;4 try{5 bf = BaseFont.createFont("Font/simsun.ttc,1", //注意这里有一个,16 BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);7 font = new Font(bf,12);8 } catch (DocumentException |IOException e) {9 e.printStackTrace();10 }11 Document document = newDocument();12 try{13 PdfWriter.getInstance(document, new FileOutputStream("pdfFolder/3.pdf"));14 document.open();15 document.add(new Paragraph("使用中文另外一种方法",font));16 document.close();17 } catch (FileNotFoundException |DocumentException e) {18 System.out.println("file create exception");19 }20 }

结果“:

20180110174857905687.png

我如果换成:华康少女文字W5(P).TTC,即

bf = BaseFont.createFont("Font/华康少女文字W5(P).TTC,1", //simsun.ttc

BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

20180110174857907640.png

哈哈,我喜欢图文并茂的教程02:44:58

标签:

java 填写pdf_新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)...相关推荐

  1. 利用itext操作pdf从数据库导出大量数据--添加水印(四)

    [原始需求] 通过SQL及JDBC模式导出各类业务数据,以PDF文件格式存放,要求该文件只能查看和打印(不能编辑和篡改),文件要有公司相关标志和水印功能. [需求分析] 1. 通过SQL及JDBC模式 ...

  2. 利用itext操作pdf从数据库导出大量数据--功能汇总(一)

    [原始需求] 通过SQL及JDBC模式导出各类业务数据,以PDF文件格式存放,要求该文件只能查看和打印(不能编辑和篡改),文件要有公司相关标志和水印功能. [需求分析] 1. 通过SQL及JDBC模式 ...

  3. 利用itext复制pdf模板并插入图片

    java源码 String conName =getContName(map);try {Map beans = new HashMap(1);beans.put("name",c ...

  4. java使用itext填充pdf模板,超简单教学,有手就行

    java使用itext填充pdf模板 1.先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线 2.将Word另存为pdf 3.打开电脑中的Adobe Acrobat pro DC(这 ...

  5. 使用itext创建PDF模板

    1.在pom.xml文件中添加itextpdf依赖 <dependency> <groupId>com.itextpdf</groupId> <artifac ...

  6. 淘宝特价版拉新赚钱的页面怎么做?我终于弄懂了

    淘宝的同胞兄弟特价版,虽然长的朴实无华以至于经常被人问起淘宝特价版靠谱吗?2021年淘宝特价版可谓大火了一把,阿里巴巴不计成本的大力推广淘宝特价版,目的也非常明确要把拼多多占领的市场掠夺回来.最近还传 ...

  7. java 写数据到pdf模板_java利用itext填写pdf模板并导出

    1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf 会出现如下界面 下一步 点击浏览,选择刚才你转换好的pdf 下一步 4.打开后它 ...

  8. Java SE 6 新特性: Java DB 和 JDBC 4.0

    http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...

  9. PDF模板报表导出(Java+Acrobat+itext)

    1. 首先要安装Adobe Acrobat,装好之后用Acrobat从一个word,excel或者pdf中转换一个pdf模板,我做的模板很简单,直接写一个简单的word再生成一个pdf表单,之后编辑文 ...

最新文章

  1. 钢铁侠“变身”AI布道师?小罗伯特·唐尼这次推出一部AI科普纪录片
  2. Hivr:基于BCH的社交应用
  3. 天下会 - 搜索实战系列之视频
  4. 入门案例Maven搭建SpringBoot工程
  5. spellman斯派曼电源维修XRB100N100K4405
  6. C# CAD批量转换为图片
  7. 荣耀继承者android,荣耀继承者后期阵容推荐,一套万金油阵容介绍给大家
  8. 前缀和差分 精讲(一维、二维、附例题!)
  9. 摄影构图学83年绝版_摄影到底是一门技术还是艺术?在摄影创作中,如何提高审美意境?...
  10. 一键在Web端把CAD图自动分割成多张图纸并导出子图或图片
  11. 清华2021计算机学院复试,清华大学2021年硕士研究生复试名单汇总(持续更新中)...
  12. 微信企业号的五个典型案例分享
  13. 飞浆论文复现:用于图像到图像翻译的具有自适应层实例化的非监督的生成对抗网络
  14. 车辆调度 数学建模c语言,2019数学建模国赛C题–机场的出租车调度问题
  15. java 定义整数数组_JAVA中数组的正确定义方法是什么?
  16. Alkyne-PEG-Amine,Alkyne-PEG-NH2 炔基PEG氨基
  17. BIOS Setup设置方法
  18. 【VC】accent conversion 口音转换论文
  19. 全球及中国电动车头盔行业销售前景态势及投资盈利分析报告2021-2027年
  20. c51语言1秒延时程序,KeilC51程序设计中几种精确延时方法

热门文章

  1. 苹果5概念机_一加 9 Pro概念渲染图来了;小米手环5即将发布;明天,红米第一款WiFi 6路由器登场;苹果智能眼镜细节曝光...
  2. [备忘] 查看浏览器中flash swf的trace调试输出
  3. 如何下载chrome插件离线安装包
  4. nginx: [emerg] CreateFile() “D:\soft\nginx-1.18.0/logs/nginx.pid“ failed (5: Access is denied)
  5. shell实现毫秒级时钟
  6. fixedsys字体 win7_win7系统显示默认隐藏字体的操作方法
  7. 繁易FStudio 下载项目显示打包失败。Pack failed. Return value is -101 解决方法
  8. 第一周—Fortran语言学习
  9. 弘辽科技:拼多多店铺星级有用吗?什么是星级?
  10. RxSwift之UI控件UIButton与UIBarButtonItem扩展的使用