法律[引]软件随笔权登记报名所要文件

发布时间:2018-12-17  栏目:法律  评论:0 Comments

转:http://www.cnblogs.com/zhuor/archive/2005/12/31/308908.html

本文引自:http://www.ccopyright.com.cn/cpcc/bqdj.jsp?fck&columnid=704&articleid=14162 [中国版权尊崇核心]

StreamWriter pPDF=new StreamWriter(filePath);

软件作品权登记申请文件应该包括:软件小说权登记申请表、软件的鉴别资料、申请人身份注明和相关的印证文书各一仪式一份。
    1、软件作品权登记申请表
   
应付出在线填写的报名表打印件,请不复制、下载和随意更改表格格式,签章应为原件。
    2、软件(程序、文档)的识别资料
   
•一般交存:源程序和文档应交由前、后每连续30页,不足60页的,应当尽提交;
   
•例外交存:请按《总括机软件作品权登记模式》第十二久规定的章程有提交软件的辨认资料。
   
注:申请人只要于源程序和文档页眉上标明了所申请软件的称号以及本子号,应当与报名表中相应内容完全一致,右上比赛应标注页码,源程序每页不少于50履,最终一页应是先后的毕页,文档每页不少于30尽,有图除外。
    3、有关表明文件
    注脚文件包括:申请人和代理人的身份讲明文件、权利归注解文件等。
    ①代表身份阐明文件
   
登记申请委托代理的,应当交付代表的身份讲明文件复印件,申请表中应该肯定委托事项、委托权限限制、委托期限等内容。 
    ②申请人有效身份注脚文件(单位的需盖公章)
    •集团责任人单位交付有效的信用社责任人营业执照副本的影印件;
    •事业法人单位交付有效的事业单位责任人关系副本的影印件;
    •协会法人单位交付民政部门出具的中之协会法人关系的复印件;
    •其他社团提交工商管理机关或者民政部门出具的表明文书复印件;
   
•随笔权人为自然人的,应交有效的自然人身份证复印件(正反面复印);并需要提交非职务开发保证书或非职务开发讲明。(可以交软件登记报名事项中下载《非职务开发注解》和《非职务开发保证书》)。
   
•随笔权人为外国自然人的,应付出护照复印件,及护照复印件的国语译本,并索要翻译者签章。同时,需付出非职务开发保证书或非职务开发讲明。
   
•随笔权人为香岛小卖部责任人的,应送交登记登记证件及有效期内之商业登记证书正本复印件,并要通过中国司法部委托的香江律师公证。
   
•小说权人为山东店责任人的,需出示经江西法院要公证部门验证的责任人士身份表明文件,填写并提交《安徽保表明》。
   
•随笔权人为外法人与此外社团的,应送交申请人依法注册并兼有法人资格的法网讲明文件,该注脚文件须通过中国屯本土领事馆的证实要经地点公证机构公证方为中。申请时需交公证或注明的表明文件原件。近来国外法人为所在国家要地区不同,其付出的责任职员身份评释文件内容跟格式会有所不同,但文件被的为主音讯件承诺至少包括1、法人名称;2、注册日期、3、注册地、4、注册认证号码、5、评释文件的有效期等骨干音讯。
   
以上身份注解文件和和注册有关的另讲明文件(例如:合同依旧协商等注解)是外国语的,须一并交给经有翻译资质的单位翻译并加其公章的华语译本原件。
    ③权归的辨证文件
    •委托开发的,应当提交委托开发合同;
    •合作开发的, 应当交付合作开发合同;
    •下达任务开发之, 应当交付上级部门的下达任务书;
    4、其他申明文件
    修改旁人软件应当授权许可的,应当提交授权书;
    受让取得软件作品权的, 应当交付软件著作权转让协议;
   
享有小说权的法人或其他社团有改变、终止后,由承受其义务权利的担保人或外团伙具有作品权。登记时,需要付出关于集团改变(合并或者分立)、终止之股东会或董事会决定、企业合并协议、清算报告、公司裁撤讲明等息息相关声明文件;
   
继承人继承的,需要提供的验证文书包:被后人的凋谢讲明、被继承人有效遗嘱、与给后世的涉嫌注解、继承人身份评释、法院的法律文书等。
   
如已注册软件的作品权暴发继受,权利就受方办理作品权登记时需召开随笔权登记概略查询,查询结果是做注册报名的文件之一,并到回原来登记证书。 
   
注释:申请文件应当使用A4纸,纵向、单面打印,文字应当自错误望左边排列。文档和源程序需黑白打印。申请文件各有应该各自就此数字顺序以右手上斗号页码。所有登记材料中起的版本号,应同申请表中保持完全一致(例如:版本号被生或凭“V”,应保持一致性)。

ArrayList xRefs=new ArrayList();

float yPos =0f;

long streamStart=0;

long streamEnd=0;

long streamLen =0;

string strPDFMessage=null;

//PDF文档头音讯

strPDFMessage=”%PDF-1.1\n”;

ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);

strPDFMessage=”1 0 obj\n”;

ConvertToByteAndAddtoStream(strPDFMessage);

strPDFMessage=”<< /Length 2 0 R >>\n”;

ConvertToByteAndAddtoStream(strPDFMessage);

strPDFMessage=”stream\n”;

ConvertToByteAndAddtoStream(strPDFMessage);

……

看了点的造模式,我眼镜还损坏坏了三帧,假使就此点这样原本之道能打出满足的PDF文件,这必然是天才所为。后来,我自一个网站(网址:http://itextsharp.sourceforge.net/index.[HTML](http://www.blue1000.com/bkhtml/c22/))中看到了专门制作PDF文件的控件的介绍,暗喜之余,立马下载试验,果然非常轻松地制作出了想要的PDF文件,因为网站为英文,内容又多,读起来非常费力,在解决了自己的问题后,看到许多网友还在为PDF文件制作而郁闷,遂决定将该内容翻译为中文,由于本人英语水平一般,许多地方又晦涩难懂,故翻译质量不是很满意,敬请斧正,但大部分能看懂。本文的目的一是解决部分网友的燃眉之急,二是抛砖引玉,如果哪位仁兄愿意将该网站中的内容准确翻译出来,则是天下之大幸。

设若就此本文的点子生成PDF文件,需要少单控件:itextsharp.dll和IC夏普(Sharp)Code.SharpZipLib.dll,由于示例代码实在太多,我拿代码全体整理出来,放在其余一个文件“示例代码.doc”中,所有这一个资源,我全位居了自的ftp站点(ftp://202.107.251.26)上的“Pdf文件制作全攻略”文件夹着(文件夹着此外两单rar压缩文件为寡单控件的源代码,供大家学习啄磨用),你得到此处下充斥相应的资源,或者直接到原来网站下载。

也好调试和描述,所有例子均为DOS控制台程序,windows程序下方法了相同,遵照下边的手续成立一个不过调试的连串:

1、 打开VS2003;

2、 单击菜单“文件”→“新建”→“项目”,在项目项目中精选“Visual
C#品种”,在模板被摘“控制台应用程序”,输入文件名称如“MakePdf”,指定好存放路径,然后点确定按钮;

3、
在“解决方案资源管理器”中右键单击“引用”,从弹出的菜单中接纳“添加引用”,在“.NET”选项夹着精选“浏览”,添加前提到的点滴独应用,如下图:

4、 在代码窗口顶部添加少独援:

using iTextSharp.text;

using iTextSharp.text.pdf;

由来,准备工作完毕。

第一有的 iText的略以
首先章 创立一个Document
利用iText五步创造一个PDF文件:helloword。

首先步,成立一个 iTextSharp.text.Document对象的实例:

Document document = new Document();

次步,为该Document创建一个Writer实例:

PdfWriter.getInstance(document, new FileStream(“Chap0101.pdf”,
FileMode.Create));

其三步,打开时Document

document.Open();

季步,为当下Document添加内容:

document.Add(new Paragraph(“Hello World”));

第五步,关闭Document

document.Close();

全部的代码见示例代码0101。

当例中,不难看出,制作一个PDF文件是分外简单的。

注:如若你将例中“document.Add(new Paragraph(“Hello
World”));”中的字符串“Hello
Word”换成粤语,如“这是自个儿的第一独PDF文件”,发生的结果一定给你白璧微瑕,因为变化的PDF文件中并没用粤语彰显出,不要担心,在第9章中而专门教字体问题,中文展现为即解决了,如若非可以对突显普通话,也便从未有过必要翻译本文了。

脚对及时几乎步做详细介绍。

首先步 创造一个Document实例:
iText夏普(Sharp).text.Document-object共发出两个构造函数:

public Document();

public Document(Rectangle pageSize);

public Document(Rectangle pageSize,

int marginLeft,

int marginRight,

int marginTop,

int marginBottom);

法律,率先只构造函数以A4页面作为参数调用第二独构造函数,第二个构造函数以各级度36称页边距为参数调用第八只构造函数

u 页面尺寸:

您可由此点名的水彩与分寸创制而协调的页面,示例代码0102创设一个纤细的浅棕色背景的页面:

Rectangle pageSize = new Rectangle(144, 720);

pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);

Document document = new Document(pageSize);

一般说来,你不用成立这样的页面,而足于下页面尺寸中挑选:

A0-A10, LEGAL, LETTER, HALFLETTER, _11x17, LEDGER, NOTE, B0-B5,
ARCH_A-ARCH_E, FLSA 和 FLSE

绝大多数状下使用纵向页面,假使期待使横向页面,你独自须拔取rotate()函数:

Document document = new Document(PageSize.A4.rotate());

详见代码见示例代码0103。

u 页边距:

当成立一个文本时,你仍是可以定义及、下、左、右页边距:

Document document = new Document(PageSize.A5, 36, 72, 108, 180);

以演示代码0104中您得见见该文档有一个0.5英寸的左手距同1英寸的右侧距,下边距为1.5英寸,上面距为2.5英寸。

说明:

当创建一个矩形或设置边距时,你可能要知道该用什么度量单位:分米、英寸或象素,事实上,默认的心胸系统为排版单位磅为基础得出此外单位之贴近似值,如1英寸=72称,假使你想当A4页面的PDF中创建一个矩形,你要总括以下数据:

21 厘米 / 2.54 = 8.2677 英寸

8.2677英寸* 72 = 595 磅

29.7 厘米 / 2.54 = 11.6929 英寸

11.6929英寸* 72 = 842 磅

默认边去为36磅即半英寸。

而你改改了页面尺寸,仅仅影响至下一样页,假若你改改了页边距,则影响到周,故慎用。

至于页面的起来值,请参见第三步。

第二步 创建Writer实例
如果创建了document,我们得创制该文档的多独Writer的实例,所有这些Writer实例均继承自抽象类“iText夏普(Sharp).text.DocWriter”。

再者还有其它一种植状态,你得用iTextSharp.text.pdf.PdfWriter爆发文档PDF文件,假如您想创制一个TeX文档,你能够动用iText夏普.text.TeX.TeXWriter包。

Writer类的构造函数是个体的,你不得不通过下的主意创设一个实例:

public static xxxWriter getInstance(Document document, Stream os);(xxx
是 Pdf 或 XML)

卿可以经上边的方创造一个实例:

PdfWriter writer = PdfWriter.getInstance(document, new
FileStream(“Chap01xx.pdf”));

只是若几永远不会见为此到Writer实例(除非您想创设高级PDF或者想就此部分非凡特殊之函数,如ViewerPreferences
或 Encryption)。所以经过下的办法取实例已经足足了:
PdfWriter.getInstance(document, new FileStream(“Chap01xx.pdf”));

以第一步着创立一个文档时,第一独参数意义不生,第二个参数可以是其他一样栽流动,到方今结束我们直接以System.IO.FileStream将Document写副文件中,示例代码0105用到了System.IO.MemoryStream(这不是一个独门的例证,你必须在Servlet
Engine中测试这么些代码。

第三步 打开Document
u 摘要

以您写副此外实际多少在此以前,你也许想因此以下二种植艺术勾勒副一些关于以文档的摘要:

public boolean addTitle(String title)

public boolean addSubject(String subject)

public boolean addKeywords(String keywords)

public boolean addAuthor(String author)

public boolean addCreator(String creator)

public boolean addProducer()

public boolean addCreationDate()

public boolean addHeader(String name, String content)

若得采纳自己之题、主旨、关键字、作者、创造程序,但以下产品音讯用直让抬高:iTextSharp(或者iText夏普的援)和创时间(实际上这半种植模式是半自动调用的)。

乃还足以用起定义之称添加为“报头音信”,然而就对于PdfWriter没有任何功能,假设省实例代码0101发生的pdf文件的“文档属性”,大家可以看出仅有PDF创立程序及制品日期,而示例代码0106的“文档属性”框中生出还多的信。

开辟document前如若开的事:

公不得不于Open方法调用往日增长摘要,这是iText开发工具提供的一个增选。

HTML饱受,报头消息为放在文档前边报头标识中间,调用Open方法以造成报头新闻写入流,由此当Document被辟后无法改变这么些多少。

PDF报头消息不包摘要,看起有像样于:

%PDF-1.2

该行显示生成的文档是一个版本为1.2的PDF格式的文书,在PDF中,摘要保存于PdfInfo对象中,当文档关闭时一度勾勒副PdfWriter中了,由此,没有关于为何非克修改库来满足任什么日期刻添加或转移摘要的艺原因

u 页面开头化

Open方法以不同之Witer中并且会生出起先化事件,举例来说,如若您要一个水印或者页眉页角对象出现在文档第一页的上马处于,你得以打开文档前加加那个,同样的用于安装该文档其他页水印、页眉、页角、页数和尺寸。

当调用下列情势:

public bool setPageSize(Rectangle pageSize)

public bool Add(Watermark watermark)

public void removeWatermark()

setting Header property

public void resetHeader()

setting Footer property

public void resetFooter()

public void resetPageCount()

setting PageCount property

暴发的结果不得不以产一个新页中看到(当在本页调用起始化方法时),代码见示例代码0107,你必使预备同摆放称吧watermark.jpg的图纸,如下图:

u 阅读器参数:

你可以由此下边的主意呢PDF文件指定一些阅读器 (如Adobe 里德(Reade)r) 参数:

public void setViewerPreferences(int preferences)

当示范代码0108中,指定了脚有参数:

writerA.setViewerPreferences(PdfWriter.PageLayoutTwoColumnLeft);

writerB.setViewerPreferences(PdfWriter.HideMenubar |
PdfWriter.HideToolbar);

writerC.setViewerPreferences(PdfWriter.PageLayoutTwoColumnLeft |
PdfWriter.PageModeFullScreen |
PdfWriter.NonFullScreenPageModeUseThumbs);

正好使您所观察底,参数可以利用以下部分常量:

l 文件被辟时,页面布局用到脚的内部一个 :

PdfWriter.PageLayoutSinglePage – 同时就展示一个页面
PdfWriter.PageLayoutOneColumn –单列呈现
PdfWriter.PageLayoutTwoColumnLeft –双列彰显,奇数页在左
PdfWriter.PageLayoutTwoColumnRight -双列展现,奇数页在右
l 文件打开时,页面模式下上面其中某:

PdfWriter.PageModeUseNone – 既非彰显大钢也非彰显缩略图
PdfWriter.PageModeUseOutlines – 突显大纲
PdfWriter.PageModeUseThumbs – 呈现缩略图
PdfWriter.PageModeFullScreen –
全屏形式,没有菜单、windows控件或者其他任何windows可见控件
l PdfWriter.HideToolbar – 当文档激活时,是否藏阅读程序(如Adobe
Reader)的家伙条

l PdfWriter.HideMenubar -当文档激活时,是否隐伏阅读程序的菜单.

l PdfWriter.HideWindowUI
-当文档激活时,是否隐身阅读程序的界面元素,如滚动长、导航条等,而一味保留文档展现

l PdfWriter.FitWindow – 是否调整文档窗口尺寸为合乎展现第一页。

l PdfWriter.CenterWindow – 是否以文档窗口放到屏幕核心

l 以全屏形式下,指定怎么样体现界面元素(选取一个)

PdfWriter.NonFullScreenPageModeUseNone -既非显大钢也非显缩略图
PdfWriter.NonFullScreenPageModeUseOutlines – 显示大钢
PdfWriter.NonFullScreenPageModeUseThumbs – 展现缩略图
征:你只可以当类PdfWriter中调用这多少个办法。

u 加密

打开文档在此以前还要做的一模一样码业务虽是加密(假设你指望该文档加密),要上这目的,你得运用下的法子:

public void setEncryption(boolean strength, String userPassword, String
ownerPassword, int permissions);

strength 是底下两独常量之一:
PdfWriter.STRENGTH40BITS: 40 位
PdfWriter.STRENGTH128BITS: 128号 (Acrobat Reader 5.0暨以上版本协助)
UserPassword和ownerPassword 可以为空或零长度, 那种状态下,
ownerPassword 将让肆意的字符串代替
Permissions 为下列常量之一:
PdfWriter.AllowPrinting
PdfWriter.AllowModifyContents
PdfWriter.AllowCopy
PdfWriter.AllowModifyAnnotations
PdfWriter.AllowFillIn
PdfWriter.AllowScreenReaders
PdfWriter.AllowAssembly
PdfWriter.AllowDegradedPrinting
欠意义参见示例代码0109和示范代码0110。

writer.setEncryption(PdfWriter.STRENGTH40BITS, null, null,
PdfWriter.AllowCopy);

示范代码0109暴发的公文可以让打开而并非密码,但用户不可知打印、修改以文档。

writer.setEncryption(PdfWriter.STRENGTH128BITS, “userpass”, “ownerpass”,
PdfWriter.AllowCopy | PdfWriter.AllowPrinting);

于而打算打开示例代码0110暴发的文书时,将要求输入密码(’userpass’),因为上加了AllowPrinting参数,你可以打印该文档而休会面生出其他问题。

季步 添加内容
每当解说第一步到第三步之不比示例中,你或许早已撞了有靶要Phrase,
Paragraph等 在连下去的几乎段中,所有那么些题目都用取得详细表达。

偶尔你可能想一个writer故意忽视document发生的表现,如示例代码0111:

当我们创建了一定量只writer: writerA 和 writerB:

PdfWriter writerA = PdfWriter.getInstance(document, new
FileStream(“Chap0111a.pdf”, FileMode.Create));

PdfWriter writerB = PdfWriter.getInstance(document, new
FileStream(“Chap0111b.pdf”, FileMode.Create));

俺们可创设多个发细微差异的文档:

writerA.Pause();

document.add(new Paragraph(“This paragraph will only be added to
Chap0111b.pdf, not to Chap0111a.pdf”));

writerA.resume();

若得对比文件: Chap0111a.pdf和Chap0111b.pdf的分别

第五步,关闭 document
关闭 document 非凡重要,
因为她将闭馆在运作的Writer并以内容写副文件,该法以最终吃调用,你当总是要关门文档。

高档话题:阅读PDF文件

欠部分情节介绍了iText只好有PDF格式的文本要休可知分析PDF格式文件,不再翻译。

其次章 块、短句和段子

片(Chunk)是能让填补加到文档的文本的最为小单位,块好用来构建其他基础元素如短句、段落、锚点等,块是一个起确定书的字符串,要增补加块到文档中时常,其他具有布局变量均设吃定义。下边一行中,我们创造了一个情也“hello
World”、青色、斜体、COURIER字体、尺寸20的一个块:

Chunk chunk = new Chunk(“Hello world”,
FontFactory.getFont(FontFactory.COURIER, 20, Font.ITALIC, new Color(255,
0, 0)));

u 典型字体1:

在本指南中,除了第离骚他(你可以于这边学会运用此外字体),我们拿老用典型字体1,这多少个是例外之典型字体1:

· Courier (该字体定宽)

· Helvetica

· Times Roman

· Symbol

· ZapfDingbats

u 下划线/删除线

设若您愿意有片有下划线或删除线,你可以通过转字体风格简单好:

Chunk chunk1 = new Chunk(“This text is underlined”,
FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));

Chunk chunk2 = new Chunk(“This font is of type ITALIC | STRIKETHRU”,
FontFactory.getFont(FontFactory.HELVETICA, 12, Font.ITALIC |
Font.STRIKETHRU));

u 上标/下标

以片被来两只情势可调用,其中绝大多数拿当接入下的段中牵线,本章中只有介绍一个法
setTextRise(float f). 你可行使该措施以上标或下标中写块。

u 块的背景

而你想转块的背景,你可选拔情势setBackground(Color color).
这将在片文本的下加加一个花矩形:

ck.setBackground(new Color(0xFF, 0xFF, 0x00));

以演示代码0101中,你得一览典型字体1跟一个运用setTextRise,
setBackground等方法的的事例。

短句
短句(Phrases)是同样密密麻麻以特定间距(两行之间的偏离)作为参数的丘,一个短句有一个主字体,但缺少句被之一些块有不同于主字体的书,你有重新多之挑选去创设短句,一些有血有肉应用参见代码0202。

u 古波兰语

坐古越南语日常使用,在类Phrase的构造函数中起一个表征:将一个字符串作为参数(假使你想制止这种场合,你不得不以块工作要非可知使用字符串),正使您以演示代码0203中看看的,这么些特点自动地用913到937(除903)和945到969(古希腊的ASCII值)范围外的持有字体改也希腊记。

u 非紧要性

不如说立即是一个特点,不如说是一个缺陷,但不管如何,这如创办一个未紧要性的缺失句或段落成为可能,那将暴发一个由下向上书写的旋成效(参见示例代码0204)。即便你想当一如既往页中拿有些职务走及者时可能来因而。

表明,当你通过下边届时不可以检查,也无主意给您回到前无异页。

段落
段是一样多重块及(或)短句。同短句一样,段落有确定的间隔。用户还得指定缩排;在边和(或)右侧保留得空白,段落可以不当对同、右对同和在中对旅。添加到文档中的诸一个段子将活动另于一行。有几乎种方法建立一个段,如:

Paragraph p1 = new Paragraph(new Chunk(“This is my first paragraph.”,
FontFactory.getFont(FontFactory.HELVETICA, 12)));

Paragraph p2 = new Paragraph(new Phrase(“This is my second paragraph.”,
FontFactory.getFont(FontFactory.HELVETICA, 12)));

Paragraph p3 = new Paragraph(“This is my third paragraph.”,
FontFactory.getFont(FontFactory.HELVETICA, 12));

具备小对象将于补加到段中:

p1.add(“you can add strings, “); p1.add(new Chunk(“you can add chunks
“)); p1.add(new Phrase(“or you can add phrases.”));

表达:一个段有一个都仅暴发一个间距,倘若你加加了一个不比字的差句或块,原来的间隔还是有效,你可经SetLeading来改变间距,不过段落中具有情节将以初的面临的距离。见示例代码0205。

u 保持段落的全部性

于示范代码0206中,我们以了setKeepTogether(true)方法来总括用一个截在同等页中,该情势并无是镇有效,举个例子,第一段子非克正好好以相同页中,于是吃分为了点儿有的。第二段落为停于其次页,但第三段子顺沿到了第三页上。

书的接轨
汝该控制字体延续的部分平整,这个规则的下见示例代码0207,当我们用片内容用指定的书(非默认字体)创立一个短句或者段落后再一次续加更多内容通常,开始对象的字体风格将吃延续,请看“Hello
1!”和“Hello 2”:

Phrase myPhrase = new Phrase(“Hello 2! “, new
Font(Font.TIMES_NEW_ROMAN, 8, Font.BOLD));

myPhrase.Add(new Phrase(“some other font “, new Font(Font.HELVETICA, 8,
Font.ITALIC)));

myPhrase.Add(new Phrase(“This is the end of the sentence.\n”, new
Font(Font.TIMES_NEW_ROMAN, 8, Font.ITALIC)));

document.Add(myPhrase);

俺们是因为提姆es New Roman
粗体字起初,添加一些文件以Helvetica字体而不指定风格,大家发现文本为更改成了粗体,当大家又加有文件下提姆(Tim)es
New Roman字体和斜体风格,结果变成了有点斜体。

倘我们用FontFactory来成立字体,字体风格不会晤受持续,因为FontFactory使用了此外的艺构建一个书:

myPhrase = new Phrase(“Hello 1bis! “,
FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 8, Font.BOLD));

myPhrase.Add(new Phrase(“some other font “,
FontFactory.getFont(FontFactory.HELVETICA, 8, Font.ITALIC)));

myPhrase.Add(new Phrase(“This is the end of the sentence.\n”,
FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 8, Font.ITALIC)));

document.Add(myPhrase);

当上头的代码中,使用Helvetica字体的文件风字体没有点名(既非是粗体也非是斜体)。拔取提姆(Tim)es
New Roman的额外文本仅仅显示也斜体。

君呢看到大家加加了一个段子,添加该段落就不啻一个短句。

Paragraph myParagraph = new Paragraph(“Hello 1! “, new
Font(Font.TIMES_NEW_ROMAN, 8, Font.BOLD));

myParagraph.Add(new Paragraph(“This is the end of the
sentence.”,FontFactory.getFont(new Font.TIMES_NEW_ROMAN, 8)));

document.Add(myParagraph);

若得无这么做,但以错过字体风格的继续,首先不用别样字体创设段落(例中大家一味为字体出区间为1.5倍),然后上加内容的不等部分。

myParagraph = new Paragraph(12);

myParagraph.Add(new Paragraph(“Hello 3! “, new
Font(Font.TIMES_NEW_ROMAN, 8, Font.BOLD)));

myParagraph.Add(new Paragraph(“This is the end of the sentence.”, new
Font(Font.TIMES_NEW_ROMAN, 8, Font.ITALIC)));

document.Add(myParagraph);

倘若你以了Phrase对象,你同一会失去字体风格的接轨:

myPhrase = new Phrase(12);

myPhrase.Add(new Phrase(“Hello 4! “, new Font(Font.TIMES_NEW_ROMAN, 8,
Font.BOLD)));

myPhrase.Add(new Phrase(“This is the end of the sentence.”,
newFont(Font.TIMES_NEW_ROMAN, 8, Font.ITALIC)));

document.Add(myPhrase);

u 更改分割符

一般说来,当文本不可知放在一行时,文本以让分开成不同之组成部分,iText首先会找分割符,假设无找到,文本以当行尾被截断。有一部分约定的细分符如“
”空格和“-”连字符,然而若可行使setSplitCharacter方法来罩那一个默认值。在示范代码0208中,你得观察当到达行尾时一个块是哪给分割的。然后分隔符被改化点“.”,该行以该字符处被细分。

老三段 锚点、列表和注释
锚点
大家且知HTML遇的超文本链接,当咱们点击某些语句,你可知过反至网上的外页。在PDF中吗足以兑现这种效应。事实上,在第十一节整个章节中来有关PDF链接的牵线,但这是iText的双重高级的施用,本章中我们处理大概的iText。

一经您想以文档中补充加一个外表链接(例如利用URL链接到WEB上之另文档),你可概括地使用Anchor对象,它派生于Phrase对象,使用方法一致。唯有简单种额外措施定义两栽额外变量:setName和
setReference。

表链接示例:

Anchor anchor = new Anchor(“website”,
FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE, new
Color(0, 0, 255)));

anchor.Reference = “http://itextsharp.sourceforge.net“;

anchor.Name = “website”;

假定您想上加内链接,你要采用该链接不同之号,就象而相位在HTML惨遭接纳名称作为锚点一样。为达该目的,你要充分一个“#”。

其间链接示例:

Anchor anchor1 = new Anchor(“This is an internal link”);

anchor1.Name = “link1”;

Anchor anchor2 = new Anchor(“Click here to jump to the internal
link”);

anchor.Reference = “#link1”;

即点儿单链接的例子请见示例代码0301。

列表
经类似List
和ListItem,你得增长列表到PDF文件被,对于列表你还可择是否排序。

排序列表示例:

List list = new List(true, 20);

list.Add(new ListItem(“First line”));

list.Add(new ListItem(“The second line is longer to see what happens
once the end of the line is reached. Will it start on a new line?”));

list.Add(new ListItem(“Third line”));

结果如下:

First line
The second line is longer to see what happens once the end of the line
is reached. Will it start on a new line?
Third line
莫排序示例如下:

List overview = new List(false, 10);

overview.Add(new ListItem(“This is an item”));

overview.Add(“This is another item”);

结果如下:

This is an item
This is another item
你可以经setListSymbol方法还改列表符号:

// 用字符串作为列表符号

list1.ListSymbol = “*”;

// 用Chunk 作为列表符号(包含“•”字符)

list2.ListSymbol = new Chunk(“\u2022”,
FontFactory.getFont(FontFactory.HELVETICA, 20));

//用图作为列表符号

list3.ListSymbol = new Chunk(Image.getInstance(“myBullet.gif”), 0, 0);

尚可以使setIndentationLeft和setIndentationRight方法设置缩排,列表符号的缩排在构造函数中设置。更多之例证请参见示例代码0302。

注释
iText补助不同风格的声明。

u 文本注释:

公可互补加相同微截文本及您的文档中,但它们不用文档内容的一样部分,注释有题目和情节:

Annotation a = new Annotation(

“authors”,

“Maybe it’s because I wanted to be an author myself that I wrote
iText.”);

u 外部链接注释:

君要指定一个可是点击的矩形和一个字符串(URL描述)或URL对象:

Annotation annot = new Annotation(100f, 700f, 200f, 800f, new
URL(“http://www.lowagie.com“));

Annotation annot = new Annotation(100f, 700f, 200f, 800f,
http://www.lowagie.com“);

u 外部PDF文件链接注释:

汝要指定一个只是点击的矩形和一个字符串(文件名称)和目的文件或者页码。

Annotation annot = new Annotation(100f, 700f, 200f, 800f, “other.pdf”,
“mark”);

Annotation annot = new Annotation(100f, 700f, 200f, 800f, “other.pdf”,
2);

u 指定行为链接注释

公要指定一个只是点击的矩形和一个指定的行为:

Annotation annot = new Annotation(100f, 700f, 200f, 800f,
PdfAction.FIRSTPAGE);

u 应用程序链接注释:

若要指定一个而点击的矩形和一个应用程序:

Annotation annot = new Annotation(300f, 700f, 400f, 800f,
“C://winnt/notepad.exe”, null, null, null);

我们不用在页面及指定一个地方,iText会内部处理。你会看出iText添加文(加文(Gavin))本注释在页面及时职务下边,第一单在段后首先实施上面,第二只当短句截至处之下面。

拥有其他注释需要指定想匹配的矩形区域,在演示代码0304着,我们写了一部分正好方形(使用的函数将于第十段中牵线),为每个正方形添加了部分链接注释。

季节 页眉页脚、章节、区域与制图对象
动用于第三到第五章中讲述的恢宏概括iText对象足以避重复多之高等级话题(第九暨十二回),紧记这么些概括对象限定的效用,大量苛的效益在第三局部。

页眉页脚
HeaderFooter对象可以给为文档每页添加页眉和页脚。那样一个页眉或页脚包含一个正式的短句(若是要)和当前页码,如若您用还多复杂的页眉和页脚(使用表格或者第几页共几页),请看第十二章。

在演示代码0401吃,你得看来我们先是补充加了一个暗含页码没有其它边框的页脚。

HeaderFooter footer = new HeaderFooter(new Phrase(“This is page: “),
true);

footer.Border = Rectangle.NO_BORDER;

document.Footer = footer

咱尚足以采纳下的构造函数:

HeaderFooter footer = new HeaderFooter(new Phrase(“This is page “), new
Phrase(“.”));

构造函数知道乃想充分一个页码和将该放置在少单短句间,假使您偏偏是设置一个HeaderFooter而未转移边框,页眉或页脚的文本上下各发同一条直线。

HeaderFooter header = new HeaderFooter(new Phrase(“This is a header
without a page number”), false);

document.Header = header;

章和区域
每当第十一章节中校描述怎样构建一个扶植之外观,就算您才待一个简短的节和(子)区域,你可以就此Chapter对象与Section对象活动构建一个树:

Paragraph cTitle = new Paragraph(“This is chapter 1”, chapterFont);

Chapter chapter = new Chapter(cTitle, 1);

Paragraph sTitle = new Paragraph(“This is section 1 in chapter 1”,
sectionFont);

Section section = chapter.addSection(sTitle, 1);

当示范代码0402遇,我们补充加了千篇一律文山会海的章节和子区域,你可看出完好的树形,树形结构默认打开,假使您盼有节点关闭,你得下用BookmarkOpen属性其值为false,详见示例代码0403。

图形
若果你想补偿加图,如直线、圆、几何窗体,你应有读读十章,但要您只待部分星星的效能,你得下Graphic对象

Graphic grx = new Graphic();

//添加一个矩形

grx.rectangle(100, 700, 100, 100);

// 添加相同长条斜线

grx.moveTo(100, 700);

grx.lineTo(200, 800);

// 将图纸显示出

grx.stroke();

document.Add(grx);

圆的代码请见示例代码0404,假如想见见所有之计,请参见PdfContentByte对象API。

当您想给页面加一个边框要在文件当前地方画一长水平线时,图形对象非常实惠。下面的办法用指定的涨幅、间距(即使用)和颜料画一个边框。

public void setBorder(float linewidth, float
extrASPace);

public void setBorder(float linewidth, float
extrASPace, Color color);

下边的方用指定的宽窄(如果用)和颜料画一长水平线,线之长是指定两止缘间可用面积的之比例。

public void setHorizontalLine(float linewidth, float percentage)

public void setHorizontalLine(float linewidth, float percentage, Color
color)

演示代码5丁,有一个离疆5约,线宽3称的边框,还有点儿长条水平线,一长为蓝色,5志宽,可用空间的100%,其它一漫长为红,线宽3称,可用空间的80%。

第五章 表格
第一:假诺您独自生成PDF文件(没有XMLHTML、RTF……),使用类pdfPTable代替类Table更好。

一对简约的表格
一个表格是含有单元格排列成矩阵的矩形区域。表格的距阵并无要求凡m×n的,它好有空洞或者单元格比单个的假若非常。

创制一个表格最通用的主意是优先通晓出几实践几排列:

public Table(int columns, int rows);

当演示代码0501中,大家构建了一个简短的表:

Table aTable = new Table(2,2);

aTable.addCell(“0.0”);

aTable.addCell(“0.1”);

aTable.addCell(“1.0”);

aTable.addCell(“1.1”);

欠表来个别履行两排,单元格给活动抬高,从第一实施第一列始发,然后是第二排列,当一履满后,下一样单元格自动添加至下一行的首先排列被。

为可用单元格添加到表中指定的职位,如示例代码0502,别了如填补加System.Drawing.dll引用,以博取Point对象,我们创立了一个4行4排的表格然后上加有单元格到自由的职位上:

Table aTable = new Table(4,4);

aTable.AutoFillEmptyCells = true;

aTable.addCell(“2.2”, new Point(2,2));

aTable.addCell(“3.3”, new Point(3,3));

aTable.addCell(“2.1”, new Point(2,1));

aTable.addCell(“1.3”, new Point(1,3));

汝可以看来我们将AutoFillEmptyCells属性设置为true,这将自行、默认的特元格布局填充空的仅仅元格,假设我们忘记了这样做(就象本例中第二只表格),将无额外的只有元格添加,不包含其他单格的实践呢以为忽略,在本例中,第一尽以未亮,因为该行是空行。

经常用数据库查询结果来填充表格,大多数情状下,你先并不知道到底得有些行,这就是怎还有第二单构造函数的原由:

public Table(int columns);

iText按照需要活动添加行,在示范代码0503中,开端化了4执行4排列,当大家抬高第6实施与第7实施之只是元格时,iText自动增添行数到7。

日增列数也是唯恐的,可是有些费劲,它不可以自动生成,你必须使用addColumns方法并设置列宽,详见示例代码0504。

局部表格参数
前例子中的表格并无美,我们得装大量底参数来改变表异常观。类Table和类Cell派生于类Rectangle,我们可据此大方典型的Rectangle方法,让大家来探视示例代码0505。

Table table = new Table(3);

table.BorderWidth = 1;

table.BorderColor = new Color(0, 0, 255);

table.Cellpadding = 5;

  1. table.Cellspacing = 5;

Cell cell = new Cell(“header”);

cell.Header = true;

cell.Colspan = 3;

table.addCell(cell);

  1. cell = new Cell(“example cell with colspan 1 and rowspan 2”);

cell.Rowspan = 2;

cell.BorderColor = new Color(255, 0, 0);

table.addCell(cell);

table.addCell(“1.1”);

  1. table.addCell(“2.1”);

table.addCell(“1.2”);

table.addCell(“2.2”);

table.addCell(“cell test1”);

cell = new Cell(“big cell”);

  1. cell.Rowspan = 2;

cell.Colspan = 2;

cell.BackgroundColor = new Color(0xC0, 0xC0, 0xC0);

table.addCell(cell);

table.addCell(“cell test2”);

  1. document.Add(table);

u 单元格间距和填距

在第4履遭,我们装了报表的填距,就是单元格边界和情节中一定数量的长空,在前头的演示中,大家来看文本紧贴边界,通过采取用特定的填距,就足以避。

每当第5实施遭,大家装了报表的间隔,就是单元格和表格边界中的终将数额之上空,不同之单元格间使用了一半上空,具体代码见示例代码0506。

u 对齐格局

当示范代码0506中,我们啊转移了单元格“big cell”的针对性齐情势:

cell.HorizontalAlignment = Element.ALIGN_CENTER;

cell.VerticalAlignment = Element.ALIGN_MIDDLE;

横流:无法连续相信垂直对齐形式。

u 边框

只要大家模样在第14行遭这样添加了一个单元格,将应用默认的就元格布局(默认的布局可以SetDefalut方法改变),假诺大家拔取了Cell对象,我们好决定每一个单元格的布局。

以第2跟老三挨,我们安任何表格的边框宽度与边框颜色,我们当单元格上可以动用的法子,在12行中,每个单元格用“box”作为边界绘制(就象在HTML惨遭),不过示例代码0507展现,我们以PDF中生出大量再次多或者。

u 颜色

每当第22行遭到,你为能够定义单元格的背景观,在演示代码0507中,我们无应用颜色只是用自然灰度填充。

u 行跨和列跨

末,你为克装单元格的行跨(11/20执)和列跨(8/21排列)。通过这种艺术可以以五只单元格合并成一个非常的只有元格。

u 备注

第7履行于PDF中无意义,用于转移HTML,在HTML备受连无是总能生出同样的布局,PDF表格有点象:

header

example cell with colspan 1 and rowspan 2
1.1
2.1

1.2
2.2

cell test1
big cell

cell test2

u 表格分割

万一一个表无法在同页中,将电动为划分,示例代码0508显示了当一个报表到达页边时生的动静,这将在生一样节省被解释。

大表格
过几乎页的表将自行为分成不同的一部分。示例代码0509显示了一个越多页的表。该表有一个表头,倘使您盼这表头在各页还起,你可为此endHeaders()方法标记表头区域之截止点,见示例代码0510。

否召开这样的表,指出安装单元格间距为0及特用指定的填距。

若或早已注意到了,当一个表让分开时,一些疆好象少了。这是因单元格于后面同一页为完好地绘制了一旦无会面传送让下一样页。

u 强行以一个表或单元格布置到同样页上

发稍许情状下,你或许希望幸免单元格或者全部表被拆分成稀只有,示例代码0511差不多和示范代码0508完全一致,但咱设置了参数TableHasToFit为true,看看示例代码0508和示范代码0511结果区别。在演示代码0512中我们修改了示范代码0510的CellsHaveToFit属性为true,相比较简单个示范有结果的分别。

内存管理
当我们添加一个目的及文档时,该对象同有或就是形容副了输出流,但当成立一个表时,该Table对象从来保存在,对于真正的好表,这将改成一个题材。

一致,当你刚刚写一个HttpServletResponse对象到输出流时,浏览器也说不定过。这虽是怎么你协调由此fitsPage()方法控制表分割是实惠之,示例代码0513告诉你哪些做。

嵌套表格
出少数种艺术嵌套表格,第一栽是用insertTable方法显然地以一个表插入到另外一个表格,示例代码0514展现了经插入到任何表格的形式成立的5个表格。正而你望的在头里五只表中,所有空的但元格自动拿到分割,因为改变了本来的表格。如若一个单元格不拖欠,列跨度和(或)行跨度将自动调整至新的地点,页面上第三独表格显示有原表中列的系宽度都收获了保护,第四单表格展现我们可以于插入了报表后补充加另单元格:该单元格自由地长到下一个单元格中。最终是一个深嵌套的表格。

当你下insertTable方法时,插入表的宽百分比不会被考虑,假设您希望插入表仅占单元格的80%(这是默认的增幅百分比),你只可以以单元格中绕排,见示例代码0515,这吗是被一个注脚组成其他数存放于和一个单元格中之绝无仅有形式,见示例代码0516。

备考:你只可以以一个报表插入到列跨度和行跨度均为1之单元格中。

报表偏移
当一个表让补加到文档此前,以如今距离为依照的新行将让添加(如前一个插入对象的区间)。有时因后面一个插对象同脚下表格中的间隔过大如故过些微若连无期这样做,假设您想更改者空间,你只好设置表格偏移,如示例代码0517。

表的断位置
iText夏普.text.Table是一个经过正式措施创制表格的一定简单的近乎,但偶尔你希望表格来一部分特殊之表现,那种境况下您拿应用还复杂的类com.lowagie.text.pdf.PdfPTable,示例代码0518是一个相当简单的例证,在第十节跟十二节中以生出有重复扑朔迷离的例子。

第六章 图片
Image对象
使你念过API,你可能就注意到可因而二种构造函数来创制图片,本手册中,大家以只有告诉您无限简便的化解方案,如访问通过文件称或URL确定的图片转的Image对象。

public static Image getInstance(Uri url)

public static Image getInstance(string filename)

Image是一个抽象类,故获实例的不二法门以判断为出底图纸的类(GIF、Jpeg、PNG……)并再次回到对象的路Gif、Jpeg、Png……,一些图纸会被忽视,如若你想清楚怎么图片会叫忽略,请查阅FAQ(http://www.lowagie.com/iText/faq.[HTML](http://www.blue1000.com/bkhtml/c22/)\#images)。

u 通过URL拿到图片实例

这是加上一个图纸最简单易行的道,见示例代码0601,大家上加了一个WMF、一个Gif、一个Jpeg和一个PNG图片及文档中,使用4独URL得到:

Image wmf = Image.getInstance(new URL(“../examples/harbour.wmf”));

Image gif = Image.getInstance(new URL(“../examples/vonnegut.gif”));

Image jpeg = Image.getInstance(new URL(“../examples/myKids.jpg”));

Image png = Image.getInstance(new URL(“../examples/hitchcock.png”));

备注:许多PDF库在插入一个图片前还拿该解压缩并转移成位图格式,下边是几乎单自己为什么非这么做的因:

立将致PDF文件增大,那样暴发的PDF文件尺寸是见仁见智图片文件尺寸总和的数十倍增。
面临一个法问题:LZW算法受专利保护,所以无同意用那种算法来解压缩GIF等公事。
u 通过文件称得到图片实例

透过简单地改变图片引用路径将示例代码0601改成示例代码0602:

Image gif = Image.getInstance(“vonnegut.gif”);

Image jpeg = Image.getInstance(“myKids.jpg”);

Image png = Image.getInstance(“hitchcock.png”);

同示例代码0601的区别仅是拖欠图象从地点拿到而已,此外一个例见示例代码0603。

图片的地点
u 对齐格局

透过上边方法设置图片的指向齐模式:

Alignment = Image.RIGHT

Alignment = Image.MIDDLE

Alignment = Image.LEFT

参见示例代码0604。

大家用Vonnegut的图样在右侧,小孩的图片在中间,hitchcock的图纸在左边。

u 图片和文书

此外,你还好指定文本相对图片的缠绕格局:

Alignment = Image.RIGHT | Image.TEXTWRAP

Alignment = Image.MIDDLE

Alignment = Image.LEFT | Image.UNDERLYING

见示例代码0506,文字在Vonnegut图片的左手,并无以本人小孩的图处环绕,且排在Hitchcock图片的端。

注明:该意义还有有BUG。

u 相对地方

当造PDF文件时,你也许就此到拖欠方法:

public void setAbsolutePosition(int absoluteX, int absoluteY)

将一个图纸放要页面及一个绝地方的代码见示例代码0606,我们于不同之坐标处上加了区区帧图片,这里以给定的坐标将图片在了左下角,通过将图纸的肥瘦和冲天作为X和Y坐标将装第一单图片,坐标的2倍增设置第二只图片。

缩放和转图片
u 缩放

出几乎种方法可以缩放图片:

public void scaleAbsolute(int newWidth, int newHeight)

public void scalePercent(int percent)

public void scalePercent(int percentX, int percentY)

public void scaleToFit(int fitWidth, int fitHeight)

孩子的图片大小为194×202象素,假如您想为图片小片,你得透过scaleAbsolute(97,
101)举行缩放,使用scalePercent(50)也克到同样的效应。

还得透过scaleAbsolute(194,
101)来削弱多少,所以这个事例都位居了示范代码0607中。

u 对分辨率的熏陶

假定一个图形未经其他缩放,其分辨率(resolution)为72,假使该图缩放比例为50%,则分辨率为144,倘若发生再一次没有之缩放比,则分辨率将重新要命,因为象素相同而尺寸变得再粗了。使用72/300=24%底百分比放置一个300dpi的图形,例:你用300dpi扫描了一个5×5英寸的图样,图片结果也1500×1500象素(5×300),当你用24%(72/300=0.24)的比例将该图片放置到PDF文件被平日,PDF中之图样将为5×5英寸1500X1500象素300dpi,该图形将始终为1500X1500象素而不管尺寸如何。

u 旋转

好经下的点子旋转图片

public void setRotation(double r)

详见示例代码0608。

土生土长图片数
及近年来结束,所有例子中接纳的图纸均出自地当地磁盘或者某网站,但也可能利用含图表音讯的数组来赢得图片的实例:

public static Image getInstance(byte[] img)

该办法及前方法的听从等同,重临一个初的Gif,Jpeg或者Png类另外Image对象。

当示范代码0609中,我们添加一个于一个Jpeg文件被读入到字节数组中的图纸,很显明,使用其他getInstance方法赢得实例更优越,但这只有是一个例,该getInstance方法在动态成立这么些根本无存的图纸时坏有效。

拖欠例子吗演示了何等创建及行使一个原有图片。

public static Image getInstance(int width, int height, int components,
int bpc, byte data[])

本例中开创了一个100×100形素的图样,因为每个象素用RGB描述,所以图片大小也100×100×3字节。

System.Drawing.Bitmap
演示代码0610是一个比高级的话题,理由如下:

首不成利用及了System.Drawing.Bitmap类。该类在.net框架中,可以动用更多型的图纸,如TIFF、GIF,而这多少个图以iText中全不匡助,你得检查一下.net框架看你用之图片格式是否收获辅助。
眼前的例子中,还有一些工作即便注意:当上加一个图纸时莫会合起啊问题,文字始终浮于图片下面,本例中,我们要图片发于文方面。这为是怎我们将祭iText夏普.text.pdf.PdfContentByte类的案由(见第十章)。
乃拿发现以的图纸也透明底gif格式,你得到http://itextsharp.sourceforge.net/examples/h.gif下载得到。
TIFF和CCITT
示范代码0611也是一个于高档的话题,例中转换一个TIFF文件到PDF文件。

u 图片遮罩

演示代码0613在,我们成立了一个看作遮罩的图片

3C

7E

E7

C3

C3

E7

7E

3C

拖欠图片尺寸为8×8象素,每组一个字节,使用makeMask()方法好换成为遮罩。

byte maskr[] = {(byte)0x3c, (byte)0x7e, (byte)0xe7, (byte)0xc3,
(byte)0xc3, (byte)0xe7, (byte)0x7e, (byte)0x3c};

Image mask = Image.getInstance(8, 8, 1, 1, maskr);

mask.makeMask();

mask.setInvertMask(true);

咱俩可为此该遮罩直接挡住另外图片的一致局部。

PdfContentByte cb = writer.DirectContent;

Image image = Image.getInstance(“vonnegut.gif”);

image.ImageMask = mask;

如故我们用该遮罩用于模板遮罪中。

PdfContentByte cb = writer.DirectContent;

cb.setRGBColorFill(255, 0, 0);

cb.addImage(mask, mask.scaledWidth() * 8, 0, 0, mask.scaledHeight() *
8, 100, 400);

关于ContentByte对象又多消息要参见第十章。

图片及另对象
u 图片于片被

偶,可以好地拿图纸置于块被,通过一定偏移将一个图置于块被:

Chunk ck = new Chunk(img, 0, -5);

实际代码见示例代码0614,我们得以互补加该特别图片块及短句、表格等,本例中之图片请到http://itextsharp.sourceforge.net/examples/pngnow.png下载。

u 图片在表中

公可用图片添加到单元格中,但暴发个别个副效用:

l 表格的宽是规定,当图片超出单元格的增幅时,将活动缩短。

l 你无可知展开文字绕排与也图上加下划线。

参见示例代码0615。

u 图片链接注释

而你愿意取得一个但点击的图形,或者想补充加链接注释到图片上,你待创立一个Annotation对象,并上加至图片及,你莫欲指定地点(你得使用0,0,0,0),该职位会里更新为可该图。

gif.Annotation = new Annotation(0, 0, 0, 0, “Chap1102b.pdf”, 3);

jpeg.Annotation = new Annotation(“picture”, “These are my children”, 0,
0, 0, 0);

在座示例代码0616。

次有些 其他文档格式
第七章 XML
(X)HTML
本章重要介绍了怎么使iText控件生成XLM文档和(X)HTML文档,但大家针对这一个连不感兴趣,故只介绍本章中涉及的将XML转为PDF。

当首先节中,大家透过5步生产一个PDF文件,为了拿一个XML文件转换为PDF文件,只待更写第3与第4步,第5步由解析器自动处理。

//第3步:创建一个解析器并设置文档句柄:

iTextHandler h = new iTextHandler(document);

//第4步,转换该文档:

h.Parse(“Chap0701.XML“);

演示代码见示例代码0702

第八章 RTF文件
RTF包
RTF包是依照iText包扩大出来的,允许iText除生成PDF文件外尚好出口RTF文件,除了片每当RTF包中未扶助之特点外,大多数PDF文件特性还好运用。

创一个RTF文档
成立一个RTF文档和开创一个PDF文档方法是同等的,都是这基本的5步,唯一的界别是第2步着之所以RtfWriter代替了PdfWriter,见示例代码0801。

第1步 创立一个the iTextSharp.text.Document对象的实例:

Document document = new Document();

第2步 创造一个document的RtfWriter将document写副你挑选的输出流:

RtfWriter.getInstance(document, new FileStream(“Chap0801.rtf”),
FileMode.Create);

第3步 打开document:

document.Open();

第4步 添加内容及document

document.Add(new Paragraph(“Hello World”));

第5步 关闭document

document.Close();

关于咋样成立其他对象并上加到document中,请参见其他章节的始末。

莫补助之特性
水印
阅读器参数
加密
内嵌字体
块间距
段右缩排
列表右缩排
无圆点符号列表
嵌套表格
除JPEG和PNG的别图片
RTF中扩大的页眉和页脚
形容入RTF时不可以在开班新页前通过setHeader方法改变文档的页眉或页脚,这里发生有限独方法来缓解此题材。

动“Chapters”,添加一个新“chapter”到文档前,使用setHeader或setFooter,你得以不同的“Chapters”中动用不同之页眉或页脚,见示例代码0802。
运用RtfHeaderFooters类。该类允许而设置4只页眉或页脚,并点名在哪页出现。你本来好组成Chapter创设4单不等的页眉或页脚,见示例代码0803。
u 使用RtfHeaderFooters类

第1步创建一个RtfHeaderFooters类:

RtfHeaderFooters headers = new RtfHeaderFooters();

第2步添加HeaderFooter对象

headers.Add(RtfHeaderFooters.LEFT_PAGES, new HeaderFooter(new
Phrase(“This header is only on left hand pages”)));

headers.Add(RtfHeaderFooters.RIGHT_PAGES, new HeaderFooter(new
Phrase(“This header is only on right hand pages”)));

第3步如同用页眉页脚一样采纳RtfHeaderFooters

document.Header = headers;

使用RtfHeaderFooters.add(…)的常量:

FIRST_PAGE:
在公文档的首先页使用该页眉或页脚。你用使用rtfWriter.HasTitlePage =
true来完成
LEFT_PAGES: 所有左侧页均使用该页眉或页脚
RIGHT_PAGES: 所有右侧页均使用该页眉或页脚
ALL_PAGES: 所有页均使用该页眉或页脚,唯有与FIRST_PAGE
结合使用才出义。
发平等件事相当首要:假如您利用LEFT_PAGES或者RIGHT_PAGES来安页眉或页脚,再用ALL_PAGES,页眉和页脚均未会师于功能。

报表效果见示例代码0804。

老三有些 iText的尖端应用
第九章 字体
本章原文讲了众字的使用技术,但不怕没开腔怎么样下粤语,因而,意义不很,再说,假使非扶助普通话,前边的为即白翻译了,因而,依照原文讲到的局部文化,我摸出字之运办法,自己写了本章内容,应该算“原创”了吧^_^(哎呀!什么人拿鸡蛋扔我……)。

Windows中貌似都是行使TrueType字体,每个中文版Windows操作系统均默认安装了行草、甲骨文、金鼎文和真四栽字体,你还可以够安装其他第三正在字体,如安装了Office
2000后,会活动安装华文行楷等书,相比奇怪的是,在PDF文件中插入了一样种照总结机才有的书,在打开PDF文件之总括机达即便没该字,但仍旧能健康展现!这分别Word文件,Word文件拿手上电脑中绝非底书一律用陶文代替,这大概是出乎意外收获吧。

书文件一般保存在windir\Fonts目录中,扩大名吧TTF,还有扩张名吧TTC的字文件,也是TrueType字体,不过是一个集合,也固然是中间来多字体。上边列有windows2000简体中文版四种标准字体的文件名称:

SIMSUN.TTC:陶文和初小篆

SIMKAI.TTF:楷体

SIMHEI.TTF:黑体

SIMFANG.TTF:仿宋体

TrueType字体应用
按部就班下的不二法门勾勒副黑体字文字,大小也32磅:

BaseFont bfHei = BaseFont.createFont(@”c:\winnt\fonts\SIMHEI.TTF”,
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

Font font = new Font(bfHei, 32);

String text = “这是金鼎文字测试!”;

document.Add(new Paragraph(text, font));

并非管BaseFont.createFont方法第二、三独参数的意思,依葫芦画瓢就行了,第一单参数彰显就是书文件存放的职。

末尾的代码都万分好明,不再赘言。

TruType字体集合的用
字集合的动及地点差不多,只是以以createFont方中假诺指定使用啊种字体。如:

BaseFont bfSun=BaseFont.createFont(@”c:\winnt\fonts\SIMSUN.TTC,1″,
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

font = new Font(bfSun, 16);

text = “这是书集合中之初小篆测试!”;

document.Add(new Paragraph(text, font));

不难看出,在使BaseFont.createFont方法时,第一独参数@”c:\winnt\fonts\SIMSUN.TTC,1″中多了一个“,1”,表示以序号为1字,序号为0的书体为黑体。

究竟我们无是做排版软件,有了点的主意虽然多够了,真正好复杂的PDF文件制作,不妨做成XML文本(最简便的道即使是用Word排版,然后此外存也web页了),然后按第七节的艺术转换。

代码见示例代码0901。

第十回 图象和文件的相对地点
pdfContentByte
暨目前截止,我们曾经应用了简约的iText,我们早已上加了文件、图片、段落、章节、列表、表格等,没有关联到布局问题。Itext分割文本及每页中,并以每个单词、句子、段落布置到页面上,但偶尔我们并不需要这种自发性格式,有时我们要将部分图象或者文本放置在某页的指定地方,为兑现该意义,大家以使PdfContentByte类。

否代第一节,仅用PdfWriter类的getInstance方法是不够的,你不可能不实打实地有所一个PdfWriter对象,你可经过以行使Writer对象吃利用getDirectContent()方来得到该目的。例:

PdfWriter writer = PdfWriter.getInstance(document, new
FileOutputStream(“test.pdf”));

PdfContentByte cb = writer.DirectContent;

证实:当您长高级对象(如表格)时,两单PdfContentByte对象将于间接纳:一个用来文书,一个用用于图象(如边界或单元格背景)。文本绘制浮于图象的方面。

当您通过getDirectContent()方法直接下PdfContentByte对象时,你所添加的兼具目的都拿浮于文本及图象。尽管你想制止这种状态以及期增长内容在图象或文本的潜,你要用用getDirectContentUnder()方。

同样句子话,当一页完成时,4叠的层遵照如下顺序:

1、 通过getDirectContentUnder()得到的PdfContentByte

2、 包含图象或高级对象的内PdfContentByte

3、 病文本或高等级对象的其中PdfContentByte

4、 通过getDirectContent()得到的PdfContentByte

简言之图形
于示范代码1001惨遭,绘制了一些概括图形,我们采纳了像moveTo和lineTo方法来当活动及页面上近来职然后打一长达直线到另外岗位。我们下了诸如setLineWidth和setLineDash方法来改变直线的外观,如:

cb.LineWidth = 10f;

cb.moveTo(100, 700);

cb.lineTo(200, 800);

cb.stroke();

征:当你改变诸如颜色、线宽等性时,只有你以调用stroke方法时才由成效。在例中绘制三角形时,我们安颜色为肉色,在动用stroke方法前我们反颜色吗革命,则绘制三角形的结果吧耶灰色而未是黄色,该例中还有矩形、圆等使办法。

文本
当你想用文件写副ContentByte中常,你要使办法beginText()和endText,你也必装字体和尺寸。就象图形示例中一致,还有好多办法用于写入和停放文本,但若最好需要之是形式showTextAligned和办法showText配合setTextMatrix。

例1:

BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252,
BaseFont.NOT_EMBEDDED); cb.beginText();

cb.setFontAndSize(bf, 12);

cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text + “This text is
centered”, 250, 700, 0);

cb.endText();

例2:

BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252,
BaseFont.NOT_EMBEDDED);

cb.beginText();

cb.setFontAndSize(bf, 12);

cb.setTextMatrix(100, 400);

cb.showText(“Text at position 100,400.”);

cb.endText();

求参见示例代码1002。

模板(Form xObjects)
当我们在第四次研讨页眉和页脚时,我们定义了同粗片上加到各国一样页的音信,实际上,该多少片音讯写及了文本之各级一个新页上。这并无是但是经济的缓解方案,更好的法是用欠音讯作一个Form
Xobject仅于文档中补充加相同蹩脚,在该可见地点又出现。我上该目标,大家以动用模板。

u 创制一个PdfTemplate

u
创造PdfTemplate的顶好情势是调用PdfContentByte对象吃的createTemplate方法:

PdfContentByte-object:

PdfTemplate template = cb.createTemplate(500, 200);

诸如此类,该模板的宽度为500,低度也200。

经该模板我们好做象PdfContentByte同样的作业

template.moveTo(0, 200);

template.lineTo(500, 0);

template.stroke();

template.beginText();

BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252,
BaseFont.NOT_EMBEDDED);

template.setFontAndSize(bf, 12);

template.setTextMatrix(100, 100);

template.showText(“Text at the position 100,100 (relative to the
template!)”);

template.endText();

u 添加一个模板到文档

经过象下一样在相对地点添加一个模板:

cb.addTemplate(template, 0, 400);

而还可做有诙谐的作业,如缩放或旋转他们:

//将模板旋转90度

cb.addTemplate(template, 0, 1, -1, 0, 500, 200);

// 缩放模板也50%

cb.addTemplate(template, .5f, 0, 0, .5f, 100, 400);

//缩放模板也200%

cb.addTemplate(template, 2, 0, 0, 2, -200, 400);

具体演示见示例代码1003。

u 第几页共几页

当一些景色下,你想插入一些你在描写本页时外壳无法精通之音信及文本中去,如:在同样篇文档的首先页,你并不知道该文档共有几页。只好于得了上上下下文档时才精通究竟的页数。当用模板时,该问题虽不在了。在示范代码0103中,我们于增长模板到ContentByte前续加了有些信到模板被,这是绝非必要的。我们可以在外时刻长音信及模板,因为iText添加Form
Xobject是当PDF停止的地点(当通过close方法关闭该文档时调用)。示例代码1004显示了第一创立4页然后加加总及页数,该例卓殊简单和实惠。

分栏
每当本章此前,你既控制了如何将文件放在一个万万地点,这种情形下,我们假若规定文件的开头坐标。倘使大家记念清楚文书的结地点,我们得开有计量工作。

兹我们假如加以有文书及一个矩形框的中间,希望文本到达右侧界时自动换行。超出矩形部分以非显,可以经ColumnText类实现。

举个例:

啊显示一个指定的不够句以坐标(100, 300)和(200,
500)间的矩形内居中,我们拔取下的代码:

PdfContentByte cb = writer.DirectContent;

ColumnText ct = new ColumnText(cb);

ct.setSimpleColumn(phrase, 60, 300, 100, 500, 15,
Element.ALIGN_CENTER);

ct.go();

经查示例代码1005,你碰面霎时发现经过该措施好得写有扑朔迷离的报表而无须Table对象。

另一个事例:

从未有过必要两遍性将文件全体抬高进去,你得预先定义一个矩形,然后上加有文本,最终所以go方法显示分栏。

PdfContentByte cb = writer.DirectContent;

ColumnText ct = new ColumnText(cb);

ct.setSim7pleColumn(60, 300, 100, 500, 15, Element.ALIGN_CENTER);

ct.addText(phrase1);

ct.addText(phrase2);

ct.addText(phrase3);

ct.go();

详细示例代码1006。

多栏

自然,假设文本超出了矩形范围,大家并无惦记不见这么些基本上有的公文,或许大家怀想以这个文件展现到任何栏中。这即使是干吗我们若查看go方法重返值的由。如若回到标识也“NO_MORE_COLUMN”,表示该栏中没有充分的上空存放该文件,假如具有的公文均显得出来,标识将为“NO_MORE_TEXT”。

央参见示例代码1007。

非正常栏

概念一个非矩形的区域来呈现栏也是可能的,通过使用setColumns方法,大家吧文本定义了一个横边界。

float[] left = {70,790, 70,60};

float[] right = {300,790, 300,700, 240,700, 240,590, 300,590, 300,106,
270,60};

ct.setColumns(left, right);

张冠李戴边界是同长直线,而右手边界是窘迫的。该函数的结果好引致有很是有趣的布局,见示例代码1008,本例中您将利用一个名吧caesar_coin.jpg的图片:

PdfTable
以第5段中,大家简要地叙述了PdfPTable对象,现在大家拿探究该对象又多之的性状。

乃可为此3种植不同的方法创设PdfTable:

PdfPTable(float[] relativeWidths);

PdfPTable(int numColumns);

PdfPTable(PdfPTable table);

你可以给该表设置更多的参数,如表宽度、列宽度、水平对齐模式等,你可以经过下面的方添加单元格:

public void addCell(PdfPCell cell);

public void addCell(PdfPTable table);

public void addCell(Phrase phrase);

public void addCell(String text);

除开单元格填距和与距离,这么些办法同Table对象十分类似。这一个参数对每个单元格个体举行了设置,当然,你得设置单元格的默认值,为转单元格的默认值,使用getDefaultCell()和调用一个要么重新多之类PdfPCell的主意(你得设置对齐格局、间距、边框、颜色如故低中度)。

横流:通过PdfPTable,你可以改变一个单元格的排列跨度,但无可以改行跨度!在PdfPTable内部是有的单身的尽,要为它们帮助实施跨度更改需要针对PdfPTable对象举行相当老之调,不要指望在方今内实现,你可为此嵌套表来解决那多少个题材。

卿可以形象第5节一样将一个PdfPTable添加到眼前文档中,但若吧足以长一个讲明在现阶段页中的断然地方:

public float writeSelectedRows(int rowStart, int rowEnd, float xPos,
float yPos, PdfContentByte canvas);

参数rowStart是公想起来的实践的数额,参数rowEnd是您想体现的终极的尽(尽管你想展示所有的行,用-1),xPos和yPos是表格的坐标,canvas是一个PdfContentByte对象。在演示代码1009受到,我们上加了一个表在(100,600)处:

table.writeSelectedRows(0, -1, 100, 600, writer.DirectContent);

利用PdfPTable,你莫可以安装进行跨度和(或)来跨度(怎么跟点的发出接触冲突?)你可以动用嵌套表来解决,见示例代码1010。

终极,示例代码1011跟示范代码1012显了PdfTable可以跟templates 和
columns一起使用,在示范代码1012惨遭拿故到cover.png图片如下:

颜色(SpotColors)和图案(Patterns)
颜色(spotcolors)的利用见示例代码1013,示例代码1014跟演示代码1015演示了图(patterns)的施用方法。

第十一章节 本地同外地转账、目的和大意
本土转化
奇迹你待一个同意读者从文档的一个地点跳反到此外一个地点的链接,你可以经类Chunk的setLocalGoto
和setLocalDestination两单办法实现,例:

Chunk localgoto = new Chunk(“this word”,
FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL, new Color(0,
0, 255))).setLocalGoto(“test”);

Chunk destination = new Chunk(“local destination”,
FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL, new Color(0,
255, 0))).setLocalDestination(“test”);

见示例代码1101。

异地转账
以第3段中,大家演示了一个锚点咋样转向到其他URL,一个锚点通过不同之字体、风格及颜料,可以涵盖不同之Chunks,在iText的尖端应用被,下边定义链接到URL的别样情势:

Chunk chunk = new Chunk(“anchor”,
FontFactory.getFont(FontFactory.HELVETICA, 12)).setAnchor(new
URL(“http://www.lowagie.com/iText/“));

u 转至PDF文档中之指定地点

一旦你以文档中指定了一个目的地,你可以从另外一个文档跳反至此处,为落实该功用,你可利用方法:

setRemoteGoto: Chunk chunk = new Chunk(“jump”,
FontFactory.getFont(FontFactory.HELVETICA, 12,
Font.ITALIC)).setRemoteGoto(“test.pdf”, “test”));

test.pdf是其它一个pdf文件,”test”是欠文件的一个目标地。

过反到其他一个PDF文件指定页

接纳模式setRemoteGoto,用页码参数代替名称参数,能够卓殊容易地过转定此外一个文档的指定页:

chunk = new Chunk(“jump”, FontFactory.getFont(FontFactory.HELVETICA, 12,
Font.ITALIC)).setRemoteGoto(“test.pdf”, 3));

见示例代码1102

u 启动一个应用程序

可以动用下的法子启动一个应用程序:

public PdfAction(String application, String parameters, String
operation, String defaultDir)

苟application为“c:/winnt/notepad.exe”(其它参数可以吗null),你可通过PDF文件被的链接来启动记事本程序。

u 文件和URL

只要您想过反至其他文档或URL,你需要经过上面的构造函数之一创立一个:

PdfAction(String filename, String name);

PdfAction(String filename, int page);

PdfAction(URL url);

PdfAction(String url);

面前两单构造函数允许你越反至文件之指定地方如故页码,后少独构造函数允许而过反至其余URL上。

此外部分略。 

留下评论