ITextSharp生成PDF

ITextSharp生成PDF
2018年06月07日 11:46:46 mango_love 阅读数 3229
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mango_love/article/details/80605945
ITextSharp就不多介绍了,下面就把遇到的坑一一记录下来,希望能够帮助到正在使用它的开发者们。操作pdf的方法都被作者封装好了,只是没有注释和说明,不过大部分的方法属性还是能看懂的,看不懂的可以反编译一下。

gethub下载dll地址:https://github.com/itext/itextsharp/tags

1.输入文字不显示中文,文字换行

2.文字加颜色、字体大小、加粗、斜体、居中等骚操作

3.表格行合并、表格列合并

4.添加新页面

5.图片等比缩放、页面中心显示

下面代码演示:

首先添加几个dll

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
private void SavePDF(HttpContext context)
{
Document document = new Document();
//中文字体
string chinese = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), “KAIU.TTF”);
BaseFont baseFont = BaseFont.CreateFont(chinese, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
//文字大小12,文字样式
Font cn = new Font(baseFont, 12, Font.NORMAL);

        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"D:\temp.pdf", FileMode.Create));
        document.Open();
        //最后一个参数是颜色,这里可以是rgb格式,也可以是默认定义的
        var title = new Paragraph("\n 这是一条标题0.0  hello ", new Font(baseFont, 14, Font.BOLD, BaseColor.RED));
        //居中
        title.Alignment = Element.ALIGN_CENTER;
        document.Add(title);

        Paragraph p = new Paragraph(" \n this is Second title \n ", cn);
        //Phrase p = new Phrase("这是一条标题0.0  hello", cn);
        p.Alignment = Element.ALIGN_CENTER;
        document.Add(p);

        //添加表格
        PdfPTable table = new PdfPTable(3);
        PdfPCell cell = new PdfPCell();

        table.AddCell("Row");
        cell = new PdfPCell(new Phrase("Cell"));
        cell.Colspan = 2;
        table.AddCell(cell);

        table.AddCell("row");
        cell = new PdfPCell(new Phrase("Cell"));
        cell.Colspan = 2;
        table.AddCell(cell);

        cell = new PdfPCell(new Phrase("Row"));
        cell.Rowspan = 2;
        table.AddCell(cell);
        table.AddCell("Cell");
        table.AddCell("Cell");
        table.AddCell("Cell");
        table.AddCell("Cell");

        table.HorizontalAlignment = Element.ALIGN_CENTER;
        document.Add(table);

        //新页面
        document.NewPage();
        document.Add(new Paragraph("Second page pic", cn));
        Image img = Image.GetInstance("E:/VsTest/testWeb/testWeb/Files/ts20171204.002.jpeg");

        float percentage = 1;
        //这里都是图片最原始的宽度与高度  
        float resizedWidht = img.Width;
        float resizedHeight = img.Height;

        //这时判断图片宽度是否大于页面宽度减去也边距,如果是,那么缩小,如果还大,继续缩小,  
        //这样这个缩小的百分比percentage会越来越小  
        while (resizedWidht > (document.PageSize.Width - document.LeftMargin - document.RightMargin) * 0.8)
        {
            percentage = percentage * 0.9f;
            resizedHeight = img.Height * percentage;
            resizedWidht = img.Width * percentage;
        }

        while (resizedHeight > (document.PageSize.Height - document.TopMargin - document.BottomMargin) * 0.8)
        {
            percentage = percentage * 0.9f;
            resizedHeight = img.Height * percentage;
            resizedWidht = img.Width * percentage;
        }

        //这里用计算出来的百分比来缩小图片  
        img.ScalePercent(percentage * 100);
        //图片定位,页面总宽283,高416;这里设置0,0的话就是页面的左下角 让图片的中心点与页面的中心店进行重合  
        img.SetAbsolutePosition(document.PageSize.Width / 2 - resizedWidht / 2, document.PageSize.Height / 2 - resizedHeight / 2);
        writer.DirectContent.AddImage(img);

        document.Close();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值