ITextSharp中文教程用C-制作PDF文件全攻略_第1頁
ITextSharp中文教程用C-制作PDF文件全攻略_第2頁
ITextSharp中文教程用C-制作PDF文件全攻略_第3頁
ITextSharp中文教程用C-制作PDF文件全攻略_第4頁
ITextSharp中文教程用C-制作PDF文件全攻略_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

用C#制作PDF文件全攻略前言 3第一部分iText的簡單應(yīng)用 4第一章創(chuàng)建一個Document 4 5第二步創(chuàng)建Writer實(shí)例 6第三步打開Document 6 第二章塊、短句和段落 短句 段落 字體的延續(xù) 第三章錨點(diǎn)、列表和注釋 錨點(diǎn) 列表 注釋 頁眉頁腳 章節(jié)和區(qū)域 圖形 第五章表格 一些簡單的表格 一些表格參數(shù) 大表格 內(nèi)存管理 嵌套表格 表格偏移 第六章圖片 Image對象 圖片的位置 縮放和旋轉(zhuǎn)圖片 原始圖片數(shù)據(jù) 圖片和其他對象 第二部分其他文檔格式 第七章XML和(X)HTML 第八章RTF文件 創(chuàng)建一個RTF文檔 不支持的特性 RTF中擴(kuò)展的頁眉和頁腳 第三部分iText的高級應(yīng)用 第九章字體 TrueType字體應(yīng)用 TruType字體集合的應(yīng)用 簡單圖形 文本 模板(FormxObjects) 分欄 32 本地轉(zhuǎn)向 異地轉(zhuǎn)向 第十二章頁面和表格事件 34定按鈕;3、在“解決方案資源管理器”中右鍵單擊“引用",從彈出的菜單中選擇“添加引用”,在"NET"選項(xiàng)夾中選擇“瀏覽”,添加前面提到的兩個應(yīng)用,如下圖:周Accessibity.dl第一章創(chuàng)建一個Document利用iText五步創(chuàng)建一個PDF文件:helloword。第二步,為該Document創(chuàng)建一個Writer實(shí)例:PdfWritergetInstancedocumentnewFileStreamChappdfFileModeCreate第三步,打開當(dāng)前Document第四步,為當(dāng)前Document添加內(nèi)容:publicDocumentRectanglepagepublicDocumentRectanglepagDocumentdocumentnewDocumentPageS21厘米/2.54=8.2677英寸8.2677英寸*72=595磅29.7厘米/2.54=11.6929英寸第二步創(chuàng)建Writer實(shí)例第三步打開DocumentpublicbooleanaddTitlepublicbooleanaddKeywordsStri果看看實(shí)例代碼0101產(chǎn)生的pdf文件的"文檔屬性",我們可以看到僅僅有PDF創(chuàng)建程序和產(chǎn)品日期,而示例代碼0106的“文檔屬性”框中有更多的信息。安全性安全性高級說明宇體確定文文安全性標(biāo)題(I):HeloWorldexample作者(A):GeraldHenson主題(5):Thisexampleexplainsstep3inChapter1關(guān)鍵字(C:Metadata,iTextSharp,step3,tutorial修改日期:PDF加工程序:iTextebyGeraldHenson(r0,95of,basedonversionPDF版本:1.4(Acrobat5.x)文件大小:1.17字節(jié))加標(biāo)簽的PDF:否快速Web查看:否打開document前要做的事:你只能在Open方法調(diào)用之前添加摘要,這是iText開發(fā)工具提供的一個選擇。在HTML中,報頭信息被放在文檔前面報頭標(biāo)識中間,調(diào)用Open方法將導(dǎo)致報頭信息寫入流,因而在Document被打開后無法更改這些數(shù)據(jù)。PDF報頭信息不包括摘要,看起來有類似于:該行顯示生成的文檔是一個版本為1.2的PDF格式的文件,在PDF中,摘要保存在PdfInfo對象中,當(dāng)文檔關(guān)閉時已經(jīng)寫入PdfWriter中了,因此,沒有關(guān)于為什么不能修改庫來滿足任何時候添加或更改摘要的技術(shù)原因Open方法在不同的Witer中同時會產(chǎn)生初始化事件,舉例來說,如果你需要一個水印或者頁眉頁角對象出現(xiàn)在文檔第一頁的開始處,你需要在打開文檔前添加這些,同樣的用于設(shè)置該文檔其他頁水印、頁眉、頁角、頁數(shù)和尺寸。當(dāng)調(diào)用下列方法:publicboolsetPageSizeRectanpublicboolAddWatermarkwatermapublicvoidremoveWatermpublicvoidresetPageCo產(chǎn)生的結(jié)果只能在下一個新頁中看到(當(dāng)在本頁調(diào)用初始化方法時),代碼見示例代碼你可以通過下面的辦法為PDF文件指定一些閱讀器(如AdobeReader)參數(shù):publicvoidsetViewerPreferencesi在示例代碼0108中,指定了下面一些參數(shù):writerAsetViewerPreferencesPdfWriterPageLayoutTwoColumnLewriterBsetViewerPreferencesPdfWriterHideMenubawritercsetViewerPreferencesPdfWriterPageLayoutTwoColumnLPdfWriterPageModeFullScreenIPdfWriterNonFullScreenPag●文件被打開時,頁面布局用到下面的其中一個:者其他任何windows可見控件●PdfWriter.HideToolbar-當(dāng)文檔激活時,是否隱藏閱讀程序(如AdobeReader)●在全屏模式下,指定如何顯示界面元素(選擇一個)-既不顯示大鋼也不顯示縮顯示大鋼顯示縮略圖打開文檔之前還要做的一件事情就是加密(如果你希望該文檔加密),要達(dá)到這個目的,你可以使用下面的方法:oPdfWriter.STRENGTH128BITS:128位(AcrobatReader5.0及以上版本支持)ownerPassword將被隨機(jī)的字符串代替該功能參見示例代碼0109和示例代碼0110。writer.setEncryption(PdfWriter.STRENGTH4BITSnullnullPdfWriterAllowCopy示例代碼0109產(chǎn)生的文件能夠被打開而無須密碼,但用戶不能打印、修改本文檔。writersetEncryptionPdfWriterSTRENGTHBIPdfWriterAllowCopyPdfWriterAllowPri打你試圖打開示例代碼0110產(chǎn)生的文件時,將要求輸入密碼('userpass'),因?yàn)樘砑恿说谒牟教砑觾?nèi)容在解釋第一步到第三步的不同示例中,你可能已經(jīng)遇到了一些對象如Phrase,Paragraph等在接下來的幾章中,所有這些問題都將得到詳細(xì)解釋。有時你可能想一個writer故意忽略document產(chǎn)生的行為,如示例代碼0111:PdfWriterwriterAPdfWritergetInstancedocumentnewFileStreamPdfWriterwriterBPdfWritergetInstancedocumentnewFileStreamdocumentaddnewParagraphThisparagr高級話題:閱讀PDF文件第二章塊、短句和段落塊體、尺寸20的一個塊:ChunkchunknewChunkHelloworldFontFacto◆典型字體1:在本指南中,除了第九章外(你可以在這里學(xué)會使用其他字體),我們將始終使用典型字體1,這些是不同的典型字體1:FontFactory.getFont(FontFactory.HELVETICAFontUNDERLINEFontFactory.getFont(FontFactory.HELVETICA,FontITALICFontSTRIKETHRU中看到的,這個特征自動地將913至937(除903)和945至969(古希臘的ASCII值)范paragraph.",FontFactory.getFont(FontFactory.HELVETICA,12paragraph.",FontFactory.getFont(FontFactory.HELVETICA,12ParagraphpnewParagraphThisisFontFactory.getFont(FontFactoryHELVETICAchunks"));pl.add(newPhrase("oryoucanaddphrases."));PhrasemyPhrasenewPhraseHellonewFonmyParagraphAddnewParagraphHellonewFontFontTImyParagraphAddnewParagraphThisisthemyPhraseAddnewPhraseHellonew第三章錨點(diǎn)、列表和注釋FontUNDERLINEnewColor通過類List和ListItem,你可以添加列表到PDF文件中,對于列表你還可以選擇是否排序。結(jié)果如下:不排序示例如下:結(jié)果如下://用字符串作為列表符號/用Chunk作為列表符號(包含“?!弊址?listListSymbolnewChunkFontFactorygetFontFontFactoryHELVETIClistListSymbolnewChunkImagegetInstancemyB造函數(shù)中設(shè)置。更多的例子請參見示例代碼0302。iText支持不同風(fēng)格的注釋。你可以添加一小段文本到你的文檔中,但它并非文檔內(nèi)容的一部分,注釋有標(biāo)題和內(nèi)容:MaybeitsbecauseIwantURL("Annotationannot=newAnnotation(1httpwwwlowagiecom你需要指定一個可點(diǎn)擊的矩形和一個字符串(文件名稱)和目的文件或頁碼。Annotationannot=newAnnotation(100f,700fotherpdfmarkAnnotationannotnewAnn◆指定行為鏈接注釋Annotationannot=newAnnotation(100PdfActionFIRSTPAGEAnnotationannot=newAnnotation(300f,700f,4winntnotepadexenullnull所有其他注釋需要指定想匹配的矩形區(qū)域,在示例代碼0304中,我們畫了一些正方形(使用的函數(shù)將在第十章中介紹),為每個正方形添加了一些鏈接注釋。第四章頁眉頁腳、章節(jié)、區(qū)域和繪圖對象使用在第三至第五章中描述的大量簡單iText對象可以避免更多的高級話題(第九至十二章),緊記這些簡單對象限制的功能,大量復(fù)雜的功能在第三部分。準(zhǔn)的短句(如果需要)和當(dāng)前頁碼,如果你需要更多復(fù)雜的頁眉和頁腳(使用表格或者第幾頁共幾頁),請閱讀第十二章。在示例代碼0401中,你可以看到我們首先添加了一個包含頁碼沒有任何邊框的頁腳。HeaderFooterfooternewHeaderFoote我們還可以使用下面的構(gòu)造函數(shù):HeaderFooterfooter=newHeaderFooter(newPhrase("Thisispage"),newPhrase("."));構(gòu)造函數(shù)知道你希望添加一個頁碼和將其放置在兩個短句間,如果你只是設(shè)置一個HeaderFooterheadernewHeaderF在第十一章中將描述如何構(gòu)建一個樹的外觀,如果你只需要一個簡單的章節(jié)和(子)區(qū)域,你可以用Chapter對象和Section對象在示例代碼0402中,我們添加了一系列的章節(jié)和子區(qū)域,你可以看到完整的樹形,樹詳見示例代碼0403。//添加一個矩形//添加一條斜線//將圖形顯示出來完整的代碼請見示例代碼0404,如果想看到全部的方法,請參見PdfContentByte對象面的方法用指定的寬度、間距(如果需要)和顏色畫一個邊框。下面的方法用指定的寬度(如果需要)和顏色畫一條水平線,線的長度是指定兩邊緣間示例代碼5中,有一個離邊界5磅,線寬3磅的邊框,還有兩條水平線,一條為黑色,5磅寬,可用空間的100%,另外一條為紅色,線寬3磅,可用空間的80%。第五章表格也可以將單元格添加到表中指定的位置,如示例代碼0502,別了要添加iText根據(jù)需要自動添加行,在示例代碼0503中,初始化了4行4table.BorderColor=newColor(0,0,255);cell.Header=true;碼0507顯示,我們在PDF中有大量更多可能。在第22行中,你也能定義單元格的背景色,在示例代碼0507中,我們不使用顏色只是最后,你也能設(shè)置單元格的行跨(11/20行)和列跨(8/21列)。通過這種方法可以將幾第7行在PDF中沒有意義,用于生成HTML,在HTML中并不是總能產(chǎn)生同樣的布局,◆表格分割如果一個表格不能放在一頁中,將自動被分割,示例代碼0508顯示了當(dāng)一個表格到達(dá)跨越幾頁的表格將自動被分割成不同的部分。示例代碼0509顯示了一個跨越多頁的報記表頭區(qū)域的結(jié)束點(diǎn),見示例代碼0510。為做這樣的報表,建議設(shè)置單元格間距為0和僅使用指定的填距。◆強(qiáng)行將一個表格或單元格布置到一頁上有有些情況下,你可能希望避免單元格或者整個表被拆分成兩個部分,示例代碼05110508和示例代碼0511結(jié)果區(qū)別。在示例代碼0512中我們修改了示例代碼0510的該Table對象一直保存著,對于真正的大表格,這將成為一個問題。單元格的80%(這是默認(rèn)的寬度百分比),你不得不在單元格中繞排,見示例代碼0515,這第六章圖片這是添加一個圖片最簡單的辦法,見示例代碼0601,我們添加了一個WMF、一個Gif.一個Jpeg和一個PNG圖片到文檔中,使用4個URL得到:Imagewmf=Image.getInstance(newURL("../examples/harbour.wmf"));Imagegif=Image.getInstance(newURL("../examples/vonnegut.gif"));URL("../examples/myKidsjpg備注:許多PDF庫在插入一個圖片前都將其解壓縮并轉(zhuǎn)換成位圖格式,下面是幾個我為通過簡單地改變圖片引用路徑將示例代碼0601改成示例代碼0602:Imagegif=通過簡單地改變圖片引用路徑將示例代碼0601改成示例代碼0602:Imagejpeg=Image.getInstance("myKids.jpg");Imagepng=Image.getInstance("hitchcock.png");同示例代碼0601的區(qū)別只是該圖象從本地獲取而已,另外一個例子見示例代碼0603。圖片的位置◆對齊方式AlignmentImageRIGHTImageTEX見示例代碼0506,文字在Vonnegut圖片的左側(cè),并不在我小孩的圖處環(huán)繞,且排在◆絕對位置將一個圖片放要頁面上一個絕對位置的代碼見示例代碼0606,我們在不同的坐標(biāo)處添加縮放和旋轉(zhuǎn)圖片英寸的圖片,圖片結(jié)果為1500×1500象素(5×300),當(dāng)你用24%(72/300-0.24)的比例原始圖片數(shù)據(jù)該圖片尺寸為8×8象素,每組一個字節(jié),使用makeMask()bytemaskr[]={(byte)0x3c,(byte)0x7e,(byte)0xe7,(byte)0xc3,(byte)xcbyteOxeImagemaskImagegetInstancemaskcbaddlmagemaskmaskscaledWidthmas具體代碼見示例代碼0614,我們可以添加該特殊圖片塊到短句、表格等,本例中的圖片請httpitextsharpsourceforgene圖片在表格中參見示例代碼0615。如果你希望得到一個可點(diǎn)擊的圖片,或者想添加鏈接注釋到圖片上,你需要創(chuàng)建一個Annotation對象,并添加到圖片上,你不需要指定位置(你可以使用0,0,0,0),該位置會內(nèi)gif.Annotation=newAnnotation(0,0,0,0,"Chappdfjpeg.Annotation=newAnnotation("picture"Thesearemychildren參加示例代碼0616。第二部分其他文檔格式本章主要介紹了如何利用iText控件生成XLM文檔和(X)HTML并不感興趣,故只介紹本章中提到的將XML轉(zhuǎn)為PDF。在第一章中,我們通過5步生產(chǎn)一個PDF文件,為了將一個XML件,只需重寫第3和第4步,第5步由解析器自動處理。文檔,但我們對這些文件轉(zhuǎn)換為PDF文h.Parse("Chap0701.xml示例代碼見示例代碼0702創(chuàng)建一個RTF文檔RtfWritergetInstancedocumentnewFileStreamChaprt第3步打開document:第4步添加內(nèi)容到document第5步關(guān)閉document你當(dāng)然可以結(jié)合Chapter創(chuàng)建4個不同的頁眉或頁腳,見示例代碼0803。第1步創(chuàng)建一個RtfHeaderFooters類:RtfHeaderFootersheadersnewRt第2步添加HeaderFooter對象headersAddRtfHeaderFootersLEFTPAGESnewHeaderFooterheadersAddRtfHeaderFootersRIGHTPAGESnewHeaderFooter第3步如同使用頁眉頁腳一RtfHeaderFooters___第九章字體SIMSUN.TTC:宋體和新宋體SIMHEITTF:黑體SIMFANG.TTF:仿宋體按下面的方法寫入黑體字文字,大小為32磅:BaseFontbfHeiBaseFontcreateFontwinnBaseFontIDENTITYHBaseFontNdocumentAddnewParagrapBaseFontbfSun=BaseFont.createFont(@"cwinntfontsSIMSUNTTCtext="這是字體集合中的新宋體測試!";@"c:\winntfontsISIMSUN.TTC,1"中多了一個“,1',表示使用序號為1字體,序號為0的字作,不妨做成XML文件(最簡單的辦法就是用Word排版,然后另存為web頁了),然后代碼見示例代碼0901。到目前為止,我們已經(jīng)使用了簡單的iText,我們已經(jīng)添加了文置在某頁的指定位置,PdfContentByte為代替第PdfWritergetInstance有一個PdfWriter對象,你可以通過在使用Writer對象中使用getDirectContent()PdfWriterwriter=PdfWriter.getInstance(document,newFileoutputStream("test.pdf"));PdfContentBytecb=writer.DirectContent;說明:當(dāng)你添加高級對象(如表格)時,兩個PdfContentByte對象將被內(nèi)部使用:一getDirectContentPdfContentByt1、通過getDirectContentUnder()得到的PdfContentByte簡單圖形在示例代碼1001中,繪制了一些簡單圖形,我們使用了諸如moveTo和lineTo方法來在移動到頁面上當(dāng)前位置然后畫一條直線到其他位置。我們使用了諸如setLineWidth和setLineDash方法來改變直線的外觀,如:cb.LineWidth=10f;cbshowTextAlignedPdfContentBy例2:請參見示例代碼1002。◆創(chuàng)建一個PdfTemplate◆創(chuàng)建PdfTemplate的最好方法是調(diào)用PdfContentBytePdfContentByte-object:PdfTemplate

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。