iTextSharp使用总结

1、如何处理中文
    
首先,确保本地存在中文字体,我选择的是
simsunb.ttf(当然你选择其他的也可以),如果在系统盘windows/fonts目录下没有,去google download一个也是可以的,在生成pdf时,指定simsunb.ttf的路径,然后在pdfnew chunk或者phrase之类的,指明某一种fontokay了,至于chunkphrase内容是中文还是英文,都是可以的了。
       string fontpath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "Fonts\\simsun.ttf";
         BaseFont basefont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, BaseFont.Normal);
        Font font = new Font(basefont, 12F, Font.NORMAL); 
        Chunk  mychunk = new Chunk("
好好学习,天天向上",font );
        document.Add(mychunk );

2
、如何自定义边框    
  图片
    PdfPTable
imageCell.Border =PdfPCell.NO_BORDER表示隐藏所有的边框,imageCell.DisableBorderSide()有四个参数1,2,4,8分别代表一个单元格的上下左右边框,因此imageCell.DisableBorderSide(2)代表下边框不显示。
3
、如何保证条码不被分割显示在不同页面
    
我是找了好久才找到这个方法,
pdftable.KeepTogether = true;花了很多时间去Google,最后还是点出来的,这也是一个学习方法,根据名字大概猜出是什么意思,看来在开发过程中给方法取名字还是很重要的。
4
、如何重复显示表头
   
在导出
bom过程中,需要在每一页最上面显示表头,pdftable.HeaderRows= 2表示重复显示第二行。
 
    //pdftable.FooterRows = 2;
5、如何实现换行
      Paragraph p = new Paragraph(new Chunk(Environment.NewLine,basefont);
      document.Add(p);
6、如何添加第几页,共几页
   
这个功能实现比较麻烦,也是Google了很久,代码如下。
   
Document document = new Document(PageSize.A4.Rotate(), 0, 0, 10, 33); -----生成横着的文档
     PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fullpath,FileMode.Create));
      MyPdfPageEventHelpPageNo pageeventhandler = new MyPdfPageEventHelpPageNo();
      writer.PageEvent = pageeventhandler;
      
public class MyPdfPageEventHelpPageNo: iTextSharp.text.pdf.PdfPageEventHelper
     {
        protectedPdfTemplate total;
        protectedBaseFont helv;
        public override voidOnOpenDocument(PdfWriter writer, Document document)
        {
            total =writer.DirectContent.CreateTemplate(50, 50);
            total.BoundingBox = new Rectangle(-20,-20, 100, 100);
            stringfontpath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath+ "MAIN\\Fonts\\simsun.ttf";
            helv = BaseFont.CreateFont(fontpath,BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        }
        public override voidOnEndPage(PdfWriter writer, Document document)
        {
            PdfContentBytecb = writer.DirectContent;
            cb.SaveState();
            stringtext = "
" +writer.PageNumber + "页,共";
            floatlen = helv.GetWidthPoint(text, 9);
            cb.BeginText();
            cb.SetFontAndSize(helv, 9);
            cb.SetTextMatrix(400, 20);
            cb.ShowText(text);
            cb.EndText();
            cb.AddTemplate(total, 400 + len,20);
            cb.RestoreState();
        }
        public override voidOnCloseDocument(PdfWriter writer, Document document)
        {
            total.BeginText();
            total.SetFontAndSize(helv, 9);
            intpageNumber = writer.PageNumber - 1;
            total.ShowText(Convert.ToString(pageNumber)+"
");
            total.EndText();
        }
      }
 
7、如何禁止行分割
 
   
pdftable.SplitLate = false;
          pdftable.SplitRows = false;
 
8、设置表格列宽度
    
pdftable.SetWidths(new int[9]{30,140,130,180,40,175,90,55,120}); 

    itextsharp文档地址 http://www.afterlogic.com/mailbee-net/docs-itextsharp/Index.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值