iText 5
https://github.com/itext/itextpdf
您可以在此處找到最新版本:
http://github.com/itext/itextpdf/releases/latest
http://jump-pilot.sourceforge.net/repository/org/apache/commons/commons-imaging/1.0-SNAPSHOT/
依賴加入:
PdfWriter
PDF的DocWriter類。
當(dāng)這個PdfWriter被添加到一個特定的PdfDocument時,添加到這個文檔的每個元素的PDF表示將被寫入輸出流。
PdfWriter 構(gòu)造方法
public static PdfWriter getInstance(final Document document, final OutputStream os)PdfWriter 常用方法
// 獲取此文檔的頁碼。如果您之前(重新)設(shè)置了頁碼,那么這個頁碼可以與實際的頁碼不同。 public int getPageNumber()public int getCurrentPageNumber()// 使用此方法獲取此文檔下的直接內(nèi)容。只有一個直接內(nèi)容,對該方法的多次調(diào)用將始終檢索相同的對象。 public PdfContentByte getDirectContentUnder() // 使用此方法獲取本文檔的直接內(nèi)容。只有一個直接內(nèi)容,對該方法的多次調(diào)用將始終檢索相同的對象。 public PdfContentByte getDirectContent()// 使用此方法可從其他PDF文檔獲取頁面。該頁面可以用作任何其他PdfTemplate。請注意,使用相同的參數(shù)多次調(diào)用此方法將檢索相同的對象。 public PdfImportedPage getImportedPage(final PdfReader reader, final int pageNumber)PdfDocument
Document
一個通用的Document類。
所有類型的文本元素都可以添加到HTMLDocument中。當(dāng)添加元素時,Document向所有監(jiān)聽器發(fā)出信號。
備注:
創(chuàng)建文檔之后,您可以添加一些元信息。
您還可以設(shè)置頁眉/頁腳。
你必須先打開文檔才能寫內(nèi)容。
一旦打開文檔,就只能寫入內(nèi)容(不能再寫入元格式了!)
當(dāng)你改變某一頁的頁眉/頁腳時,這將從下一頁開始生效。
關(guān)閉文檔后,每個監(jiān)聽器(以及它的OutputStream)都被關(guān)閉
Document 常用方法
//打開文檔。 //一旦文檔被打開,您就不能再編寫任何頭信息或元信息了。在開始向文檔主體添加內(nèi)容之前,必須先打開文檔。 public void open() //關(guān)閉文檔。 //一旦所有的內(nèi)容都寫入了body,就必須關(guān)閉body。在那之后,任何東西都不能寫入body public void close()//向文檔添加用戶定義的標(biāo)頭 public boolean addHeader(String name, String content) 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 addCreationDate()PdfContentByte
PdfContentByte是一個包含用戶定位的頁面文本和圖形內(nèi)容的對象。它知道如何應(yīng)用正確的字體編碼。
在PDF中當(dāng)涉及到布局問題時(不再是自動地添加文本、圖片等等,對元素在頁面上的位置有一定的要求),有時我們希望將一些圖像或者文本放置在某頁的指定位置,為實現(xiàn)該功能,我們將使用PdfContentByte類。
PdfContent對象可以通過在使用Writer對象中使用getDirectContent()方法來得到該對象
//向頁面添加圖像。圖像必須有絕對定位。 public void addImage(final Image image)public void saveState() public void restoreState()//設(shè)置圖形狀態(tài) public void setGState(final PdfGState gstate)//創(chuàng)建一個新模板,它只不過是一個表單XObject。這個模板可以包含在這個PdfContentByte或其他模板中。 //只有當(dāng)文檔關(guān)閉,模板才寫入輸出。允許在第一頁顯示僅在最后一頁定義的文本 public PdfTemplate createTemplate(final float width, final float height)//向頁面添加圖像。圖像的定位是通過變換矩陣完成的。使用addImage(image, image_width, 0,0, image_height, x,y)將圖像定位在(x,y)處。 public void addImage(final Image image, final float a, final float b, final float c, final float d, final float e, final float f)PdfTemplate
實現(xiàn)表單XObject
創(chuàng)建一個新模板,它只不過是一個表單XObject。這個模板可以包含在這個PdfContentByte或其他模板中。只有當(dāng)文檔關(guān)閉,允許在第一頁顯示僅在最后一頁定義的文本時,模板才寫入輸出。
PdfPage
PdfPage是PDF page對象。
Page對象是一個字典,它的鍵描述了包含文本、圖形和圖像的單個頁面。Page對象是Pages樹的一個葉節(jié)點。該節(jié)點在“便攜式文檔格式參考手冊1.3版”6.4節(jié)中描述(73-81頁)
PdfName
PdfName是一個可以在pdf文件中用作名稱的對象
一個名字,就像一個字符串,是一個字符序列。它必須以斜杠開頭,后面跟一個32到136的ASCII字符序列(%,(,),[,],<,>,{,},/和#除外)。除了0x00之外的任何字符都可以通過將其前面帶有#的兩個字符的十六進(jìn)制代碼包含在名稱中。名稱的最大字符數(shù)為127。該節(jié)點在’Portable Document Format Reference Manual version 1.7’章節(jié)3.2.4 (page 56-58)中有描述。
PdfObject
PdfObject是所有PDF對象的抽象超類。
PDF支持七種基本類型的對象:布爾值、數(shù)字、字符串、名稱、數(shù)組、字典和流。此外,PDF還提供了一個空對象。對象可以被標(biāo)記,以便它們可以被其他對象引用。所有這些基本的PDF對象都在“便攜式文檔格式參考手冊1.3版”第4章(37-54頁)中進(jìn)行了描述。
Rectangle
矩形是幾何圖形的表示法。矩形使用setBorderWidth(float)和setBorder(int)來支持固定寬度的邊框。它們還支持使用setBorderWidthLeft(float)或setBorderColorLeft(BaseColor)等方法在每邊改變寬度/顏色的邊框。
//顯示矩形邊框的一邊 可用于PdfPCell public static final int TOP = 1 //設(shè)置左邊框的寬度 public void setBorderWidthLeft(final float borderWidthLeft)//設(shè)置矩形的背景顏色 public void setBackgroundColor(final BaseColor backgroundColor)public Rectangle rotate() //設(shè)置矩形的旋轉(zhuǎn)。有效值為0、90、180和270。 public void setRotation(final int rotation)//左下角的x坐標(biāo) public float getLeft()public void setLeft(final float llx)//啟用/禁用指定邊的邊框。邊界被指定為常量LEFT, RIGHT, TOP, BOTTOM的整數(shù)位組合 可用于PdfPCell public void setBorder(final int border) // 設(shè)置矩形的背景顏色 可用于PdfPCell sn.setBackgroundColor(BaseColor.YELLOW)BaseColor
BaseColor 構(gòu)造方法
public BaseColor(final int red, final int green, final int blue) public BaseColor(final float red, final float green, final float blue) //alpha是指的透明度,這個詞還出現(xiàn)在元件的色彩效果里,以及代碼屬性中。 public BaseColor(final int red, final int green, final int blue, final int alpha)public BaseColor(final float red, final float green, final float blue, final float alpha)public BaseColor(final int argb) public static final BaseColor WHITEGrayColor
public static final GrayColor GRAYBLACK = new GrayColor(0f)public static final GrayColor GRAYWHITE = new GrayColor(1f)FontFactory
如果使用True Type字體,可以先將不同ttf和ttc文件的路徑聲明到這個靜態(tài)類,然后使用一個靜態(tài)getfont方法在代碼中創(chuàng)建字體,而不必將路徑作為參數(shù)輸入。
add:
TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字體文件格式,隨著windows的流行,已經(jīng)變成最常用的一種字體文件表示方式。
"系統(tǒng)盤\WINDOWS\Fonts”
字庫
BaseFont
支持的幾種字體類型的基類
Font
包含字體的所有規(guī)格:fontfamily, size, style和color。
Font 構(gòu)造方法
public Font(final FontFamily family, final float size, final int style, final BaseColor color) //采用水平書寫的Unicode編碼 public static final String IDENTITY_H = "Identity-H";public static final String IDENTITY_V = "Identity-V" //獲取Postscript字體名稱 public abstract String getPostscriptFontName()Image
Image是插入到文檔中的圖形元素(JPEG、PNG或GIF)的表示形式
Image 構(gòu)造方法
public static Image getInstance(final String filename)public static Image getInstance(final URL url) public Image(final URL url) //復(fù)制建構(gòu)函數(shù) protected Image(final Image image)public static Image getInstance(final PdfTemplate template)Image 常用方法
//將圖像按矩形的尺寸縮放 public void scaleAbsolute(final Rectangle rectangle)// 設(shè)置圖像的絕對位置 public void setAbsolutePosition(final float absoluteX, final float absoluteY)//縮放圖像,使其適合特定的寬度和高度 public void scaleToFit(final float fitWidth, final float fitHeight)// 獲取圖像的縮放寬度 這是考慮到旋轉(zhuǎn)的圖像的縮放寬度。 public float getScaledWidth()public float getScaledHeight()PdfGState
圖形狀態(tài)字典
//設(shè)置當(dāng)前描邊alpha常數(shù),指定透明成像模型中用于非描邊操作的常數(shù)形狀或常數(shù)不透明度值。 public void setFillOpacity(float ca)ColumnText
以列形式格式化文本。文本由一系列行在左右兩側(cè)綁定。這使得柱可以有任何形狀,而不僅僅是矩形。
可以設(shè)置幾個參數(shù),如第一段行縮進(jìn)和段落之間的額外空格。
對go方法的調(diào)用將返回以下情況之一:列結(jié)束或文本結(jié)束。
如果列結(jié)束,可以用setColumns方法加載一個新的列定義,并且可以再次調(diào)用go方法。
如果文本結(jié)束,更多的文本可以加載與addText和方法go可以被再次調(diào)用。唯一的限制是每次必須加載一個或多個完整的段落。
支持完全的雙向重排序。如果運行方向為pdfrwriter。RUN_DIRECTION_RTL水平對齊和邊距的含義被鏡像。
ColumnText 構(gòu)造方法
//canvas 文本將被寫入的地方。可以是模板 public ColumnText(final PdfContentByte canvas)ColumnText 常用方法
// 將行輸出到文檔中。它等同于go(false)。 public int go() //設(shè)置列的邊界。每個列的邊界由一個float[]描述,其線點為[x1,y1,x2,y2,…]。數(shù)組必須至少有4個元素。 public void setColumns(final float leftLine[], final float rightLine[])//顯示一行文本。只寫了第一行 public static void showTextAligned(final PdfContentByte canvas, final int alignment, final Phrase phrase, final float x, final float y, final float rotation) //矩形柱的簡化方法 public void setSimpleColumn(Rectangle rect)//將短語添加到當(dāng)前文本數(shù)組。如果addElement()之前被調(diào)用,則不會有任何效果。 public void addText(final Phrase phrase)// 添加一個元素。支持的元素是段落,列表,PdfPTable和圖像。 //也接受一個Chunk和一個短語,它們被放置在一個新的段落中。 //它刪除所有使用addText()放置的文本。 public void addElement(Element element)Element 接口
文本元素的接口。
// 段落對齊的可能值。這指定文本對齊到左縮進(jìn),額外的空白應(yīng)該放在右邊 public static final int ALIGN_LEFT = 0//垂直對齊的可能值 public static final int ALIGN_TOP = 4;Chunk
這是可以添加到文檔中的最小文本重要部分。
大多數(shù)元素可以分成一個或多個Chunks。chunk是一個具有特定字體的字符串。所有其他的布局參數(shù)都應(yīng)該在添加文本塊的對象中定義
Chunk 構(gòu)造方法
public Chunk(final String content, final Font font) public Chunk(final String content)public Chunk(final char c, final Font font) public Chunk(final char c)public Chunk(final Image image, final float offsetX, final float offsetY,final boolean changeLeading) //構(gòu)造一個包含圖像的塊 //offsetX 圖像在x方向上的偏移量 public Chunk(final Image image, final float offsetX, final float offsetY) public Chunk(final Image image, final float offsetX, final float offsetY,final boolean changeLeading)Chunk 常用方法
//設(shè)置一個水平線,它可以是下劃線或刪除線。實際上,這條線可以在任何垂直的地 // 方,并且始終具有Chunk寬度。多次調(diào)用此方法將產(chǎn)生多行。 public Chunk setUnderline(final float thickness, final float yPosition)Phrase
短語是一系列的Chunk
一個短語有一個主字體,但是短語中的一些塊可以有一個不同于主字體的字體。一個短語中的所有塊都有相同的引導(dǎo)
Paragraph
public void setIndentationLeft(float indentation)PdfPTable
這個表可以放在絕對位置,也可以作為 Table 類添加到文檔中
PdfPTableEvent可以與表關(guān)聯(lián),在表被渲染時進(jìn)行自定義繪制。
PdfPTable 構(gòu)造方法
// 用numColumns列構(gòu)造一個PdfPTable public PdfPTable(final int numColumns)PdfPTable 常用方法
// 添加一個單元格元素。 public void addCell(final String text) public void addCell(final Phrase phrase) public void addCell(final Image image)// 添加嵌套表 public void addCell(final PdfPTable table) ) // 設(shè)置表格在頁面中所占的寬度百分比 public void setWidthPercentage(final float widthPercentage) //設(shè)置表的全寬度 public void setTotalWidth(final float totalWidth) 從絕對列寬度設(shè)置表的全寬度 public void setTotalWidth(final float columnWidth[])//設(shè)置組成標(biāo)題的頂部行數(shù)。這個標(biāo)題只有當(dāng)表被添加到Document并且表跨越頁面時才有意義 public void setHeaderRows(int headerRows)//設(shè)置要用于頁腳的行數(shù)。從標(biāo)題行中減去頁腳行數(shù)。 public void setFooterRows(int footerRows)//跳過第一個標(biāo)題的打印。當(dāng)連續(xù)打印屬于同一打印表方面的表時使用。 public void setSkipFirstHeader(final boolean skipFirstHeader)public void setSkipLastFooter(final boolean skipLastFooter)//設(shè)置表的相對寬度 public void setWidths(final int relativeWidths[])//設(shè)置此表前的間距 public void setSpacingBefore(final float spacing) //獲取默認(rèn)的PdfPCell,該PdfPCell將用作除addCell(PdfPCell)外的所有addCell方法的引用。 public PdfPCell getDefaultCell()PdfPCell
PdfPTable中的單元格。
PdfPCell 構(gòu)造方法
// 使用短語構(gòu)造PdfPCell。默認(rèn) padding 為2 public PdfPCell(Phrase phrase)//用圖像構(gòu)造一個PdfPCell。對于0.5的邊框?qū)挾?#xff0c;默認(rèn)padding為0.25。 //fit True,以使圖像適合單元格 public PdfPCell(Image image, boolean fit) //The default padding is 0. public PdfPCell(Image image)//構(gòu)造一個PdfPCell的深層副本。 public PdfPCell(PdfPCell cell)//用PdfPtable構(gòu)造一個PdfPCell。這個構(gòu)造函數(shù)允許嵌套表。默認(rèn)填充為0。 public PdfPCell(PdfPTable table)// 應(yīng)用于單元格的樣式(可以使用getDefaultCell()) public PdfPCell(PdfPTable table, PdfPCell style)PdfPCell 常用方法
// 屬性rowspan的Setter public void setRowspan(int rowspan)//設(shè)置表的全寬度 public void setTotalWidth(final float totalWidth)// 在Document.add()中使用setTotalWidth()中的值。 public void setLockedWidth(final boolean lockedWidth)//colspan的Setter。 public void setColspan(int colspan) // 向單元格添加iText元素 public void addElement(Element element)//設(shè)置單元格的水平對齊方式。它可以是Element.ALIGN_CENTER為例。 public void setHorizontalAlignment(int horizontalAlignment)public int getVerticalAlignment()List
List包含多個 ListItem
List 構(gòu)造方法
//在生成pdf文檔時,縮進(jìn)是很重要的,它指示列表符號的縮進(jìn)。這對于html文檔并不重要 public List(final boolean numbered, final float symbolIndent)// 創(chuàng)建一個列表 public List(final boolean numbered, final boolean lettered, final float symbolIndent)List 常用方法
PdfReader
讀取PDF文檔
PdfReader 構(gòu)造方法
//讀取和解析PDF文檔。 public PdfReader(final String filename)總結(jié)
- 上一篇: C语言实数除法怎样保留小数(编程技巧)
- 下一篇: 几个极速版自动阅读项目的autojs脚本