itextSharp 附pdf文件解析
一、PdfObject: pdf对象 ,有9种,对象是按照对象内涵来分的,如果按照对象的使用规则来说,对象又分为间接对象和直接对象。间接对象是PDF中最常用的对象,如前面对象集合里面的,所有对象都是间接对象,在其他位置通过R关键字来引用,在交叉引用表里面都是通过间接对象来引用的。直接对象就更好理解了,9种对象单独出现的时候就叫直接对象。
PdfObject pdfObject = this.reader.GetPdfObject(index);
pdf对象的公共方法和属性:
public PRIndirectReference IndRef { get; set; }
public int Length { get; }
public int Type { get; }
public bool CanBeInObjStm();
public int CompareTo(PdfObject obj);
public virtual byte[] GetBytes();
public override int GetHashCode();
public bool IsArray();
public bool IsBoolean();
public bool IsDictionary();
public bool IsIndirect();
public bool IsName();
public bool IsNull();
public bool IsNumber();
public bool IsStream();
public bool IsString();
public virtual void ToPdf(PdfWriter writer, Stream os);
public override string ToString();
二、PdfName: is an object that can be used as a name in a PDF-file.- 有常用(官方)名字的pdf对象,根据名字new的pdfObject,俗称Name对象。PdfName 继承自PdfObject
类PdfName的实例化
/** A name */
public static readonly PdfName IDENTITY = new PdfName("Identity");
/** A name */
public static readonly PdfName IF = new PdfName("IF");
/** A name */
public static readonly PdfName IMAGE = new PdfName("Image");
/** A name */
public static readonly PdfName IMAGEB = new PdfName("ImageB");
/** A name */
public static readonly PdfName IMAGEC = new PdfName("ImageC");
/** A name */
public static readonly PdfName IMAGEI = new PdfName("ImageI");
/** A name */
public static readonly PdfName IMAGEMASK = new PdfName("ImageMask");
/** A name */
public static readonly PdfName INCLUDE = new PdfName("Include");
public static readonly PdfName IND = new PdfName("Ind");
/** A name */
public static readonly PdfName INDEX = new PdfName("Index");
/** A name */
public static readonly PdfName INDEXED = new PdfName("Indexed");
/** A name */
public static readonly PdfName INFO = new PdfName("Info");
/** A name */
public static readonly PdfName INK = new PdfName("Ink");
/** A name */
public static readonly PdfName INKLIST = new PdfName("InkList");
由于PdfName 继承自PdfObject,后者的公用方法和属性同样能被前者调用。
三、PdfNameTree ,这个就是pdf“有名"的文档结构树了。
四、Dictionary
用"<<"和">>"包含的若干组条目,每组条目都由key和value组成,其中key必须是name对象,并且
一个dictionary内的key是唯一的;value可以是任何pdf的合法对象(包括dictionary对象).
五、Resources ,是Dictionary 对象
(必须有)记录了当前page用到的所有资源。如果当前页不用任何资源,则这是个空字典。忽略所有字段则表示继承父节点的资源。
itextSharp 附pdf文件解析的更多相关文章
- iTextSharp - 建立PDF文件
原文 iTextSharp - 建立PDF文件 01 using iTextSharp.text; 02 using iTextSharp.text.pdf; 03 ... 04 private vo ...
- iTextSharp生成PDF文件
这是一篇简单的教程,所以只涉及一些iTextSharp生成pdf的简单应用,详细教程请搜索iTextSharp进入官网看官方文档(英文版). iTextSharp官方文档:https://itextp ...
- 利用ITextSharp导出PDF文件
最近项目中需要到处PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...
- 使用iTextSharp修改PDF文件(一)
这个iTextSharp确实是个好东西,可以创建.读取PDF格式的文档,虽然我的需求比较简单,但我首先还是基本上.完整地看完了它的相关文档,不喜欢英文的同志,可以搜索一篇<用C#制作PDF文件全 ...
- C# 利用ITextSharp导出PDF文件
最近项目中需要导出PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...
- C#+ItextSharp 查看pdf文件页面尺寸
1# Nuget下载itextSharp,下载到本地 pm>Install-Package iTextSharp -Version 5.5.10 2# 引用dll,添加命名空间 using iT ...
- C#使用itextsharp生成PDF文件
项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET. 网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下: 使用HTML文 ...
- ITextSharp构造PDF文件
1.1 生成Document Document是我们要生成的PDF文件所有元素的容器,因此要生成一个PDF文档,必须首先定义一个Document对象. Document有三种构造函数: publ ...
- C#使用iTextSharp给PDF文件加水印
给PDF添加水印,可以用iTextSharp. 步骤1:下载iTextSharp 步骤2:在项目中添加引用itextsharp.dll 步骤3:在程序中使用iTextSharp.text.pdf us ...
随机推荐
- PDF 补丁丁 0.4.3.1582 测试版发布:修复上一测试版的问题
新的测试版修复了上一测试版在各功能的文件列表中无法更改单元格文本等一系列问题. 软件界面也略有调整,使新测试版更容易使用.建议下载了旧测试版的用户马上更新到新的测试版.
- PHP中字符串的连接和换行
PHP中字符串的连接使用点,不是加号.换行\n需要用双引号括起来,不能用单引号. eg. <?php print_r("hello"."\n"); pri ...
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
题意:给定一个环形字符串,让他把它分成k份,使得最大的字典序 最小. 思路:二分答案,首先很明显答案所有可能是 n*n种 排序可以先求出最长公共前缀,这样比较就只需要比较公共前缀的下一位就能比较出两 ...
- HTML5全局属性和事件
全局属性和事件能够应用到所有标签元素上,在HTML4中有许多全局属性,比如id,class等.HTML5中又新增了一些特殊功能的全局属性和事件. 属性: HTML5属性能够赋给标签元素含义和语 ...
- 个推推送iOS版 常见问题详解
原文:http://www.oschina.net/question/1782938_234760 1.提交了.p12文件后多久可以测试? 提交后10分钟左右才可以测试,并不是立即生效的. 2 ...
- c#新手之1-如何组织类及相互调用
不知道这个文章的名字起的对不对,姑且这么叫吧.我在这之前用c语言写程序几乎很少用函数调用来解决问题,都是用全局变量然后面向过程对数据做简单的处理,这就造成了我在学习c@之后仍有这个毛病,好点的时候有个 ...
- SharePoint 2016 Beta 2 安装体验
博客地址:http://blog.csdn.net/FoxDave 最近忙碌了一段时间,2016正式版快要发布了,想尽快熟悉熟悉.2016不再提供免费版Foundation的支持,只有Server版本 ...
- android基础(四)service
Service的两种启动方式:startService()与bindService() statService:生命周期:[onCreate()- >onStartCommand()-&g ...
- QT下调用摄像头(opencv2.4.4)
http://www.cnblogs.com/yuliyang/p/3525107.html 项目pro文件: #------------------------------------------- ...
- 移动互联网实战--Web Restful API设计和基础架构
前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...