利用itext生成pdf文档

       最近在用itext这一开源库生成pdf文件,小有所悟,故写下。

   一、基本流程

       第一步,创建一个 iTextSharp.text.Document对象的实例:

      Document document = new Document();

      第二步,为该Document创建一个Writer实例:

      PdfWriter.getInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));

      第三步,打开当前Document

      document.Open();

      第四步,为当前Document添加内容:

      document.Add(new Paragraph("Hello World"));

      第五步,关闭Document

      document.Close();

   二、关于中文字体

    三种方法

        方法一:使用Windows系统字体(TrueType)

        方法二:使用iTextAsian.jar中的字体

        方法三:使用资源字体(ClassPath)

        //方法一:使用Windows系统字体(TrueType)    
        BaseFont baseFont = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);    
            
        //方法二:使用iTextAsian.jar中的字体    
        //BaseFont baseFont = BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);    
            
        //方法三:使用资源字体(ClassPath)    
        BaseFont baseFont = BaseFont.createFont("/SIMYOU.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);  
        通常,方法一不会别选用,因为需要系统资源,不确定性太大。

        方法二,这种方法虽然能够正常地显示中文信息,但是有一个缺点,就是只有一种字体。因为iText官方网站提供的iTextAsian.jar包中只包 含几种简单的亚洲字体,对于简体中文来说,只有宋体。因此,采用这种方法生成的PDF中,中文字体只能为宋体,无法显示其他字体。

        所以,还是选择方法三。选择方法三,需要注意两点。

        1、对于宋体,需要表示为 "SIMSUN.TTC,1"。2、在生成PDF的时候,程序会从类路径中查找这个字体文件,可以选择把字体文件放到类路径中。

   三、关于图片

        1、图片顺序,默认会自动调整,所以在创建Wirter时,需要设置相关内容。     

     writer.setStrictImageSequence(true);
        2、图片分辨率

       将图片生成到pdf里面结果图片的DPI 与生成之后PDF 分辨率不一样导致打印出来的不行。

    DPI:“dot per inch”的缩写,就是指在每英寸长度内的点数。在Photoshop中文版中可以看到中文解释是“分辨率”的一种表示方式
        原本图片DPI就是96,PDF生成的总是72。
    img.scalePercent(75f);
       3、图片缩放
    public void scaleAbsolute(int newWidth, int newHeight)直接设定显示尺寸
    public void scalePercent(int percent)设定显示比例
    public void scalePercent(int percentX, int percentY)根据高宽设定显示比例

   四、关于表格

        1、锁定表头:table.setHeaderRows(1);
        2、缓解内存压力:table.setComplete(false);
        3、表格跨页显示:table.setSplitRows(false);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值