itextpd f生成 pdf 文件

简介: 一、简介  itextpdf 是一个开源的允许你去创建和操作PDF文档的库。它使的开发者可以提高web和其他应用来动态地生成或操作PDF文档。通过iText 中的Document和PdfWriter类,我们可以以数据库、xml文件、或者其他数据源为源头创建PDF文档。

一、简介
  itextpdf 是一个开源的允许你去创建和操作PDF文档的库。它使的开发者可以提高web和其他应用来动态地生成或操作PDF文档。通过iText 中的Document和PdfWriter类,我们可以以数据库、xml文件、或者其他数据源为源头创建PDF文档。有如下三种方式:

  • 使用高级别的对象如Chunk,Phrase,Paragraph,List等待。这些对象通常被称为iText的基本构建块。
  • 使用低级别的功能。使用pdfContentByte,由一系列的类映射到每一个操作符的方法,操作数可以在Adobe的成像模型。这个类也有很多便利的方法来画弧线,圆形、矩形和文本在绝对位置。
  • 使用Java版本的iText的抽象类Graphics2D的实现类PdfGraphics2D(在iTextSharp中不可用)。

iText附带大量的类,支持不同的图像类型,颜色空间、字体、便携式集合。有功能的提高可访问性的PDF文件,以确保PDF是可用的、等等。itextpdf的官网如下:

http://www.itextpdf.com/

二、示例
  1、相关依赖如下:

<!-- pdf -->
<dependency>
     <groupId>com.itextpdf</groupId>
     <artifactId>itextpdf</artifactId>
     <version>5.5.6</version>
     <type>jar</type>
   </dependency>

   <dependency>
<groupId>com.itextpdf.tool</groupId>
    <artifactId>xmlworker</artifactId>
    <version>5.5.6</version>
</dependency>
<!-- 中文支持 -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>

  2、示例

  1 package com.test.excel;
  2 
  3 import java.io.FileNotFoundException;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 
  7 import org.junit.Test;
  8 
  9 import com.itextpdf.text.BaseColor;
 10 import com.itextpdf.text.Chunk;
 11 import com.itextpdf.text.Document;
 12 import com.itextpdf.text.DocumentException;
 13 import com.itextpdf.text.Element;
 14 import com.itextpdf.text.Font;
 15 import com.itextpdf.text.PageSize;
 16 import com.itextpdf.text.Paragraph;
 17 import com.itextpdf.text.Phrase;
 18 import com.itextpdf.text.Rectangle;
 19 import com.itextpdf.text.pdf.BaseFont;
 20 import com.itextpdf.text.pdf.PdfPTable;
 21 import com.itextpdf.text.pdf.PdfWriter;
 22 
 23 /**
 24  * 创建PDF
 25  */
 26 public class PDFCreate {
 27 
 28     /**
 29      * 创建PDF
 30      */
 31     @Test
 32     public void createPDF() {
 33         // 页面大小
 34         Rectangle rect = new Rectangle(PageSize.B5.rotate());
 35         // 页面背景色
 36         rect.setBackgroundColor(BaseColor.WHITE);
 37         // 创建一个文档
 38         Document document = new Document(rect);
 39         try {
 40             // 获取PdfWriter实例
 41             PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("c:/test/testPdF.pdf"));
 42 
 43             // PDF版本(默认1.4)
 44             writer.setPdfVersion(PdfWriter.PDF_VERSION_1_7);
 45 
 46             // 文档属性
 47             document.addTitle("测试文档标题");
 48             document.addAuthor("张三");
 49             document.addSubject("PDF测试");
 50             document.addKeywords("pdf");
 51             document.addCreator("张三");
 52 
 53             // 页边空白
 54             document.setMargins(10, 20, 30, 40);
 55 
 56             // 解决中文支持问题
 57             BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
 58             com.itextpdf.text.Font fontChinese = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);
 59 
 60             // 标题
 61             Paragraph toptile = new Paragraph("标题", new Font(bfChinese, 14, Font.NORMAL));
 62             toptile.setAlignment(Paragraph.ALIGN_CENTER);
 63             toptile.add(new Paragraph("   "));
 64 
 65             
 66             Paragraph pragraph = new Paragraph("这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落,这是一个段落", fontChinese);
 67             pragraph.setAlignment(Element.ALIGN_LEFT);
 68             pragraph.add(new Paragraph("   "));
 69 
 70         
 71 
 72             // 添加表格
 73             PdfPTable table = new PdfPTable(4);
 74             String content = "你好 : ";
 75             for (int i = 0; i < 200; i++)
 76                 table.addCell(new Phrase(new Chunk(content + i, fontChinese)));
 77 
 78             // 使用 HttpServletResponse 进行下载
 79 //            response.setContentType("application/pdf; charset=UTF-8");
 80 //            response.setHeader("Content-Disposition", "inline; filename=" + new String("test.pdf".getBytes(), "UTF-8"));
 81 //            PdfWriter.getInstance(document, response.getOutputStream());
 82             
 83             // 打开文档
 84             document.open();
 85             
 86             // 添加内容
 87             document.add(toptile);
 88             document.add(pragraph);
 89             document.add(table);
 90             // 关闭文档
 91             document.close();
 92         } catch (FileNotFoundException e) {
 93             e.printStackTrace();
 94         } catch (DocumentException e) {
 95             e.printStackTrace();
 96         } catch (IOException e) {
 97             e.printStackTrace();
 98         }
 99     }
100 }

 

目录
相关文章
|
7天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
16 1
|
11天前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
17 1
|
26天前
|
文字识别 开发工具 数据安全/隐私保护
印刷文字识别产品使用合集之可以识别一张电子发票有多页(多张图片,或者一个PDF文件)的这种发票吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
26天前
|
编解码 文字识别
印刷文字识别操作报错合集之在尝试将PDF文件转换为图片时出现了问题,具体的错误代码是415,该怎么处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
7天前
|
移动开发 JavaScript 前端开发
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
|
8天前
在线免费压缩pdf文件
在线免费压缩pdf文件
11 0
|
2月前
|
Java Apache
Java将word、excel文件转成pdf文件
【5月更文挑战第26天】Java将word、excel文件转成pdf文件
191 1
|
2月前
|
存储 Java
java使用pdfbox 3.0版本删除pdf文件中指定字符所在行,生成新的pdf文件
【5月更文挑战第25天】java使用pdfbox 3.0版本删除pdf文件中指定字符所在行,生成新的pdf文件
96 1
分享:批量多目录图片如何转换PDF,一次性转换多级目录批量的PDF的转换,合并,输出另存等问题,图片转PDF文件,批量图片转PDF文件,多级目录的图片转PDF文件,并且保存到不同的地方,全部搞定
本文介绍了如何高效地将图片转换为PDF,包括单张、多张及多级目录下的图片转换和合并。提供了软件下载链接(百度网盘、腾讯云盘),软件操作简便,支持保存原目录或自定义新目录。转换选项包括单个文件、多个文件夹单独转换以及合并转换。用户可通过双击路径访问源图片和转换结果。该工具特别解决了多级目录图片批量转换的难题,实现保存地址的自由设定,满足不同业务需求。
|
2月前
|
Windows
推荐:如何批量根据PDF文件名批量查找PDF文件,复制到指定地方保存,通过文件名批量复制文件,按照文件名批量复制文件,根据文件名批量提取文件
该文介绍了一个批量查找PDF文件(不限于找PDF)的工具,用于在多级文件夹中快速查找并复制特定文件。通过下载提供的软件,用户可以加载PDF库,输入文件名列表,设置操作参数(如保存路径、复制或删除)及搜索模式。软件能高效执行,例如在1.1秒内完成对数千文件中的37个目标文件的复制,显著提升了工作效率,避免了手动逐个查找和复制的繁琐。