C#代码实现PDF文档操作类

本文纯干货,贴上PDF文档操作类C#代码,需要添加iTextSharp.dll引用才可以正常通过编译。

废话不多说了,直接给大家贴代码了。

代码如下:

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
 }
}

我们友情提醒需要注意点:需要添加iTextSharp.dll引用才可以正常通过编译。

(0)

相关推荐

  • C#使用iTextSharp从PDF文档获取内容的方法

    本文实例讲述了C#使用iTextSharp从PDF文档获取内容的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using iTex

  • 如何使用C#程序给PDF文件添加编辑域

    PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能. 环境 工具:VS2015 语言:C# 操作PDF类库:iTextSharp 5.5.10 生成的PDF预览的工具:Skim.福昕阅读器.Acrobat Reader 代码实现 获取文档的页数 PdfReader reader = new PdfReader(@"C:\WorkSpace\1.pdf"); int count = reader.N

  • C#如何给PDF文件添加水印

    水印种类及功能介绍 PDF水印分为两种:文本水印和图片水印.文本水印一般被用在商业领域,提醒读者该文档是受版权保护的,其他人不能抄袭或者免费使用.除了这个特征,水印还可以用来标记这个文档 的一些基本状态信息,例如是草稿状态还是最终版本?图片水印是美化PDF文件的一个很好的选择,它可以用多彩的.独特的图片来作为PDF文件的背景.那么,怎样用编程的方式给PDF文件 添加水印呢?有很多种实现方法,其中一种最快最容易的办法也许是用第三方软件,例如Spire.PDF.本文会阐述怎样用免费的第三方软件Spi

  • 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> ///

  • C#获取指定PDF文件页数的方法

    本文实例讲述了C#获取指定PDF文件页数的方法.分享给大家供大家参考.具体如下: using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Forms; namespace RobvanderWoude { class PDFPageCount { static int Main( string[] args ) { #region Get help if ( args.Le

  • c#实现pdf的另存为功能

    今天跟大家分享一个实现PDF另存为的效果,是调用Acrobat SDK的JavaScript实现的. 复制代码 代码如下: /// <summary>        /// PDF另存为效果        /// </summary>        /// <param name="fileName">PDF文件名</param>        /// <param name="saveFileName">

  • 用C#来解析PDF文件

    1. 介绍 这个项目让你可以去读取并解析一个PDF文件,并将其内部结构展示出来. PDF文件的格式标准文档可以从Adobe那儿获取到. 这个项目基于"PDF指南,第六版,Adobe便携文档格式1.7 2006年11月". 它是一个恐怕有1310页的大部头. 本文提供了对这份文档的简洁概述. 与此相关的项目定义了用来读取和解析PDF文件的C#类. 为了测试这些类,附带的测试程序PdfFileAnalyzer让你可以去读取一个PDF文件,分析它并展示和保存结果. 程序将PDF文件分割成单独

  • C#实现PDF文件添加图片背景

    本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然可以在页面中设置背景图. 但有些内容过长夸页面的时候,就很难设置背景图,变成了空白背景的页面! 以下是重新生成每一页PDF背景图功能代码! public void SetPdfBackground(string pdfFilePath) { //重新生成的 PDF 的路径 string destFile = HttpContext.Current.Server

  • C#怎么给PDF添加背景图片

    今天要实现的是给PDF文件添加图片背景这个功能.PDF是近年来最流行的文件之一,无论是办公还是日常生活中都经常会用到,很多时候,PDF文件的背景色都是白色,看多了难免觉得累,更换PDF的背景不仅可以让眼睛看起来更舒服,还可以让PDF文件看上去更美观.如何实现?作为一名程序猿,当然要亲自"操刀上阵",这篇文章我主要写的是如何使用C# 给PDF文件添加图片背景. 这是我准备的PDF文件: 代码使用: 第一步:创建一个Visual C#控制台项目,添加引用并使用命名空间. using Sys

  • C#代码实现PDF文档操作类

    本文纯干货,贴上PDF文档操作类C#代码,需要添加iTextSharp.dll引用才可以正常通过编译. 废话不多说了,直接给大家贴代码了. 代码如下: using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace DotNet.Utilities { /// <summary> /// PDF文档操作类 /// </summary> //---------------------------

  • MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 下面给大家介绍MongoDB查询文档操作的实例 先把student删除,再重新插入数据 > db.student.drop() true > db.student.insert([{ "_id" : 1, "

  • 使用C#给PDF文档添加注释的实现代码

    整理文档时,我们可能会需要在一些或一段文字上添加注释加以说明,那如何以编程的方式实现呢?本文将实例讲述C#中如何使用免费组件给PDF文档添加文本注释,包括自由文本注释.自由文本注释能允许我们自定义它的风格和外观,非常具有实用价值. 首先,下载这个免费版组件Free Spire.PDF.组件下载安装后,Visual Studio创建C#控制台项目,添加bin文件夹的.DLL作为引用以及以下命名空间: using System; using System.Drawing; using System.

  • 三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导入: 方法1:下载jar包.下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar导入java程序. 方法2:可通过maven库导入.参考导入方法. Java代码示例 [示例1]静默打印 即通过使用默认打印机直接打印PDF文档.打印时,我们可以设置打印份数,设置纸张打印页边距等. impo

  • Java 生成PDF文档的示例代码

    最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间查找了相关的资料.整理之后,发现有几个框架可以实现这个功能. 1. 开源框架支持 iText,生成PDF文档,还支持将XML.Html文件转化为PDF文件: Apache PDFBox,生成.合并PDF文档: docx4j,生成docx文档,支持转换为PDF格式. 2. 实现方案 比较了一番后,采用了FreeMarker+docx4j+Apache PDFBox的方案: maven依赖 <!-- pdfbox --> &

  • C#打印PDF文档的10种方法(小结)

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这里归纳了10种打印需求及方法.如下: 使用默认打印机打印PDF文档 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档 指定打印机及PDF文档打印页码范围 静默打印PDF文档 双面打印PDF文档 黑白打印PDF文档 打印PDF文档时选择不同的出纸盒

  • .NET中开源文档操作组件DocX的介绍与使用

    前言 相信大家应该都有所体会,在目前的软件项目中,都会较多的使用到对文档的操作,用于记录和统计相关业务信息.由于系统自身提供了对文档的相关操作,所以在一定程度上极大的简化了软件使用者的工作量. 在.NET项目中如果用户提出了相关文档操作的需求,开发者较多的会使用到微软自行提供的插件,在一定程度上简化了开发人员的工作量,但是同时也给用户带来了一些困扰,例如需要安装庞大的office,在用户体验性就会降低很多,并且在国内,很多人都还是使用wps,这就导致一部分只安装了wps的使用者很是为难,在对Ex

  • 详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)

    在目前的软件项目中,都会较多的使用到对文档的操作,用于记录和统计相关业务信息.由于系统自身提供了对文档的相关操作,所以在一定程度上极大的简化了软件使用者的工作量. 在.NET项目中如果用户提出了相关文档操作的需求,开发者较多的会使用到微软自行提供的插件,在一定程度上简化了开发人员的工作量,但是同时也给用户带来了一些困扰,例如需要安装庞大的office,在用户体验性就会降低很多,并且在国内,很多人都还是使用wps,这就导致一部分只安装了wps的使用者很是为难,在对Excel的操作方面,有一个NPO

  • 用PHP编写PDF文档生成器

    PHP一个最大的优点就是它对新技术的支持非常容易,这种语言的可扩展性使得开发人员能够很方便地添加新的模块,而且遍布世界的技术团体的支持和众多扩展模块的支持使得PHP已经成为功能最齐全的Web编程语言之  一.目前可得到的扩展模块已经能够使开发人员执行IMAP和POP3操作,可以动态产生图象和Shockwave Flash动画,进行信用卡验证,敏感数据的加密解密,还能够解析XML格式的数据.但这还不是全部,现在,又有一个新的模块可以与PHP进行绑定了,那就是PDFLib扩展模块,它能够让开发人员动

  • PHP中使用TCPDF生成PDF文档实例

    实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDF,TCPDF是一个用于快速生成PDF文件的PHP5函数包.TCPDF基于FPDF进行扩展和改进,增强了实用功能. 特性 TCPDF具有以下特性: 1.支持页面页脚: 2.支持HTML标签代码: 3.支持jpg/png/gif/svg图形图像: 4.支持表格: 5.支持中文字符:(有些PDF类不支持中文或者处理中文相当麻烦) 6.自动分页,自动页码,等等.

随机推荐