java根据模板生成pdf文件并导出(iText)

java根据模板生成pdf文件并导出

首先你的制作一个pdf模板:

1.先用word做出模板界面


2.文件另存为pdf格式文件


3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件(注:如果没有这个软件可以通过我的百度云下载,链接:http://pan.baidu.com/s/1pL2klzt)如果无法下载可以联系博主。


4.点击右边的"准备表单"按钮,选择"测试.pdf"选择开始

进去到编辑页面,打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框(其实无需任何操作,一般情况下不需要修改什么东西,至少我没有修改哦。如果你想修改fill1等信息,可以进行修改)




5.做完上面的工作后,直接"另存为"将pdf存储就可以


*****************************************************************************

以上部分是制作pdf模板操作,上述完成后,就开始通过程序来根据pdf模板生成pdf文件了,上java程序:

1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖

  1. <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
  2. <dependency>
  3. <groupId>com.itextpdf </groupId>
  4. <artifactId>itextpdf </artifactId>
  5. <version>5.5.10 </version>
  6. </dependency>
  1. <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
  2. <dependency>
  3.     <groupId>com.itextpdf </groupId>
  4.     <artifactId>itext-asian </artifactId>
  5.     <version>5.2.0 </version>
  6. </dependency>
2.下面就是生成pdf代码了

  1. import java.io.ByteArrayOutputStream;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import com.itextpdf.text.Document;
  5. import com.itextpdf.text.DocumentException;
  6. import com.itextpdf.text.pdf.AcroFields;
  7. import com.itextpdf.text.pdf.PdfCopy;
  8. import com.itextpdf.text.pdf.PdfImportedPage;
  9. import com.itextpdf.text.pdf.PdfReader;
  10. import com.itextpdf.text.pdf.PdfStamper;
  11. public class Snippet {
  12. // 利用模板生成pdf
  13. public static void fillTemplate() {
  14. // 模板路径
  15. String templatePath = "E:/测试3.pdf";
  16. // 生成的新文件路径
  17. String newPDFPath = "E:/ceshi.pdf";
  18. PdfReader reader;
  19. FileOutputStream out;
  20. ByteArrayOutputStream bos;
  21. PdfStamper stamper;
  22. try {
  23. out = new FileOutputStream(newPDFPath); // 输出流
  24. reader = new PdfReader(templatePath); // 读取pdf模板
  25. bos = new ByteArrayOutputStream();
  26. stamper = new PdfStamper(reader, bos);
  27. AcroFields form = stamper.getAcroFields();
  28. String[] str = { "123456789", "TOP__ONE", "男", "1991-01-01", "130222111133338888", "河北省保定市" };
  29. int i = 0;
  30. java.util.Iterator<String> it = form.getFields().keySet().iterator();
  31. while (it.hasNext()) {
  32. String name = it.next().toString();
  33. System.out.println(name);
  34. form.setField(name, str[i++]);
  35. }
  36. stamper.setFormFlattening( true); // 如果为false那么生成的PDF文件还能编辑,一定要设为true
  37. stamper.close();
  38. Document doc = new Document();
  39. PdfCopy copy = new PdfCopy(doc, out);
  40. doc.open();
  41. PdfImportedPage importPage = copy.getImportedPage( new PdfReader(bos.toByteArray()), 1);
  42. copy.addPage(importPage);
  43. doc.close();
  44. } catch (IOException e) {
  45. System.out.println( 1);
  46. } catch (DocumentException e) {
  47. System.out.println( 2);
  48. }
  49. }
  50. public static void main(String[] args) {
  51. fillTemplate();
  52. }
  53. }
3.运行结果如下

*********************************************************************

如果没有模板,就行自己生成pdf文件保存到磁盘:下面的方法可以实现:

  1. public static void test1(){ //生成pdf
  2. Document document = new Document();
  3. try {
  4. PdfWriter.getInstance(document, new FileOutputStream( "E:/1.pdf"));
  5. document.open();
  6. document.add( new Paragraph( "hello word"));
  7. document.close();
  8. } catch (Exception e) {
  9. System.out.println( "file create exception");
  10. }
  11. }
但是上述方法中包含中文时就会出现问题,所以可以使用下面这行代码实现,所使用的jar包,上面的两个依赖都包含了:

  1. public static void test1_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 (Exception e) {
  9. e.printStackTrace();
  10. }
  11. Document document = new Document();
  12. try {
  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用iText库根据模板导出PDF文件,您可以按照以下步骤进行操作: 1. 首先,您需要将iText库添加到您的Java项目中。您可以在iText的官方网站(https://itextpdf.com/)上下载并导入相应的jar文件。 2. 加载模板PDF文件。您可以使用iTextPdfReader类来加载模板文件,例如: ```java PdfReader reader = new PdfReader("template.pdf"); ``` 3. 创建一个新的PdfWriter对象,将其与输出PDF文件相关联。您可以使用iTextPdfWriter类来实现这一点,例如: ```java PdfWriter writer = new PdfWriter("output.pdf"); ``` 4. 创建一个新的PdfDocument对象,并将其与模板文件PdfWriter对象相关联。这将使您能够编辑和导出PDF文件。例如: ```java PdfDocument document = new PdfDocument(reader, writer); ``` 5. 获取特定页面的PdfPage对象,并创建一个PdfCanvas对象以在页面上绘制内容。例如: ```java PdfPage page = document.getPage(1); // 获取第一页 PdfCanvas canvas = new PdfCanvas(page); canvas.beginText(); canvas.setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD), 12); canvas.moveText(100, 700); canvas.showText("Hello, World!"); canvas.endText(); ``` 在这个示例中,我们在第一页上添加了一个文本元素。 6. 关闭文档并保存生成PDF文件。例如: ```java document.close(); ``` 这样,您就可以使用iText库根据模板导出PDF文件了。请注意,iText库还提供了许多其他功能,例如添加表格、图片等,您可以根据自己的需求进行更多的PDF编辑操作。 希望对您有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值