C#使用iTextSharp封装的PDF文件操作类实例

本文实例讲述了C#使用iTextSharp封装的PDF文件操作类。分享给大家供大家参考。具体分析如下:

这个C#代码主要讲iTextSharp中用于操作PDF文件的方法进行了再次封装,可以更加方便的访问PDF文档,可以动态生成PDF文件、添加内容、设置段落、设置字体等。

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace DotNet.Utilities
{
  /// <summary>
  /// PDF文档操作类
  /// </summary>
  //------------------调用--------------------------
  //PDFOperation pdf = new PDFOperation();
  //pdf.Open(new FileStream(path, FileMode.Create));
  //pdf.SetBaseFont(@"C:\Windows\Fonts\SIMHEI.TTF");
  //pdf.AddParagraph("测试文档(生成时间:" + DateTime.Now + ")", 15, 1, 20, 0, 0);
  //pdf.Close();
  //-------------------------------
  public class PDFOperation
  {
    #region 构造函数
    /// <summary>
    /// 构造函数
    /// </summary>
    public PDFOperation()
    {
      rect = PageSize.A4;
      document = new Document(rect);
    }
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="type">页面大小(如"A4")</param>
    public PDFOperation(string type)
    {
      SetPageSize(type);
      document = new Document(rect);
    }
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="type">页面大小(如"A4")</param>
    /// <param name="marginLeft">内容距左边框距离</param>
    /// <param name="marginRight">内容距右边框距离</param>
    /// <param name="marginTop">内容距上边框距离</param>
    /// <param name="marginBottom">内容距下边框距离</param>
    public PDFOperation(string type, float marginLeft, float marginRight, float marginTop, float marginBottom)
    {
      SetPageSize(type);
      document = new Document(rect, marginLeft, marginRight, marginTop, marginBottom);
    }
    #endregion
    #region 私有字段
    private Font font;
    private Rectangle rect;  //文档大小
    private Document document;//文档对象
    private BaseFont basefont;//字体
    #endregion
    #region 设置字体
    /// <summary>
    /// 设置字体
    /// </summary>
    public void SetBaseFont(string path)
    {
      basefont = BaseFont.CreateFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
    }
    /// <summary>
    /// 设置字体
    /// </summary>
    /// <param name="size">字体大小</param>
    public void SetFont(float size)
    {
      font = new Font(basefont, size);
    }
    #endregion
    #region 设置页面大小
    /// <summary>
    /// 设置页面大小
    /// </summary>
    /// <param name="type">页面大小(如"A4")</param>
    public void SetPageSize(string type)
    {
      switch (type.Trim())
      {
        case "A4":
          rect = PageSize.A4;
          break;
        case "A8":
          rect = PageSize.A8;
          break;
      }
    }
    #endregion
    #region 实例化文档
    /// <summary>
    /// 实例化文档
    /// </summary>
    /// <param name="os">文档相关信息(如路径,打开方式等)</param>
    public void GetInstance(Stream os)
    {
      PdfWriter.GetInstance(document, os);
    }
    #endregion
    #region 打开文档对象
    /// <summary>
    /// 打开文档对象
    /// </summary>
    /// <param name="os">文档相关信息(如路径,打开方式等)</param>
    public void Open(Stream os)
    {
      GetInstance(os);
      document.Open();
    }
    #endregion
    #region 关闭打开的文档
    /// <summary>
    /// 关闭打开的文档
    /// </summary>
    public void Close()
    {
      document.Close();
    }
    #endregion
    #region 添加段落
    /// <summary>
    /// 添加段落
    /// </summary>
    /// <param name="content">内容</param>
    /// <param name="fontsize">字体大小</param>
    public void AddParagraph(string content, float fontsize)
    {
      SetFont(fontsize);
      Paragraph pra = new Paragraph(content, font);
      document.Add(pra);
    }
    /// <summary>
    /// 添加段落
    /// </summary>
    /// <param name="content">内容</param>
    /// <param name="fontsize">字体大小</param>
    /// <param name="Alignment">对齐方式(1为居中,0为居左,2为居右)</param>
    /// <param name="SpacingAfter">段后空行数(0为默认值)</param>
    /// <param name="SpacingBefore">段前空行数(0为默认值)</param>
    /// <param name="MultipliedLeading">行间距(0为默认值)</param>
    public void AddParagraph(string content, float fontsize, int Alignment, float SpacingAfter, float SpacingBefore, float MultipliedLeading)
    {
      SetFont(fontsize);
      Paragraph pra = new Paragraph(content, font);
      pra.Alignment = Alignment;
      if (SpacingAfter != 0)
      {
        pra.SpacingAfter = SpacingAfter;
      }
      if (SpacingBefore != 0)
      {
        pra.SpacingBefore = SpacingBefore;
      }
      if (MultipliedLeading != 0)
      {
        pra.MultipliedLeading = MultipliedLeading;
      }
      document.Add(pra);
    }
    #endregion
    #region 添加图片
    /// <summary>
    /// 添加图片
    /// </summary>
    /// <param name="path">图片路径</param>
    /// <param name="Alignment">对齐方式(1为居中,0为居左,2为居右)</param>
    /// <param name="newWidth">图片宽(0为默认值,如果宽度大于页宽将按比率缩放)</param>
    /// <param name="newHeight">图片高</param>
    public void AddImage(string path, int Alignment, float newWidth, float newHeight)
    {
      Image img = Image.GetInstance(path);
      img.Alignment = Alignment;
      if (newWidth != 0)
      {
        img.ScaleAbsolute(newWidth, newHeight);
      }
      else
      {
        if (img.Width > PageSize.A4.Width)
        {
          img.ScaleAbsolute(rect.Width, img.Width * img.Height / rect.Height);
        }
      }
      document.Add(img);
    }
    #endregion
    #region 添加链接、点
    /// <summary>
    /// 添加链接
    /// </summary>
    /// <param name="Content">链接文字</param>
    /// <param name="FontSize">字体大小</param>
    /// <param name="Reference">链接地址</param>
    public void AddAnchorReference(string Content, float FontSize, string Reference)
    {
      SetFont(FontSize);
      Anchor auc = new Anchor(Content, font);
      auc.Reference = Reference;
      document.Add(auc);
    }
    /// <summary>
    /// 添加链接点
    /// </summary>
    /// <param name="Content">链接文字</param>
    /// <param name="FontSize">字体大小</param>
    /// <param name="Name">链接点名</param>
    public void AddAnchorName(string Content, float FontSize, string Name)
    {
      SetFont(FontSize);
      Anchor auc = new Anchor(Content, font);
      auc.Name = Name;
      document.Add(auc);
    }
    #endregion
  }
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#常用目录文件操作类实例

    本文实例讲述了C#常用目录文件操作类.分享给大家供大家参考.具体分析如下: 这个c#类封装了常用的目录操作,包括列出目录下的文件.检测目录是否存在.得到目录下的文件列表.检测目录是否为空.查找目录下的文件等等功能 using System; using System.Text; using System.IO; namespace DotNet.Utilities { /// <summary> /// 文件操作夹 /// </summary> public static clas

  • C#封装的常用文件操作类实例

    本文实例讲述了C#封装的常用文件操作类.分享给大家供大家参考.具体如下: 这个C#类封装了我们经常能用到的文件操作方法,包括读写文件.获取文件扩展名.复制文件.追加内容到文件.删除文件.移动文件.创建目录.递归删除文件及目录.列目录.列文件等,不可多得. using System; using System.Text; using System.Web; using System.IO; namespace DotNet.Utilities { public class FileOperate

  • C#配置文件操作类分享

    C#配置文件操作类,供大家参考,具体内容如下 注意添加引用:System.Configuration: using System; using System.Collections.Generic; using System.Text; using System.Configuration; namespace DotNet.Utilities.配置文件操作类 { public class ConfigHelper_sufei { /// <summary> /// 根据Key取Value值

  • C#文件操作类分享

    本文实例为大家分享了C#文件操作类的具体代码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using System.Collections; using System.Data.Common; namespace DotNet.Utilities { //JSON转换类 public class

  • C#实现的Excel文件操作类实例

    本文实例讲述了C#实现的Excel文件操作类.分享给大家供大家参考,具体如下: using System; using System.Data; using System.Data.OleDb; using System.Text; using System.IO; namespace Hxh.API { /// <summary> /// ExcelOpration 的摘要说明. /// </summary> public class ExcelOpration { OleDbC

  • C#使用iTextSharp封装的PDF文件操作类实例

    本文实例讲述了C#使用iTextSharp封装的PDF文件操作类.分享给大家供大家参考.具体分析如下: 这个C#代码主要讲iTextSharp中用于操作PDF文件的方法进行了再次封装,可以更加方便的访问PDF文档,可以动态生成PDF文件.添加内容.设置段落.设置字体等. using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace DotNet.Utilities { /// <summary> ///

  • PHP封装的PDO数据库操作类实例

    本文实例讲述了PHP封装的PDO数据库操作类.分享给大家供大家参考,具体如下: <?php class DatabaseHandler { /** * sql语句查询 */ public static function query_data ($dataName,$sql,$query=array()) { $result = array(); if (!empty($sql)) { $data = Bj_PdoDB::factory($dataName)->allPrepare($sql,

  • Python编程快速上手——PDF文件操作案例分析

    本文实例讲述了Python PDF文件操作.分享给大家供大家参考,具体如下: 题目如下: 利用第九章的os.walk()函数编写脚本,遍历文件夹中的所有pdf,用命令行提供的命令对这些PDF进行加密,用原来的文件名加上_encrypted.pdf后缀,保存每个加密的PDF.在删除原来的文件之前,尝试用程序读取并解密该文件,确保被正确加密 然后编写一个程序,找到文件夹中所有加密的PDF文件,利用提供的口令,创建pdf的解密拷贝,如果口令不对,程序应该打印一条消息, 并继续处理下一个pdf文件 思路

  • PHP封装的XML简单操作类完整实例

    本文实例讲述了PHP封装的XML简单操作类.分享给大家供大家参考,具体如下: xml_dom.php封装类文件: <?php /** * Class xml_dom * nodeType: 1 XML_ELEMENT_NODE(元素类型) 2 XML_ATTRIBUTE_NODE 3 XML_TEXT_NODE 4 XML_CDATA_SECTION_NODE 5 XML_ENTITY_REFERENCE_NODE 6 XML_ENTITY_NODE 7 XML_PROCESSING_INSTR

  • Node文件操作汇总实例详解

    目录 前言 文件系统 目录处理 读写文件 文件描述 监控文件 异步文件 删除文件 总结 前言 前两天我们介绍了 Nodejs 中 I/O 的重要组成部分:Buffer对象 和 Stream流,今天我们介绍 Nodejs 的文件系统,包括文件和目录的读写.删除,以及监听文件和目录的修改. 文件系统 Nodejs 内置的 fs模块 可与文件系统进行交互,封装了常规的 POSIX函数.POSIX(Portable Operating System Interface,可移植操作系统接口)是UNIX系统

  • PHP实现的文件操作类及文件下载功能示例

    本文实例讲述了PHP实现的文件操作类及文件下载功能.分享给大家供大家参考,具体如下: 文件操作类: <?php // Copyright 2005, Lee Babin (lee@thecodeshoppe.com) // This code may be used and redistributed without charge // under the terms of the GNU General Public // License version 2.0 or later -- www

  • Python文件操作类操作实例详解

    本文讲述了Python文件操作类的操作实例,详细代码如下: #!/usr/bin/env python #!/usr/bin/env python #coding:utf-8 # Purpose: 文件操作类 #声明一个字符串文本 poem=''' Programming is fun测试 When the work is done if you wanna make your work also fun: use Python! ''' #创建一个file类的实例,模式可以为:只读模式('r'

随机推荐