




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!正在處理中,請稍后窗體頂端第一部分 iText的簡單應(yīng)用第一章 創(chuàng)建一個Document利用iText五步創(chuàng)建一個PDF文件:helloword。第一步,創(chuàng)建一個 iTextSharp.text.Document對象的實例:Document document = new Document();第二步,為該Document創(chuàng)建一個Writer實例:PdfWriter.getInstance(document, new FileStream(Chap0101.pdf, FileMode.Create);第三步,打開當前Documentdocum
2、ent.Open();第四步,為當前Document添加內(nèi)容:document.Add(new Paragraph(Hello World);第五步,關(guān)閉Documentdocument.Close();完整的代碼見示例代碼0101。在例中,不難看出,制作一個PDF文件是非常簡單的。注:如果你將例中“document.Add(new Paragraph(Hello World);”中的字符串“Hello Word”換成中文,如“這是我的第一個PDF文件”,產(chǎn)生的結(jié)果一定讓你大失所望,因為生成的PDF文件中并沒有將中文顯示出來,不要擔(dān)心,在第9章中 要專門講解字體問題,中文顯示也就迎刃而解了,如
3、果不能正確顯示中文,也就沒有必要翻譯本文了。下面對這幾步做詳細介紹。第一步 創(chuàng)建一個Document實例:iTextSharp.text.Document-object共有三個構(gòu)造函數(shù):傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!public Document();public Document(Rectangle pageSize);public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int marginBottom);第一個構(gòu)造函數(shù)以A4頁面作為參數(shù)調(diào)用第二個構(gòu)造函數(shù),第二
4、個構(gòu)造函數(shù)以每邊36磅頁邊距為參數(shù)調(diào)用第三個構(gòu)造函數(shù)u 頁面尺寸:你可以通過指定的顏色和大小創(chuàng)建你自己的頁面,示例代碼0102創(chuàng)建一個細長的淺黃色背景的頁面:Rectangle pageSize = new Rectangle(144, 720);pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);Document document = new Document(pageSize);通常,你不必創(chuàng)建這樣的頁面,而可以從下面頁面尺寸中選擇:A0-A10, LEGAL, LETTER, HALFLETTER, _11x17, LEDGER,
5、 NOTE, B0-B5, ARCH_A-ARCH_E, FLSA 和 FLSE大多數(shù)情況下使用縱向頁面,如果希望使用橫向頁面,你只須使用rotate()函數(shù):Document document = new Document(PageSize.A4.rotate();詳細代碼見示例代碼0103。u 頁邊距:當創(chuàng)建一個文件時,你還可以定義上、下、左、右頁邊距:Document document = new Document(PageSize.A5, 36, 72, 108, 180); 在示例代碼0104中你可以看到該文檔有一個0.5英寸的左邊距和1英寸的右邊距,上邊距為1.5英寸,下邊距為2.
6、5英寸。傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!說明:當創(chuàng)建一個矩形或設(shè)置邊距時,你可能希望知道該用什么度量單位:厘米、英寸或象素,事實上,默認的度量系統(tǒng)以排版單位磅為基礎(chǔ)得出其他單位的近似值,如1英寸=72磅,如果你想在A4頁面的PDF中創(chuàng)建一個矩形,你需要計算以下數(shù)據(jù):21 厘米 / 2.54 = 8.2677 英寸8.2677英寸* 72 = 595 磅29.7 厘米 / 2.54 = 11.6929 英寸11.6929英寸* 72 = 842 磅默認邊距為36磅即半英寸。如果你修改了頁面尺寸,僅僅影響到下一頁,如果你修改了頁邊距,則影響到全部,故慎用。關(guān)于頁面的初始值,請
7、參考第三步。第二步 創(chuàng)建Writer實例一旦創(chuàng)建了document,我們可以創(chuàng)建該文檔的多個Writer的實例,所有這些Writer實例均繼承自抽象類“iTextSharp.text.DocWriter”。同時還有另外一種情況,你可以用iTextSharp.text.pdf.PdfWriter產(chǎn)生文檔PDF文件,如果你想創(chuàng)建一個TeX文檔,你可以使用iTextSharp.text.TeX.TeXWriter包。Writer類的構(gòu)造函數(shù)是私有的,你只能通過下面的方法創(chuàng)建一個實例:public static xxxWriter getInstance(Document document, Stre
8、am os);(xxx 是 Pdf 或 Xml)你可以通過下面的方法創(chuàng)建一個實例:PdfWriter writer = PdfWriter.getInstance(document, new FileStream(Chap01xx.pdf);傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!但是你幾乎永遠不會用到Writer實例(除非你想創(chuàng)建高級PDF或者希望用一些非常特殊的函數(shù),如ViewerPreferences 或 Encryption)。所以通過下面的辦法得到實例已經(jīng)足夠了: PdfWriter.getInstance(document, new FileStream(Chap01
9、xx.pdf);在第一步中創(chuàng)建一個文檔時,第一個參數(shù)意義不大,第二個參數(shù)可以是任何一種流,到目前為止我們一直使用System.IO.FileStream將Document寫入文件中,示例代碼0105用到了System.IO.MemoryStream(這不是一個獨立的例子,你必須在Servlet Engine中測試這些代碼。第三步 打開Documentu 摘要在你寫入任何實際數(shù)據(jù)之前,你可能希望通過以下幾種方法寫入一些關(guān)于本文檔的摘要:public boolean addTitle(String title)public boolean addSubject(String subject)pub
10、lic 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)你可以選擇自己的標題、主題、關(guān)鍵字、作者、創(chuàng)建程序,但以下產(chǎn)品信息將始終被添加:iTextSharp (或者iTextSharp的引用
11、)和創(chuàng)建時間(實際上這兩種方法是自動調(diào)用的)。你還可以將自定義的名稱添加為“報頭信息”,但是這對于PdfWriter沒有任何作用,如果看看實例代碼0101產(chǎn)生的pdf文件的“文檔屬性”,我們可以看到僅僅有傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!PDF創(chuàng)建程序和產(chǎn)品日期,而示例代碼0106的“文檔屬性”框中有更多的信息。傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!打開document前要做的事:你只能在Open方法調(diào)用之前添加摘要,這是iText開發(fā)工具提供的一個選擇。在HTML中,報頭信息被放在文檔前面報頭標識中間,
12、調(diào)用Open方法將導(dǎo)致報頭信息寫入流,因而在Document被打開后無法更改這些數(shù)據(jù)。PDF報頭信息不包括摘要,看起來有類似于:%PDF-1.2該行顯示生成的文檔是一個版本為1.2的PDF格式的文件,在PDF中,摘要保存在PdfInfo對象中,當文檔關(guān)閉時已經(jīng)寫入PdfWriter中了,因此,沒有關(guān)于為什么不能修改庫來滿足任何時候添加或更改摘要的技術(shù)原因u 頁面初始化Open方法在不同的Witer中同時會產(chǎn)生初始化事件,舉例來說,如果你需要一個水印或者頁眉頁角對象出現(xiàn)在文檔第一頁的開始處,你需要在打開文檔前添加這些,同樣的用于設(shè)置該文檔其他頁水印、頁眉、頁角、頁數(shù)和尺寸。當調(diào)用下列方法:pub
13、lic bool setPageSize(Rectangle pageSize)public bool Add(Watermark watermark)public void removeWatermark()setting Header propertypublic void resetHeader()setting Footer propertypublic void resetFooter()public void resetPageCount()setting PageCount property產(chǎn)生的結(jié)果只能在下一個新頁中看到(當在本頁調(diào)用初始化方法時),代碼見示例代碼0107,你必
14、須要準備一張名為watermark.jpg的圖片,如下圖:傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!u 閱讀器參數(shù):你可以通過下面的辦法為PDF文件指定一些閱讀器 (如Adobe Reader) 參數(shù):public void setViewerPreferences(int preferences)在示例代碼0108中,指定了下面一些參數(shù):writerA.setViewerPreferences(PdfWriter.PageLayoutTwoColumnLeft);writerB.setViewerPreferences(PdfWriter.HideMenubar | PdfWri
15、ter.HideToolbar);writerC.setViewerPreferences(PdfWriter.PageLayoutTwoColumnLeft | PdfWriter.PageModeFullScreen | PdfWriter.NonFullScreenPageModeUseThumbs);正如你所看到的,參數(shù)可以使用以下一些常量:l 文件被打開時,頁面布局用到下面的其中一個 :o PdfWriter.PageLayoutSinglePage 同時只顯示一個頁面 o PdfWriter.PageLayoutOneColumn 單列顯示 o PdfWriter.PageLayo
16、utTwoColumnLeft 雙列顯示,奇數(shù)頁在左 o PdfWriter.PageLayoutTwoColumnRight -雙列顯示,奇數(shù)頁在右 l 文件打開時,頁面模式用到下面其中之一: o PdfWriter.PageModeUseNone 既不顯示大鋼也不顯示縮略圖 o PdfWriter.PageModeUseOutlines 顯示大綱 傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!o PdfWriter.PageModeUseThumbs 顯示縮略圖 o PdfWriter.PageModeFullScreen 全屏模式,沒有菜單、windows控件或者其他任何wind
17、ows可見控件 l PdfWriter.HideToolbar 當文檔激活時,是否隱藏閱讀程序(如Adobe Reader)的工具條 l PdfWriter.HideMenubar -當文檔激活時,是否隱藏閱讀程序的菜單. l PdfWriter.HideWindowUI -當文檔激活時,是否隱藏閱讀程序的界面元素,如滾動條、導(dǎo)航條等,而僅僅保留文檔顯示 l PdfWriter.FitWindow 是否調(diào)整文檔窗口尺寸以適合顯示第一頁。l PdfWriter.CenterWindow 是否將文檔窗口放到屏幕中央 l 在全屏模式下,指定如何顯示界面元素(選擇一個) o PdfWriter.Non
18、FullScreenPageModeUseNone -既不顯示大鋼也不顯示縮略圖 o PdfWriter.NonFullScreenPageModeUseOutlines 顯示大鋼 o PdfWriter.NonFullScreenPageModeUseThumbs 顯示縮略圖 說明:你只能在類PdfWriter中調(diào)用這些方法。u 加密打開文檔之前還要做的一件事情就是加密(如果你希望該文檔加密),要達到這個目的,你可以使用下面的方法:public void setEncryption(boolean strength, String userPassword, String ownerPass
19、word, int permissions); strength 是下面兩個常量之一: o PdfWriter.STRENGTH40BITS: 40 位 o PdfWriter.STRENGTH128BITS: 128位 (Acrobat Reader 5.0及以上版本支持) UserPassword和ownerPassword 可以為空或零長度, 這種情況下, ownerPassword 將被隨機的字符串代替 Permissions 為下列常量之一: o PdfWriter.AllowPrinting o PdfWriter.AllowModifyContents 傳播優(yōu)秀Word版文檔 ,
20、希望對您有幫助,可雙擊去除!o PdfWriter.AllowCopy o PdfWriter.AllowModifyAnnotations o PdfWriter.AllowFillIn o PdfWriter.AllowScreenReaders o PdfWriter.AllowAssembly o PdfWriter.AllowDegradedPrinting 該功能參見示例代碼0109和示例代碼0110。writer.setEncryption(PdfWriter.STRENGTH40BITS, null, null, PdfWriter.AllowCopy);示例代碼0109產(chǎn)生的
21、文件能夠被打開而無須密碼,但用戶不能打印、修改本文檔。writer.setEncryption(PdfWriter.STRENGTH128BITS, userpass, ownerpass, PdfWriter.AllowCopy | PdfWriter.AllowPrinting);打你試圖打開示例代碼0110產(chǎn)生的文件時,將要求輸入密碼(userpass),因為添加了AllowPrinting參數(shù),你可以打印該文檔而不會發(fā)生任何問題。第四步 添加內(nèi)容在解釋第一步到第三步的不同示例中,你可能已經(jīng)遇到了一些對象如Phrase, Paragraph等 在接下來的幾章中,所有這些問題都將得到詳細解
22、釋。有時你可能想一個writer故意忽略document產(chǎn)生的行為,如示例代碼0111:當我們創(chuàng)建了兩個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);傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊
23、去除!我們可以創(chuàng)建兩個有細微差別的文檔: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的區(qū)別第五步,關(guān)閉 document關(guān)閉 document 非常重要, 因為它將關(guān)閉正在運行的Writer并將內(nèi)容寫入文件,該方法在最后被調(diào)用,你應(yīng)該總是要關(guān)閉文檔。高級話題:閱讀PDF文件該部分內(nèi)容介紹了iText只能
24、產(chǎn)生PDF格式的文件而不能解析PDF格式文件,不再翻譯。第二章 塊、短句和段落塊塊(Chunk)是能被添加到文檔的文本的最小單位,塊可以用于構(gòu)建其他基礎(chǔ)元素如短句、段落、錨點等,塊是一個有確定字體的字符串,要添加塊到文檔中時,其他所有布局變量均要被定義。下面一行中,我們創(chuàng)建了一個內(nèi)容為“hello World”、紅色、斜體、COURIER字體、尺寸20的一個塊:Chunk chunk = new Chunk(Hello world, FontFactory.getFont(FontFactory.COURIER, 20, Font.ITALIC, new Color(255, 0, 0);u
25、典型字體1:在本指南中,除了第九章外(你可以在這里學(xué)會使用其他字體),我們將始終使用典型字體1,這些是不同的典型字體1: 傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除! Courier (該字體定寬) Helvetica Times Roman Symbol ZapfDingbats u 下劃線/刪除線如果你希望一些塊有下劃線或刪除線,你可以通過改變字體風(fēng)格簡單做到:Chunk chunk1 = new Chunk(This text is underlined, FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE
26、);Chunk chunk2 = new Chunk(This font is of type ITALIC | STRIKETHRU, FontFactory.getFont(FontFactory.HELVETICA, 12, Font.ITALIC | Font.STRIKETHRU);u 上標/下標在塊中有幾個方法可以調(diào)用,其中大部分將在接下來的章節(jié)中介紹,本章中只介紹一個方法 setTextRise(float f). 你可以使用該方法在上標或下標中寫塊。u 塊的背景如果你想改變塊的背景,你可以使用方法setBackground(Color color). 這將在塊文本的下面添加一個
27、彩色矩形:ck.setBackground(new Color(0xFF, 0xFF, 0x00);在示例代碼0101中,你可以概覽典型字體1和一個使用setTextRise, setBackground等方法的的例子。短句傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!短句(Phrases)是一系列以特定間距(兩行之間的距離)作為參數(shù)的塊,一個短句有一個主字體,但短句中的一些塊具有不同于主字體的字體,你有更多的選擇去創(chuàng)建短句,一些具體使用參見代碼0202。u 古希臘語因為古希臘語經(jīng)常使用,在類Phrase的構(gòu)造函數(shù)中有一個特征:將一個字符串作為參數(shù)(如果你想避免這種情況,你只能使用塊工
28、作而不能使用字符串),正如你在示例代碼0203中看到的,這個特征自動地將913至937(除903)和945至969(古希臘的ASCII值)范圍內(nèi)的所有字體改為希臘符號。u 非主要性與其說這是一個特征,不如說是一個缺陷,但無論如何,這使創(chuàng)建一個非主要性的短句或段落成為可能,這將產(chǎn)生一個由下向上書寫的臨時作用(參見示例代碼0204)。如果你想在一頁中將一些位置移動到上面時可能有用。說明,當你穿越上邊屆時無法檢查,也沒有辦法讓你回到前一頁。段落段落是一系列塊和(或)短句。同短句一樣,段落有確定的間距。用戶還可以指定縮排;在邊和(或)右邊保留一定空白,段落可以左對齊、右對齊和居中對齊。添加到文檔中的每
29、一個段落將自動另起一行。有幾種辦法建立一個段落,如: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);傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!Paragraph p3 =
30、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來改變間距,但是段落中所有內(nèi)容將使用新的
31、中的間距。見示例代碼0205。u 保持段落的整體性在示例代碼0206中,我們使用了setKeepTogether(true)方法來試圖將一個段落放在同一頁中,該方法并不是始終有效,舉個例子,第一段不能剛好在一頁中,于是被分成了兩部分。第二段被放置在第二頁,但第三段順沿到了第三頁上。字體的延續(xù)你應(yīng)該掌握字體延續(xù)的一些規(guī)則,這些規(guī)則的應(yīng)用見示例代碼0207,當我們將一些內(nèi)容用指定的字體(非默認字體)創(chuàng)建一個短句或者段落后再添加更多內(nèi)容時,初始對象的字體風(fēng)格將被延續(xù),請看“Hello 1!”和“Hello 2”:Phrase myPhrase = new Phrase(Hello 2! , new
32、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);傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!我們由Times New Roman 粗
33、體字開始,添加一些文本使用Helvetica字體而不指定風(fēng)格,我們發(fā)現(xiàn)文本被改變成了粗體,當我們再加一些文本使用Times New Roman字體和斜體風(fēng)格,結(jié)果變成了粗斜體。如果我們使用FontFactory來創(chuàng)建字體,字體風(fēng)格不會被延續(xù),因為FontFactory使用了另外的技術(shù)構(gòu)建一個字體:myPhrase = new Phrase(Hello 1bis! , FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 8, Font.BOLD);myPhrase.Add(new Phrase(some other font , FontFactor
34、y.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字體的文本風(fēng)字體沒有指定(既不是粗體也不是斜體)。采用Times New Roman的額外文本僅僅顯示為斜體。你也看到我們添加了一個段落,添加該段落就如同一個短句。Par
35、agraph 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);你可以不這樣做,但將失去字體風(fēng)格的延續(xù),首先不用任何字體創(chuàng)建段落(例中我們僅僅給字體出間距為1.5倍),然后添加內(nèi)容的不同部分。myParag
36、raph = 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);傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!document.Add(myParagraph);如果你使用了Phrase對象,你同樣會失去字體風(fēng)格
37、的延續(xù):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首先會查找分割符,如果沒有找到,文本將在行尾被截
38、斷。有一些預(yù)定的分割符如“ ”空格和“-”連字符,但是你可以使用setSplitCharacter方法來覆蓋這些默認值。在示例代碼0208中,你可以看到當?shù)竭_行尾時一個塊是如何被分割的。然后分隔符被改成點“.”,該行在該字符處被分割。第三章 錨點、列表和注釋錨點我們都知道HTML中的超文本鏈接,當我們點擊某些語句,你能夠跳轉(zhuǎn)到網(wǎng)上的其他頁。在PDF中也可以實現(xiàn)這種功能。事實上,在第十一章整個章節(jié)中有關(guān)于PDF鏈接的介紹,但這是iText的更高級的應(yīng)用,本章中我們處理簡單的iText。如果你想在文檔中添加一個外部鏈接(例如使用URL鏈接到WEB上的其他文檔),你可以簡單地使用Anchor對象,它
39、派生于Phrase對象,使用方法相同。只有兩種額外方法定義兩種額外變量:setName和 setReference。外部鏈接示例:傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!Anchor anchor = new Anchor(website, FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE, new Color(0, 0, 255);anchor.Reference = ;anchor.Name = website; 如果你想添加內(nèi)部鏈接,你需
40、要選擇該鏈接不同的名稱,就象你相位在HTML中利用名稱作為錨點一樣。為達到該目的,你需要添加一個“#”。內(nèi)部鏈接示例: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文件中,對于列表你還可以選擇是否排序。排序
41、列表示例: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);結(jié)果如下:1. First line 2. The second line is longer to see what h
42、appens once the end of the line is reached. Will it start on a new line? 傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!3. Third line 不排序示例如下:List overview = new List(false, 10);overview.Add(new ListItem(This is an item);overview.Add(This is another item);結(jié)果如下: This is an item This is another item 你可以通過setListSymbol方法更
43、改列表符號:/ 用字符串作為列表符號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方法設(shè)置縮排,列表符號的縮排在構(gòu)造函數(shù)中設(shè)置。更多的例子請參見示例代
44、碼0302。注釋iText支持不同風(fēng)格的注釋。u 文本注釋:你可以添加一小段文本到你的文檔中,但它并非文檔內(nèi)容的一部分,注釋有標題和內(nèi)容:Annotation a = new Annotation(authors,傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!Maybe its because I wanted to be an author myself that I wrote iText.);u 外部鏈接注釋:你需要指定一個可點擊的矩形和一個字符串(URL描述)或URL對象:Annotation annot = new Annotation(100f, 700f, 200f, 8
45、00f, new URL();Annotation annot = new Annotation(100f, 700f, 200f, 800f, );u 外部PDF文件鏈接注釋:你需要指定一個可點擊的矩形和一個字符串(文件名稱)和目的文件或頁碼。Annotation annot = new Annotation(100f, 700f, 200f, 800f, other.pdf, mark);Annotation annot = new Annotation(100f, 700f, 200f, 800f, ot
46、her.pdf, 2);u 指定行為鏈接注釋你需要指定一個可點擊的矩形和一個指定的行為:Annotation annot = new Annotation(100f, 700f, 200f, 800f, PdfAction.FIRSTPAGE);u 應(yīng)用程序鏈接注釋:你需要指定一個可點擊的矩形和一個應(yīng)用程序:Annotation annot = new Annotation(300f, 700f, 400f, 800f, C:/winnt/notepad.exe, null, null, null);我們無須在頁面上指定一個位置,iText會內(nèi)部處理。你能夠看到iText添加文本注釋在頁面上當
47、前位置下面,第一個在段后第一行下面,第二個在短句結(jié)束處的下面。傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!所有其他注釋需要指定想匹配的矩形區(qū)域,在示例代碼0304中,我們畫了一些正方形(使用的函數(shù)將在第十章中介紹),為每個正方形添加了一些鏈接注釋。第四章 頁眉頁腳、章節(jié)、區(qū)域和繪圖對象使用在第三至第五章中描述的大量簡單iText對象可以避免更多的高級話題(第九至十二章),緊記這些簡單對象限制的功能,大量復(fù)雜的功能在第三部分。頁眉頁腳HeaderFooter對象可以于為文檔每頁添加頁眉和頁腳。這樣一個頁眉或頁腳包含一個標準的短句(如果需要)和當前頁碼,如果你需要更多復(fù)雜的頁眉和頁腳(使
48、用表格或者第幾頁共幾頁),請閱讀第十二章。在示例代碼0401中,你可以看到我們首先添加了一個包含頁碼沒有任何邊框的頁腳。HeaderFooter footer = new HeaderFooter(new Phrase(This is page: ), true);footer.Border = Rectangle.NO_BORDER;document.Footer = footer我們還可以使用下面的構(gòu)造函數(shù):HeaderFooter footer = new HeaderFooter(new Phrase(This is page ), new Phrase(.);構(gòu)造函數(shù)知道你希望添加一
49、個頁碼和將其放置在兩個短句間,如果你只是設(shè)置一個HeaderFooter而不改變邊框,頁眉或頁腳的文本上下各有一條直線。HeaderFooter header = new HeaderFooter(new Phrase(This is a header without a page number), false);document.Header = header;傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!章節(jié)和區(qū)域在第十一章中將描述如何構(gòu)建一個樹的外觀,如果你只需要一個簡單的章節(jié)和(子)區(qū)域,你可以用Chapter對象和Section對象自動構(gòu)建一個樹:Paragraph cTit
50、le = 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中,我們添加了一系列的章節(jié)和子區(qū)域,你可以看到完整的樹形,樹形結(jié)構(gòu)默認打開,如果你希望部分節(jié)點關(guān)閉,你必須使用用BookmarkOpen屬性其值為
51、false,詳見示例代碼0403。圖形如果你想添加圖形,如直線、圓、幾何窗體,你應(yīng)該閱讀讀十章,但如果你只需要一些有限的功能,你可以使用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。傳播優(yōu)秀Word版文檔 ,希
52、望對您有幫助,可雙擊去除!當你想給頁面加一個邊框或者在文本當前位置畫一條水平線時,圖形對象非常有用。下面的方法用指定的寬度、間距(如果需要)和顏色畫一個邊框。public void setBorder(float linewidth, float extraSpace);public void setBorder(float linewidth, float extraSpace, Color color);下面的方法用指定的寬度(如果需要)和顏色畫一條水平線,線的長度是指定兩邊緣間可用面積的的百分比。public void setHorizontalLine(float linewidth,
53、 float percentage)public void setHorizontalLine(float linewidth, float percentage, Color color)示例代碼5中,有一個離邊界5磅,線寬3磅的邊框,還有兩條水平線,一條為黑色,5磅寬,可用空間的100,另外一條為紅色,線寬3磅,可用空間的80。第五章 表格重點:如果你僅僅生成PDF文件(沒有XML、HTML、RTF),使用類pdfPTable代替類Table更好。一些簡單的表格一個表格是包含單元格排列成矩陣的矩形區(qū)域。表格的距陣并不要求是mn的,它可以有空洞或者單元格比單個的要大。創(chuàng)建一個表格最通用的辦法
54、是預(yù)先知道有幾行幾列:public Table(int columns, int rows);在示例代碼0501中,我們構(gòu)建了一個簡單的表:Table aTable = new Table(2,2);aTable.addCell(0.0);傳播優(yōu)秀Word版文檔 ,希望對您有幫助,可雙擊去除!aTable.addCell(0.1);aTable.addCell(1.0);aTable.addCell(1.1);該表格有兩行兩列,單元格被自動添加,從第一行第一列開始,然后是第二列,當一行滿后,下一單元格自動添加到下一行的第一列中。也可以將單元格添加到表中指定的位置,如示例代碼0502,別了要添加
55、System.Drawing.dll引用,以獲得Point對象,我們創(chuàng)建了一個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屬性設(shè)置為true,這將自動、默認的單元格布局填充空的單元格,如果我們忘記了這樣做(就象本例中第二個表格),將沒有額外的單元格添加,不包含任何單格的行也將被忽略,在本例中,第一行將不顯示,因為該行是空行。經(jīng)常用數(shù)據(jù)庫查詢結(jié)果來填充表格,大多數(shù)情況下,你預(yù)先并不知
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新素養(yǎng)視角下高中數(shù)學(xué)高效課堂的構(gòu)建
- 中學(xué)教育基礎(chǔ)知到課后答案智慧樹章節(jié)測試答案2025年春白城師范學(xué)院
- 三級人力資源管理師-《企業(yè)人力資源管理師(理論知識)》考前強化模擬卷1
- 高考物理課標版一輪復(fù)習(xí)考點規(guī)范練19動量動量定理動量守恒定律的理解
- 重慶市復(fù)旦中學(xué)2024-2025學(xué)年高一下學(xué)期開學(xué)考試生物試題(原卷版)
- 揭陽中式花園施工方案
- 湖南省衡陽縣三中2017-2018學(xué)年高二上學(xué)期期中考試歷史試卷
- 廣東省惠州市惠東中學(xué)2017-2018學(xué)年高三5月熱身綜合練習(xí)生物(二)答案
- 浙江省寧波市2024-2025學(xué)年高三上學(xué)期期末模擬檢測語文試題(原卷版+解析版)
- 河南省南陽市鎮(zhèn)平縣2024-2025學(xué)年七年級上學(xué)期期末語文試題(原卷版+解析版)
- GB/T 19923-2024城市污水再生利用工業(yè)用水水質(zhì)
- 冷庫使用安全知識培訓(xùn)
- 2023信息系統(tǒng)密碼應(yīng)用高風(fēng)險判定指引
- 2023年12月全國大學(xué)外語等級考試考務(wù)工作手冊
- 第三單元《 There is a cake on the table 》大單元教案 四年級英語下冊(重大版)
- 普通高中語文課程標準課件
- 你是獨一無二的自己主題班會課件
- 交通運輸行業(yè)駕駛員違規(guī)處理規(guī)范培訓(xùn)
- 智聯(lián)招聘測評的題庫
- 華為企業(yè)數(shù)據(jù)架構(gòu)、應(yīng)用架構(gòu)及技術(shù)架構(gòu)設(shè)計方法
- 《空調(diào)工作原理》課件
評論
0/150
提交評論