csharp iTextSharp的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp iTextSharp的相关的知识,希望对你有一定的参考价值。

//实现PDF审核盖章
//PDF自动审核盖章的工作,其实就是读取PDF,然后再最后一页加入一个审核章印图片上去。
//主要遇到的问题是页面的旋转 和 内容的旋转 的分开的,需要分别操作。


string path = @"D:\doc";

// 创建一个PdfReader对象
PdfReader reader = new PdfReader(path + ".pdf");

// 获得文档页数
int n = reader.NumberOfPages;

// 获得第一页的大小
Rectangle psize = reader.GetPageSize(1);
float width = psize.Width;
float height = psize.Height;
 
// 创建一个文档变量
Document document = new Document(psize);

// 创建该文档 生成物理文件
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "_APPROVE.pdf", FileMode.OpenOrCreate));
 
// 打开文档
document.Open();

// 添加内容
PdfContentByte cb = writer.DirectContent;

    for (int i = 0; i < n; )
    {
 
        i++;
        //设置指定页的PagSize 包含Rotation(页面旋转度)
        document.SetPageSize(reader.GetPageSizeWithRotation(i));
 
        //创建一个新的页面,需要注意的调用NewPage() ,PdfContentByte cb 对象会默认清空
        document.NewPage();
 
        //获取指定页面的旋转度
        int rotation = reader.GetPageRotation(i);
 
        //获取加载PDF的指定页内容
        PdfImportedPage page1 = writer.GetImportedPage(reader, i);
 
        //添加内容页到新的页面,并更加旋转度设置对应的旋转
        switch (rotation)
        {
            case 90:
                cb.AddTemplate(page1, 0, -1, 1, 0, 0, reader.GetPageSizeWithRotation(i).Height);
                break;
            case 180:
                cb.AddTemplate(page1, -1, 0, 0, -1, reader.GetPageSizeWithRotation(i).Width, reader.GetPageSizeWithRotation(i).Height);                           break;
            case 270:
                cb.AddTemplate(page1, 0, 1, -1, 0, reader.GetPageSizeWithRotation(i).Width, 0);
                break;
            default:
                cb.AddTemplate(page1, 1, 0, 0, 1, 0, 0);//等同于 cb.AddTemplate(page1, 0,0)
                break;
        }
 
        if (i == n)//如果是最后一页加入指定的图片
        {//不同旋转度的页面 图片位置left距离的调整                       
            int imgLeft = 350;
      if(rotation==90 || rotation==270)
      {
                imgLeft = 550;
} 
 
            //创建一个图片对象                   
            iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(new Uri(@"d:\Lock-icon.png"));
 
            //设置图片的指定大小
            //img.ScaleToFit(140F, 320F);
 
            //按比例缩放
            //img.ScalePercent(50);          
 
            //把图片增加到内容页的指定位子  b width c height  e bottom f left
            cb.AddImage(img, 0, 32F, 32F, 0, 50F, imgLeft);
 
            //开始增加文本
            cb.BeginText();
 
            BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            //设置字体 大小
            cb.SetFontAndSize(bf, 9);
 
            //指定添加文字的绝对位置
            cb.SetTextMatrix(imgLeft, 200);
            //增加文本
            cb.ShowText("GW INDUSTRIAL LTD");
 
            //结束
            cb.EndText();
        }
    }
    // 关闭文档
    document.Close();     
}
catch (Exception de)
{
    Console.Error.WriteLine(de.Message);
    Console.Error.WriteLine(de.StackTrace);
}

以上是关于csharp iTextSharp的的主要内容,如果未能解决你的问题,请参考以下文章

itextsharp 错误:“文档没有页面。”

C#工具类:使用iTextSharp操作PDF文档

c#中带有html的itextsharp [重复]

iTextSharp 设置文档横向(横向)A4

使用 iTextSharp 在系统中使用字体

使用 itextsharp 获取 PDF 页面的缩略图