zoukankan      html  css  js  c++  java
  • iText创建一个含有中文的pdf文档

    有朋友问我pdfbox支不支持向pdf文档中写入中文。然后试了好多遍都是有乱码,也找了好多资料没有找到解决办法。

    但是在查找资料的过程中发现了另一个处理pdf的开源库iText.官方介绍 http://itextpdf.com/

    在这参考了两篇博客

    博客1.pdfbox&iText生成PDF文件格式及读取PDF资料内容的小示例-完美支持中文版

    博客2.iText生成pdf

    iText的功能很强大,用起来也很灵活,我这里只是简单的了解了一下创建一个包含中文的pdf的方法。以后有时间在深入了解。

    废话不多说,正题!

    下载jar包,官网没找到o(╯□╰)o,jarfire上收录了一些jar包,下载jar包  我下载的是itext-2.0.6.jar.zip

    上代码

     1 package pdf.itext;
     2 
     3 import java.awt.Color;
     4 import java.io.File;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 
     8 import com.lowagie.text.Document;
     9 import com.lowagie.text.DocumentException;
    10 import com.lowagie.text.Font;
    11 import com.lowagie.text.PageSize;
    12 import com.lowagie.text.Paragraph;
    13 import com.lowagie.text.Rectangle;
    14 import com.lowagie.text.pdf.BaseFont;
    15 import com.lowagie.text.pdf.PdfWriter;
    16 
    17 public class Handler {
    18     private static String CHINESE_FONT = "SIMFANG.TTF";//仿宋字体,在C:/Windows/fonts里找的font文件放到src目录下,参见 博客1
    19     public static final Rectangle PAGE_SIZE = PageSize.A4;
    20     public static final float MARGIN_LEFT = 50;
    21     public static final float MARGIN_RIGHT = 50;
    22     public static final float MARGIN_TOP = 50;
    23     public static final float MARGIN_BOTTOM = 50;
    24     public static final float SPACING = 20;
    25 
    26     public static void  createPDF(String fileName,String content) throws DocumentException, IOException {
    27         File file = new File(fileName);//生成的文件
    28         FileOutputStream fout = new FileOutputStream(file);//输出流
    29         Document document = new Document(PAGE_SIZE, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MARGIN_BOTTOM);//页面大小以及布局
    30         PdfWriter.getInstance(document, fout);//将文档添加的输出流
    31         document.open();//打开文档准备写入
    32         BaseFont baseFont = BaseFont.createFont(CHINESE_FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//创建一个支持中文的字体
    33         Font chinese = new Font(baseFont, 20, Font.BOLDITALIC, Color.red);//博客1里的BaseColor在我下载的jar包中没有就用java.awt.color代替了
    34         document.add(new Paragraph(content, chinese));//写入内容      
    35         document.close();//关闭文档
    36     }
    37     public static void main(String[] args) throws DocumentException, IOException {
    38         createPDF("apdf.pdf", "正在使用iText创建一个包含中文的pdf文档!");
    39     }
    40 }

    不同版本的jar包,差异应该还挺大的,我的代码中包结构还有方法等和博客1的差异比较大,和博客2的基本一致。
    相关信息官网肯定,由于时间问题没有仔细查看。留后吧(*^__^*) 。

     写入内容 方法比较多,创建pdf也很具体详细,很灵活。

    TO BE CONTINUED……

  • 相关阅读:
    [CQOI2015]选数
    利用匈牙利算法&HopcroftKarp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
    玩家死亡,屏幕灰白效果实现
    Bool值相加
    (转)D3D性能优化
    Flash AS3视频教程
    Accurately Profiling Direct3D API Calls (Direct3D 9)
    菲涅尔反射
    sscanf时用到郁闷问题
    如何精确测量程序运行时间(转)
  • 原文地址:https://www.cnblogs.com/erbin/p/4163108.html
Copyright © 2011-2022 走看看