zoukankan      html  css  js  c++  java
  • iText实现pdf导出

    /**
    * AsianTest.java
    */

    import java.io.FileOutputStream;  
    import java.io.IOException;  
    
    import com.lowagie.text.*;  
    import com.lowagie.text.pdf.PdfWriter;  
    import com.lowagie.text.pdf.BaseFont;  
    import com.lowagie.text.Font;  
    import java.awt.Color;  
    
    public class AsianTest {  
    
        public static void main(String[] args) {  
    
            // 创建一个Document对象  
            Document document = new Document();  
    
            try {  
    
                // 生成名为 AsianTest.pdf 的文档  
                PdfWriter.getInstance(document, new FileOutputStream(  
                        "c://AsianTest.pdf"));  
    
                /** 
                 * 新建一个字体,iText的方法 STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀 
                 * UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀 H 代表文字版式是 横版, 相应的 V 
                 * 代表竖版 
                 */  
                BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",  
                        "UniGB-UCS2-H", false);  
    
                Font bold_fontChinese = new Font(bfChinese, 12, Font.BOLD,  
                        Color.BLACK);  
                Font italic_fontChinese = new Font(bfChinese, 12, Font.ITALIC,  
                        Color.BLACK);  
                Font impressFont = new Font(bfChinese, 16, Font.BOLDITALIC,  
                        Color.BLACK);  
                // 打开文档,将要写入内容  
                document.open();  
    
                // 插入一个段落  
                // Paragraph par = new Paragraph("我们", fontChinese);  
    
                // document.add(par);  
                //  
                document.add(new Paragraph(" ", bold_fontChinese));  
                document.add(new Paragraph(" ", bold_fontChinese));  
                document.add(new Paragraph(" ", bold_fontChinese));  
                String[] Trainspotting1 = { "选择生命,选择工作,选择职业,选择家庭,",  
                        "选择可恶的大彩电,选择洗衣机、汽车、雷射碟机,", "选择健康、低胆固醇和牙医保险,选择楼宇按揭,",  
                        "选择你的朋友,选择套装、便服和行李,选择分期付款和三件套西装,",  
                        "选择收看无聊的游戏节目,边看边吃零食……选择你的未来,选择生命……", "太多选择,你选择什么,我选择不选择。" };  
                String[] Trainspotting2 = { "这是电影《猜火车》开头的旁白。", "这是一个关于“选择”的故事。" };  
                String[] Benjamin1 = { "有些人就在河边出生长大,", "有些人被闪电击中,",  
                        "有些人对音乐有着非凡的天赋,", "有些人是艺术家,", "有人会游泳,", "有人懂得做纽扣,",  
                        "有人会背莎士比亚,", "而有些人。。。是母亲,", "也有些人,可以翩翩起舞。",  
                        "Goodnight  Daisy", "Goodnight  Benjamin" };  
                String[] Benjamin2 = { "这是电影《本杰明传奇》结尾的旁白。", "这是一个关于“错过”的故事。" };  
                String[] text1 = { "我想说的是,", "我们选择,同时,我们错过。" };  
                String[] text2 = { "抛去无可选择的选择,抑或不选择的选择,",  
                        "很有趣的一件事:当面临(太多的)选择,人们会如何选择;", "同时,人们又会如何看待错过。" };  
                String[] text3 = { "在开始和结束之间,选择了什么,又会错过什么,我还不知道。" };  
                String[] text4 = { "你会知道么?" };  
                //  
                for (String s : Trainspotting1) {  
                    document.add(new Paragraph(s, italic_fontChinese));  
                    document.add(new Paragraph(" ", italic_fontChinese));  
                }  
                for (String s : Trainspotting2) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(" ", bold_fontChinese));  
                document.add(new Paragraph(" ", bold_fontChinese));  
                document.add(new Paragraph(" ", bold_fontChinese));  
                for (String s : Benjamin1) {  
                    document.add(new Paragraph(s, italic_fontChinese));  
                    document.add(new Paragraph(" ", italic_fontChinese));  
                }  
                for (String s : Benjamin2) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(" ", bold_fontChinese));  
                document.add(new Paragraph(" ", bold_fontChinese));  
                document.add(new Paragraph(" ", bold_fontChinese));  
                for (String s : text1) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(" ", bold_fontChinese));  
                for (String s : text2) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(" ", bold_fontChinese));  
                for (String s : text3) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(" ", bold_fontChinese));  
                for (String s : text4) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(" ", bold_fontChinese));  
                //  
                String[] end = { "Some people were born to sit by a river...",  
                        "Some get struck by light...",  
                        "Some have an ear for music...", "Some are artists...",  
                        "Some swim...", "Some know buttons...",  
                        "Some know Shakespeare...", "Some are mothers...",  
                        "And some people can dance..." };  
                for (String s : end) {  
                    document.add(new Paragraph(s, bold_fontChinese));  
                }  
                document.add(new Paragraph(  
                        "by the way, some people can write code.你", impressFont));  
    
                // Chapter  
                Paragraph title1 = new Paragraph("Chapter 1", italic_fontChinese);  
                Chapter chapter1 = new Chapter(title1, 1);  
                chapter1.setNumberDepth(0);  
                Paragraph title11 = new Paragraph(  
                        "This is Section 1 in Chapter 1中文", italic_fontChinese);  
                Section section1 = chapter1.addSection(title11);  
                Paragraph someSectionText = new Paragraph(  
                        "This text comes as part of section 1 of chapter 1.");  
                section1.add(someSectionText);  
                someSectionText = new Paragraph("Following is a 3 X 2 table.");  
                section1.add(someSectionText);  
                //  
                document.add(chapter1);  
                //  
                // 定义一个图片  
    
                Image jpeg = Image.getInstance("E:/01.jpg");  
    
                // 图片居中  
                jpeg.setAlignment(Image.ALIGN_CENTER);  
                document.add(jpeg);  
            } catch (DocumentException de) {  
                System.err.println(de.getMessage());  
            } catch (IOException ioe) {  
                System.err.println(ioe.getMessage());  
            }  
    
            // 关闭打开的文档  
            document.close();  
        }  
    }
    

    此上的文章转载别人的,觉得挺好就借鉴过来



    原创部分

    • 建立Document对象的实例

      Document document = new Document();

    • 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中,filePath是pdf的生成路径

    PdfWriter.getInstance(document, new FileOutputStream(
                            filePath));
    • 新建一个字体,iText的方法STSongStf-Ligth 是字体,在BaseFont中设置之后,我们到处的pdf就可以兼容中文了。itext还有两种输出中文字体的设置,

      • 1 使用iTextAsian.jar中的字体
    BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",
                            "UniGB-UCS2-H", false);
        -  2 使用Windows系统字体(TrueType)         
    

    BaseFont.createFont(“C:/WINDOWS/Fonts/SIMYOU.TTF”, BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

    • 使用资源地址
    BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);     
    
  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/zhangxinhua/p/8319235.html
Copyright © 2011-2022 走看看