`

iText生成PDF

阅读更多

iText生成PDF【转载】

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 

 用iText生成PDF文档需要5个步骤: 

 ① 建立com.itextpdf.text.Document对象的实例。 
    Document document = new Document();  
 ② 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。 
    PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));  
 ③ 打开文档。 
   document.open();  
 ④ 向文档中添加内容。 
    document.add(new Paragraph("Hello World"));  
 ⑤ 关闭文档。 
    document.close();  

 通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为"Hello World"。 

import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.util.HashMap;  
import java.util.Map;  
  
import com.itextpdf.text.Document;  
import com.itextpdf.text.DocumentException;  
import com.itextpdf.text.Element;  
import com.itextpdf.text.Font;  
import com.itextpdf.text.Image;  
import com.itextpdf.text.PageSize;  
import com.itextpdf.text.Paragraph;  
import com.itextpdf.text.pdf.BaseFont;  
import com.itextpdf.text.pdf.PdfPCell;  
import com.itextpdf.text.pdf.PdfPTable;  
import com.itextpdf.text.pdf.PdfWriter;  
  
/** 
 * iText 学习 
 * Paragraph 缩进的段落 
 * Chapter PDF文档中的章节 
 * Font 字体规范 
 * List 一个列表,顺序包含许多ListItems 
 * Table 单元格的表 
 *  
 * @author Bing 
 * 
 */  
public class PDF4iText {  
    /** 
     *  
     * @param os  PDF输出的目录 
     *  
     * 以下参数是params所对应的Key-value 
     * @param imgPath Logo图片地址 
     *  
     * @param userName 领用人 
     * @param userDept 领用部门 
     * @param borrowTime 领用时间 
     * @param borrowRemark 领用事由 
     * @param borrowDate 领用日期 
     *  
     * @param assetName 固定资产名称 
     * @param assetModel 固定资产型号 
     * @param assetConfig 固定资产配置 
     * @param assetSequence 固定资产序列号 
     *  
     */  
    public static void createPDF(OutputStream os, Map<String, String> params) {  
  
        Document document = new Document(PageSize.A4, 50, 50, 100, 10);// 页面大小,左右上下页边距  
          
        try {  
            PdfWriter.getInstance(document, os);  
            // 添加PDF文档的一些信息  
            document.addTitle("Hello World Example"); // 标题  
            document.addSubject("This example explains how to add metadata."); // 主题  
            document.addAuthor("xuxb"); // 作者  
            document.addCreator("My program using iText"); // 创建者  
            document.addKeywords("iText");  // 关键字  
              
            BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);  
//          BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\msyh.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);  
//          BaseFont baseFont1 = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);  
            BaseFont baseFont1 = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);  
              
            Font simsun = new Font(baseFont, 12, Font.NORMAL);  
            Font italic = new Font(baseFont, 10, Font.ITALIC);  
            Font STSong = new Font(baseFont1, 10, Font.NORMAL);  
            Font bold = new Font(baseFont1, 12, Font.BOLD);  
              
            // 打开文档,将要写入内容  
            document.open();  
              
            float[] f = {40,60};  
            PdfPTable header = new PdfPTable(f);   
            header.setSpacingBefore(5f);  
            header.setWidthPercentage(100);  
            header.getDefaultCell().setBorder(0);  
//          LOGO KJLink  
            PdfPCell h1 = new PdfPCell(Image.getInstance(params.get("imgPath")));  
            h1.setBorder(0);  
            h1.setBorderWidthBottom(0.2f);  
            h1.setPaddingTop(25f);  
//          h1.setFixedHeight(100);  
            header.addCell(h1);  
            PdfPCell h2 = new PdfPCell(new Paragraph("固定资产领用单", italic));  
            h2.setBorder(0);  
            h2.setBorderWidthBottom(0.2f);  
            h2.setPaddingTop(20f);  
            h2.setHorizontalAlignment(Element.ALIGN_RIGHT);  
            header.addCell(h2);  
              
            document.add(header);  
              
            PdfPTable table = new PdfPTable(6); // Code 1  
            table.setWidthPercentage(100);  
            table.setSpacingBefore(10f);  
//          table.getDefaultCell().setBorder(0);  
            table.setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中  
              
//          第一行 row1  
            PdfPCell row1 = new PdfPCell(new Paragraph("KJLINK International Co. 固定资产领用单", bold));  
            row1.setColspan(6);  
//          cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置内容水平居中  
            row1.setFixedHeight(30);  
            row1.setPadding(5);  
            row1.setHorizontalAlignment(Element.ALIGN_CENTER); // 垂直居中  
            table.addCell(row1);  
              
//           第二行 row2  
            PdfPCell hCell1 = new PdfPCell(new Paragraph("领用人", simsun));  
            hCell1.setHorizontalAlignment(Element.ALIGN_CENTER);  
            hCell1.setFixedHeight(25);  
            table.addCell(hCell1);  
            table.addCell(new Paragraph(params.get("userName"), STSong));  
  
            PdfPCell hCell2 = new PdfPCell(new Paragraph("领用部门", simsun));  
            hCell2.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(hCell2);  
            table.addCell(new Paragraph(params.get("userDept"), STSong));  
            PdfPCell hCell3 = new PdfPCell(new Paragraph("领用时间", simsun));  
            hCell3.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(hCell3);  
            table.addCell(new Paragraph(params.get("borrowTime"), STSong));  
              
//           第三行 row3  
            PdfPCell row3 = new PdfPCell(new Paragraph("领用事由:", STSong));  
            row3.setColspan(6);  
            row3.setFixedHeight(20);  
            row3.setPadding(5);  
            row3.setBorder(0);  
            row3.setBorderWidthLeft(0.2f);  
            row3.setBorderWidthRight(0.2f);  
//          row3.setBorderColorBottom(BaseColor.WHITE);  
            row3.setVerticalAlignment(Element.ALIGN_CENTER);  
            table.addCell(row3);  
              
//           第三行 row3  
            PdfPCell row3_2 = new PdfPCell(new Paragraph(params.get("borrowRemark"), STSong));  
            row3_2.setColspan(6);  
            row3_2.setBorder(0);  
            row3_2.setFixedHeight(80);  
            row3_2.setPaddingRight(10f);  
            row3_2.setBorderWidthLeft(0.2f);  
            row3_2.setBorderWidthRight(0.2f);  
//          row3_1.setBorderColorTop(BaseColor.WHITE);//ColorTop(BaseColor.RED);  
            row3_2.setHorizontalAlignment(Element.ALIGN_LEFT);  
            row3_2.setPaddingLeft(20f);  
            table.addCell(row3_2);  
              
//           第三行 row3  
            PdfPCell row3_1 = new PdfPCell(new Paragraph("签名:                        " + params.get("borrowDate"), simsun));  
            row3_1.setColspan(6);  
            row3_1.setBorder(0);  
            row3_1.setPaddingRight(10f);  
            row3_1.setBorderWidthLeft(0.2f);  
            row3_1.setBorderWidthRight(0.2f);  
//          row3_1.setBorderColorTop(BaseColor.WHITE);//ColorTop(BaseColor.RED);  
            row3_1.setFixedHeight(20);  
            row3_2.setPaddingBottom(6f);  
            row3_1.setHorizontalAlignment(Element.ALIGN_RIGHT);  
            table.addCell(row3_1);  
          
              
//           第四行 row4  
            PdfPCell row5 = new PdfPCell(new Paragraph("领用资产情况", bold));  
            row5.setColspan(6);  
            row5.setFixedHeight(25);  
            row5.setPadding(5);  
            row5.setHorizontalAlignment(Element.ALIGN_CENTER); // 垂直居中  
            table.addCell(row5);  
              
//           第五行 row5  
            PdfPCell cell1 = new PdfPCell(new Paragraph("固定资产名称", simsun));  
            cell1.setHorizontalAlignment(Element.ALIGN_CENTER);  
            cell1.setFixedHeight(25);  
            table.addCell(cell1);  
            PdfPCell cell2 = new PdfPCell(new Paragraph("型号", simsun));  
            cell2.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(cell2);  
            PdfPCell cell3 = new PdfPCell(new Paragraph("配置", simsun));  
            cell3.setColspan(2);  
            cell3.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(cell3);  
            PdfPCell cell4 = new PdfPCell(new Paragraph("序列号", simsun));  
            cell4.setColspan(2);  
            cell4.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(cell4);  
              
//           第五行 动态行  
            PdfPCell cell21 = new PdfPCell(new Paragraph(params.get("assetName"), STSong));  
            cell21.setHorizontalAlignment(Element.ALIGN_CENTER);  
            cell21.setFixedHeight(25);  
            table.addCell(cell21);  
            PdfPCell cell22 = new PdfPCell(new Paragraph(params.get("assetModel"), STSong));  
            cell22.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(cell22);  
            PdfPCell cell23 = new PdfPCell(new Paragraph(params.get("assetConfig"), STSong));  
            cell23.setColspan(2);  
            cell23.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(cell23);  
            PdfPCell cell24 = new PdfPCell(new Paragraph(params.get("assetSequence"), STSong));  
            cell24.setColspan(2);  
            cell24.setHorizontalAlignment(Element.ALIGN_CENTER);  
            table.addCell(cell24);  
              
              
//          空白行1  
            table.addCell(" ");  
            table.addCell(" ");  
            PdfPCell blank11 = new PdfPCell(new Paragraph(" "));  
            blank11.setFixedHeight(25);  
            blank11.setColspan(2);  
            table.addCell(blank11);  
            PdfPCell blank12 = new PdfPCell(new Paragraph(" "));  
            blank12.setColspan(2);  
            table.addCell(blank12);  
              
//          空白行2  
            table.addCell(" ");  
            table.addCell(" ");  
            PdfPCell blank21 = new PdfPCell(new Paragraph(" "));  
            blank21.setFixedHeight(25);  
            blank21.setColspan(2);  
            table.addCell(blank21);  
            PdfPCell blank22 = new PdfPCell(new Paragraph(" "));  
            blank22.setColspan(2);  
            table.addCell(blank22);  
//          空白行3  
            table.addCell(" ");  
            table.addCell(" ");  
            PdfPCell blank31 = new PdfPCell(new Paragraph(" "));  
            blank31.setColspan(2);  
            blank31.setFixedHeight(25);  
            table.addCell(blank31);  
            PdfPCell blank32 = new PdfPCell(new Paragraph(" "));  
            blank32.setColspan(2);  
            table.addCell(blank32);  
              
//           第六行 row6  
            PdfPCell row6 = new PdfPCell(new Paragraph("分管领导意见:", simsun));  
            row6.setColspan(6);  
            row6.setFixedHeight(120);  
            row6.setPadding(5);  
            row6.setVerticalAlignment(Element.ALIGN_CENTER);  
            table.addCell(row6);  
              
//           第七行 row7  
            PdfPCell row7 = new PdfPCell(new Paragraph("总裁意见:", simsun));  
            row7.setColspan(6);  
            row7.setFixedHeight(120);  
            row7.setPadding(5);  
            row7.setVerticalAlignment(Element.ALIGN_CENTER);  
            table.addCell(row7);  
              
//           将table添加到document  
            document.add(table);  
              
            document.add(new Paragraph("KJLink International, Inc", STSong));  
            document.add(new Paragraph("凯捷技术有限公司 (c)Copyright 2005", STSong)); //   
              
            System.out.println("生成PDF成功!");  // tips message  
              
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (DocumentException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (document.isOpen()) {  
                document.close();  
            }  
        }  
    }  
      
    public static void main(String[] args) throws FileNotFoundException {  
          
        OutputStream os = new FileOutputStream("D:\\固定资产领用单.pdf"); // 输出PDF到指定位置  
          
        Map<String, String> params = new HashMap<String, String>(); // 参数列表  
        params.put("imgPath", "C:\\Users\\Bing\\Pictures\\KJLink.png"); // Logo图片地址  
        params.put("userName", "iteye.com");  
        params.put("userDept", "java频道");  
        params.put("borrowTime", "11-07-24 10:00");  
        params.put("borrowRemark", "去深圳出差一个月。");  
        params.put("borrowDate", "2011年07月24日");  
        params.put("assetName", "KJ-AA-0001");  
        params.put("assetModel", "ThinkPad T61");  
        params.put("assetConfig", "酷睿i5双核,2GDDR3内存,80G硬盘");  
        params.put("assetSequence", "1111-2222-3333");  
          
        PDF4iText.createPDF(os, params);  
    }  
} 
 

 

分享到:
评论

相关推荐

    itext 生成pdf 目录

    在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...

    解决Itext生成PDF中文不换行的jar

    为了解决"Java使用Itext生成PDF中文不换行"的问题,我们可以采取以下几种策略: 1. **设置字体和编码**:确保使用支持中文的字体,如SimSun、Arial Unicode MS等,并正确设置PDF的编码为UTF-8。Itext中的`Font`类...

    freemarker+itext生成PDF

    这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...

    Android使用iText生成pdf并读取pdf内容

    在这个场景中,我们将探讨如何利用iText在Android应用中生成PDF以及读取PDF的内容。 首先,我们需要在Android项目中引入iText库。由于Android Studio默认使用Gradle作为构建工具,我们可以在`build.gradle`文件的...

    使用iText生成PDF.doc

    以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge下载相应的.jar文件。基础的iText.jar提供了基本的PDF生成功能,但如果你...

    itext-2.1.7源码包以及 解决iText生成pdf时中文标点存在行首问题的修改class

    "itext-2.1.7源码包以及 解决iText生成pdf时中文标点存在行首问题的修改class" 这个标题提到了两个关键点。首先,`itext-2.1.7`是开源Java库iText的一个版本,用于创建、修改和操作PDF文档。这个版本的源码包提供了...

    iText生成PDF - 实例

    **iText生成PDF实例详解** 在信息技术领域,PDF(Portable Document Format)文件因其跨平台、易阅读和保真性等特点,被广泛应用于文档共享和交流。而iText是一款开源的Java库,它允许开发者轻松地创建、修改和操作...

    使用itext生成PDF文件

    2. **创建PDF文档**:使用iText生成PDF的第一步是创建一个PdfWriter实例,然后基于该实例创建一个Document对象。例如: ```java Document document = new Document(); PdfWriter.getInstance(document, new ...

    iText生成pdf解决中文不显示

    iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...

    itext生成pdf目录

    用itext方法生成 与Word一样的目录

    itext生成PDF图片文档

    iText生成PDF图片文档 iText是一个功能强大的Java类库,用于生成PDF文档。通过使用iText,我们可以轻松地生成PDF文档,包括图片、文字、表格等多种元素。本文将详细介绍如何使用iText生成PDF图片文档。 iText基本...

    Itext生成PDF所需要的最全Jar包

    这个压缩包提供了使用Itext生成PDF所需的全部Jar包,确保你可以一次性导入所有必要的依赖。 1. **Itext核心组件**: - `kernel`:这是Itext的核心模块,提供了基本的PDF文档操作功能,如创建、打开、修改PDF文档,...

    itext生成PDF和word的两个demo

    里面包含两个demo实例,分别是itext-pdf生成pdf的,一个是itext-rtf生成word的。其中还附有学习笔记一份,上述生成的文档包括对字体的选择(本地或者iTextAsian里面的),有对图片的添加,有对样式的调整,有对table...

    使用IText生成PDF和WORD文档

    document.add(new Paragraph("这是使用IText生成的PDF文档!")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 这段代码首先创建了一个`Document`对象...

    itext生成pdf报表的小demo

    接下来,我们来看看如何生成PDF报表。首先,创建一个新的PDF文档需要一个`Document`对象,这将作为整个PDF的容器: ```java Document document = new Document(); ``` 然后,我们需要一个`PdfWriter`实例,它负责将...

    使用itext生成pdf需要的jar包

    本篇将详细介绍如何使用iText生成PDF,以及所需的jar包。 首先,我们需要理解iText库的核心功能。iText允许开发者通过编程方式创建PDF文档,支持添加文本、图像、表格、链接、样式和布局等多种元素。它还提供了高级...

    springboot使用itext生成pdf并保存到本地

    总结一下,要实现在Spring Boot应用中使用iText生成带有页眉、页码、水印、目录和二维码的PDF,你需要: 1. 引入iText及相关库。 2. 创建HTML页面并将其转换为PDF。 3. 定制PDF内容,包括添加页眉、页码和水印。 4. ...

    itext 生成pdf文档

    用itext生成pdf文档,生成的内容有表格形式,文本形式,设置字体样式,文档页边距。

    初学Itext 生成PDF 表格,条形码(一维),图片

    对于初学者来说,掌握使用iText生成PDF文档中的表格、一维条形码和图片是一项基本技能。此外,需要注重代码中字符串的准确性,避免由于扫描或输入错误导致的问题。熟练掌握iText库的使用,可以使开发者在处理PDF文件...

Global site tag (gtag.js) - Google Analytics