PDF组件iText

一、下载iText组件

  • 依赖jar包
        iText-2.1.2u.jar包,运行程序时把这个包加入类路径中即可。
        如果生成的PDF文件中需要出现中文、日文、韩文字符,则需要iTextAsian.jar包,
            运行时将其导入到类路径中。

二、输出pdf的基本步骤

  • 使用iText生成一个pdf的步骤如下:
        1、创建Document对象
            Document document = new Document();
            其中,Document有3个构造方法,如下:
                public Document();
                public Document(Rectangle pageSize);
                public Document(Rectangle pageSize, 
                    int marginLeft, int marginRight, int marginTop, int marginBottom);
                pageSize是纸张类型的大小,通常可以使用PageSize中的常量来表示,
                    例如PageSize.A4表示A4纸张。
                marginLeft、marginRight、marginTop、marginBottom分别是
                    正文距离页边的左、右、上、下的补白大小。
        2、创建书写器(Writer)与document对象关联,通过书写器可以将文档写入磁盘中。
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutPutStream("E:\\itext.pdf"));
        3、打开文档
            document.open();
        4、写入文档内容
            document.add(new Paragraph("Hello iText"));
            写入的文档内容可以是多种类型,这里是带格式的文本Paragraph,
                还可以是Phrase、Table、Graphic对象等。
        5、关闭文档
            document.close();

三、设置pdf文件属性

  • 在打开Document对象写入内容之前,可以设置文档的属性,包括文档的标题、
        主题、作者、关键字、创建者、生产者、创建日期等,方法如以下:
        public boolean addTitle(String title);
        public boolean addSubject(String subject);
        public boolean addAuthor(String author);
        public boolean addKeywords(String keywords);
        public boolean addCreator(String creator);
        public boolean addProducer(String producer);
        public boolean addCreationDate();

四、插入文本

  • iText中用文本块(Chunk)、短语(Phrase)和段落(Paragraph)处理文本:
        文本块是处理文本的最小单位,由一串格式(包括字体、颜色、大小)的字符串组成。
        短语由一个或多个文本块组成,短语也可以设定字体,
            但对于其中已设置过字体的文本块无效。
        段落由一个或多个文本块或短语组成,
            相当于Word文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。
            另外也可以设定段落的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。
        new Paragraph("Hello World, Hello iText", 
            FontFactory.getFont(FontFactory.COURIER, 12, Font.BOLDITALIC));
        除了字体外,还可以设置段落的缩进等属性,这些方法如下:
            public void setAlignment(int alignment):
                设置对齐方式,1为居中对齐,2为右对齐,3为左对齐,默认为左对齐。
            public void setFirstLineIndent(float firstLineIndent):设置首行缩进。
            public void setSpacingBefore(float spacing):设置段前距。
            public void setSpacingAfter(float spacing):设置段后距。

五、文本的中文处理

  • 默认的iText字体设置不支持中文字体,如果在pdf中使用过了中文字符,需要下载
        亚洲语言字体iTextAsian.jar。通过下面的代码就可以在文档中显示中文了。
        BaseFont bfChinese = BaseFont.createFont(
            "STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font fontChinese = new Font(bfChinese, 12, Font.NORMAL);
        Paragraph pragraph = new Paragraph("你好,这是中文", FontChinese);
        document.add(pragraph);

六、插入表格

  • iText中处理表格的类为com.lowagie.text.Table和
        com.lowagie.text.PDF.PDFPTable两个。对于比较简单的表格处理可以用Table类;
        但是如果要处理复杂的表格,就需要使用PDFPTable进行处理。
            Table table = new Table(3, 2);
            table.setBorderColor(new Color(220, 100, 100));
            table.setPadding(5);
            table.setSpacing(3);
            table.setBorderWidth(3);
            Cell cell = new Cell(" Header 1 ");
            table.addCell(cell);
            cell = new Cell(" Header 2 ");
            table.addCell(cell);
            table.addCell(" Cell 1 ");
            table.addCell(" Cell 2 ");
            table.addCell(" Cell 3 ");
            document.add(table);
        1、Table的构造函数有3个:
            Table(int columns);
            Table(int columns, int rows);
            Table(Properties attributes).
            参数columns、rows、attributes分别为表格的列数、行数、表格属性。
                创建表格时必须指定表格的列数,而对于行数可以不用指定,默认行数为1。
        2、往表格中添加单元格(cell)时,按自左向右、从上而下的次序添加。
            使用addCell()方法添加单元格。
        3、对于复杂的表格,可以设置单元格的合并列cell.setColspan(2)
            和合并行cell.Rowspan(2)。

七、插入图像

  • iText中处理表格的类为com.lowagie.text.Image,
        目前iText支持的图像格式有GIF、Jpeg、PNG、wmf等格式。
        对于不同的图像格式,iText用同样的构造函数自动识别图像格式。
            document.open();
            Image bmp = Image.getInstance("E:\\Java_logo.jpg");
            bmp.scalePercent(25f);
            document.add(bmp);
            document.close();
        创建Image对象后,还可以设置一些常用的属性,这些属性有:
            1、设置图像的位置:public void setAlignment(int alignment),
                其中alignment可使用Image类中的常量。
                Image.RIGHT、Image.MIDDLE、Image.LEFT分别指右对齐、居中、左对齐。
                Image.TEXTWRAP、Image.UNDERLYING
                    分别指文字绕图形显示、图形作为文字的背景显示。
                这两种参数可以结合以达到预期的效果,
                    如setAlignment(Image.RIGHT|Image.TEXTWRAP)
                    显示的效果为图像右对齐,文字围绕图像显示。
            2、设置图像的大小,方法分别有:
                public void scaleAbsolute(int newWidth, int newHeight)。
                public void scalePercent(int percent):设置缩放比例。
                public void scalePercent(int percentX, int percentY)。
            3、设置图像旋转:public void setRotation(double r),其中r为弧度,
                如果旋转角度为30度,则参数r=Math.PI/6。

八、在Servlet中输出pdf

  • 在Servlet中输出pdf需要注意:
        1、需要设置响应类型为application/pdf
            response.setContentType("application/pdf");
        2、需要将生成的pdf数据流写入响应客户端数据流中。
            stream.writeTo(out);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Free Spire.PDF for .NET 是 Spire.PDF for .NET 的免费版本,无需购买即可用于个人或商业用途。使用该组件,程序员可以 在.NET 程序中创建、读取、写入、编辑和操作 PDF 文档。这个控件能支持的功能十分全面,例如文档安全性设置(电子签名),提取 PDF 文本、附件、图片,PDF 合并和拆分,更新 Metadata,设置 Section,绘制图形、插入图片、表格制作和加工、导入数据等等。除此以外,Spire.PDF 还可以将 TXT 文本、图片、HTML 高质量地转换为 PDF 文件格式。 主要功能如下: 1.高质量的文档转换。Free Spire.PDF for .NET 支持 PDF 到 Word、XPS、SVG、EMF、Text 和图片(EMF、JPG、PNG、BMP、TIFF)的格式转换。也支持从 XML、HTML、RTF、XPS、Text、图片等格式生成 PDF 文档。 2.文档操作及域功能。支持合并、拆分 PDF 文档,在原有的 PDF 文档页添加覆盖页。同时,Spire.PDF 提供导入、邮戳、小册子功能,以及帮助用户从数据库读取数据并填充到域的域填写功能。 3. 安全性设置。用户可以通过设置密码和数字签名来保护 PDF 文档。用户密码和所有者密码可以确定加密的 PDF 文档的可读性、可修改性、是否可打印等有选择性的限制。与此同时,数字签名作为一个更有效的方法,可以应用于维护和对PDF文档进行身份验证。 4.数据提取。支持快速高效地从 PDF 文档提取图片、文本、PDF 分页,以及附件。 5.文件属性设置。支持对 Metadata、文件属性、页面方向、页面大小进行设置。其中文件属性包括文件限制(打印、页面提取、加评论等方面的权限限制)以及文件描述属性(文件名称、作者、主题、关键字等)。使用 Spire.PDF for .NET,用户还可以根据自己阅读喜好设定默认打开页码,分页模式,缩放比例和打印缩放,等等。 6.其他功能。 支持多种语言,支持字体格式、对齐方式设置。 绘制文字,图片,图形。 支持添加图层,透明图像,Color Space,条形码到 PDF。 支持 PDF/A-1b、PDF/x1a:2001 格式。 添加梯状图形和矢量图像到指定位置。 添加并格式化表格。 插入交互元素,例如添加自定义的 Annotation、Action、JavaScript、附件、书签等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值