日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iText 5

發布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/
依賴加入:

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><itext.version>5.5.1</itext.version></properties><dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>${itext.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-pdfa</artifactId><version>${itext.version}</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-xtra</artifactId><version>${itext.version}</version></dependency><dependency><groupId>com.itextpdf.tool</groupId><artifactId>xmlworker</artifactId><version>${itext.version}</version></dependency></dependencies>

PdfWriter

PDF的DocWriter類。
當這個PdfWriter被添加到一個特定的PdfDocument時,添加到這個文檔的每個元素的PDF表示將被寫入輸出流。

PdfWriter 構造方法

public static PdfWriter getInstance(final Document document, final OutputStream os)

PdfWriter 常用方法

// 獲取此文檔的頁碼。如果您之前(重新)設置了頁碼,那么這個頁碼可以與實際的頁碼不同。 public int getPageNumber()public int getCurrentPageNumber()// 使用此方法獲取此文檔下的直接內容。只有一個直接內容,對該方法的多次調用將始終檢索相同的對象。 public PdfContentByte getDirectContentUnder() // 使用此方法獲取本文檔的直接內容。只有一個直接內容,對該方法的多次調用將始終檢索相同的對象。 public PdfContentByte getDirectContent()// 使用此方法可從其他PDF文檔獲取頁面。該頁面可以用作任何其他PdfTemplate。請注意,使用相同的參數多次調用此方法將檢索相同的對象。 public PdfImportedPage getImportedPage(final PdfReader reader, final int pageNumber)

PdfDocument

Document

一個通用的Document類。
所有類型的文本元素都可以添加到HTMLDocument中。當添加元素時,Document向所有監聽器發出信號。
備注:
創建文檔之后,您可以添加一些元信息。
您還可以設置頁眉/頁腳。
你必須先打開文檔才能寫內容。
一旦打開文檔,就只能寫入內容(不能再寫入元格式了!)
當你改變某一頁的頁眉/頁腳時,這將從下一頁開始生效。
關閉文檔后,每個監聽器(以及它的OutputStream)都被關閉

Document 常用方法

//打開文檔。 //一旦文檔被打開,您就不能再編寫任何頭信息或元信息了。在開始向文檔主體添加內容之前,必須先打開文檔。 public void open() //關閉文檔。 //一旦所有的內容都寫入了body,就必須關閉body。在那之后,任何東西都不能寫入body public void close()//向文檔添加用戶定義的標頭 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是一個包含用戶定位的頁面文本和圖形內容的對象。它知道如何應用正確的字體編碼。

在PDF中當涉及到布局問題時(不再是自動地添加文本、圖片等等,對元素在頁面上的位置有一定的要求),有時我們希望將一些圖像或者文本放置在某頁的指定位置,為實現該功能,我們將使用PdfContentByte類。

PdfContent對象可以通過在使用Writer對象中使用getDirectContent()方法來得到該對象

//向頁面添加圖像。圖像必須有絕對定位。 public void addImage(final Image image)public void saveState() public void restoreState()//設置圖形狀態 public void setGState(final PdfGState gstate)//創建一個新模板,它只不過是一個表單XObject。這個模板可以包含在這個PdfContentByte或其他模板中。 //只有當文檔關閉,模板才寫入輸出。允許在第一頁顯示僅在最后一頁定義的文本 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

實現表單XObject
創建一個新模板,它只不過是一個表單XObject。這個模板可以包含在這個PdfContentByte或其他模板中。只有當文檔關閉,允許在第一頁顯示僅在最后一頁定義的文本時,模板才寫入輸出。

PdfPage

PdfPage是PDF page對象。
Page對象是一個字典,它的鍵描述了包含文本、圖形和圖像的單個頁面。Page對象是Pages樹的一個葉節點。該節點在“便攜式文檔格式參考手冊1.3版”6.4節中描述(73-81頁)

PdfName

PdfName是一個可以在pdf文件中用作名稱的對象

一個名字,就像一個字符串,是一個字符序列。它必須以斜杠開頭,后面跟一個32到136的ASCII字符序列(%,(,),[,],<,>,{,},/和#除外)。除了0x00之外的任何字符都可以通過將其前面帶有#的兩個字符的十六進制代碼包含在名稱中。名稱的最大字符數為127。該節點在’Portable Document Format Reference Manual version 1.7’章節3.2.4 (page 56-58)中有描述。

PdfObject

PdfObject是所有PDF對象的抽象超類。
PDF支持七種基本類型的對象:布爾值、數字、字符串、名稱、數組、字典和流。此外,PDF還提供了一個空對象。對象可以被標記,以便它們可以被其他對象引用。所有這些基本的PDF對象都在“便攜式文檔格式參考手冊1.3版”第4章(37-54頁)中進行了描述。

Rectangle

矩形是幾何圖形的表示法。矩形使用setBorderWidth(float)和setBorder(int)來支持固定寬度的邊框。它們還支持使用setBorderWidthLeft(float)或setBorderColorLeft(BaseColor)等方法在每邊改變寬度/顏色的邊框。

//顯示矩形邊框的一邊 可用于PdfPCell public static final int TOP = 1 //設置左邊框的寬度 public void setBorderWidthLeft(final float borderWidthLeft)//設置矩形的背景顏色 public void setBackgroundColor(final BaseColor backgroundColor)public Rectangle rotate() //設置矩形的旋轉。有效值為0、90、180和270。 public void setRotation(final int rotation)//左下角的x坐標 public float getLeft()public void setLeft(final float llx)//啟用/禁用指定邊的邊框。邊界被指定為常量LEFT, RIGHT, TOP, BOTTOM的整數位組合 可用于PdfPCell public void setBorder(final int border) // 設置矩形的背景顏色 可用于PdfPCell sn.setBackgroundColor(BaseColor.YELLOW)

BaseColor

BaseColor 構造方法

public BaseColor(final int red, final int green, final int blue) public BaseColor(final float red, final float green, final float blue) //alpha是指的透明度,這個詞還出現在元件的色彩效果里,以及代碼屬性中。 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 WHITE

GrayColor

public static final GrayColor GRAYBLACK = new GrayColor(0f)public static final GrayColor GRAYWHITE = new GrayColor(1f)

FontFactory

如果使用True Type字體,可以先將不同ttf和ttc文件的路徑聲明到這個靜態類,然后使用一個靜態getfont方法在代碼中創建字體,而不必將路徑作為參數輸入。

add:
TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字體文件格式,隨著windows的流行,已經變成最常用的一種字體文件表示方式。
"系統盤\WINDOWS\Fonts”
字庫

public static Font getFont(final String fontname, final String encoding, final boolean embedded, final float size, final int style, final BaseColor color) public static Font getFont(final String fontname, final String encoding, final boolean embedded) //在一個目錄中注冊所有字體 public static int registerDirectory(final String dir)public static Set<String> getRegisteredFonts()

BaseFont

支持的幾種字體類型的基類

Font

包含字體的所有規格:fontfamily, size, style和color。

Font 構造方法

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 構造方法

public static Image getInstance(final String filename)public static Image getInstance(final URL url) public Image(final URL url) //復制建構函數 protected Image(final Image image)public static Image getInstance(final PdfTemplate template)

Image 常用方法

//將圖像按矩形的尺寸縮放 public void scaleAbsolute(final Rectangle rectangle)// 設置圖像的絕對位置 public void setAbsolutePosition(final float absoluteX, final float absoluteY)//縮放圖像,使其適合特定的寬度和高度 public void scaleToFit(final float fitWidth, final float fitHeight)// 獲取圖像的縮放寬度 這是考慮到旋轉的圖像的縮放寬度。 public float getScaledWidth()public float getScaledHeight()

PdfGState

圖形狀態字典

//設置當前描邊alpha常數,指定透明成像模型中用于非描邊操作的常數形狀或常數不透明度值。 public void setFillOpacity(float ca)

ColumnText

以列形式格式化文本。文本由一系列行在左右兩側綁定。這使得柱可以有任何形狀,而不僅僅是矩形。
可以設置幾個參數,如第一段行縮進和段落之間的額外空格。

對go方法的調用將返回以下情況之一:列結束或文本結束。
如果列結束,可以用setColumns方法加載一個新的列定義,并且可以再次調用go方法。
如果文本結束,更多的文本可以加載與addText和方法go可以被再次調用。唯一的限制是每次必須加載一個或多個完整的段落。
支持完全的雙向重排序。如果運行方向為pdfrwriter。RUN_DIRECTION_RTL水平對齊和邊距的含義被鏡像。

ColumnText 構造方法

//canvas 文本將被寫入的地方。可以是模板 public ColumnText(final PdfContentByte canvas)

ColumnText 常用方法

// 將行輸出到文檔中。它等同于go(false)。 public int go() //設置列的邊界。每個列的邊界由一個float[]描述,其線點為[x1,y1,x2,y2,…]。數組必須至少有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)//將短語添加到當前文本數組。如果addElement()之前被調用,則不會有任何效果。 public void addText(final Phrase phrase)// 添加一個元素。支持的元素是段落,列表,PdfPTable和圖像。 //也接受一個Chunk和一個短語,它們被放置在一個新的段落中。 //它刪除所有使用addText()放置的文本。 public void addElement(Element element)

Element 接口

文本元素的接口。

// 段落對齊的可能值。這指定文本對齊到左縮進,額外的空白應該放在右邊 public static final int ALIGN_LEFT = 0//垂直對齊的可能值 public static final int ALIGN_TOP = 4;

Chunk

這是可以添加到文檔中的最小文本重要部分。
大多數元素可以分成一個或多個Chunks。chunk是一個具有特定字體的字符串。所有其他的布局參數都應該在添加文本塊的對象中定義

Chunk 構造方法

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) //構造一個包含圖像的塊 //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 常用方法

//設置一個水平線,它可以是下劃線或刪除線。實際上,這條線可以在任何垂直的地 // 方,并且始終具有Chunk寬度。多次調用此方法將產生多行。 public Chunk setUnderline(final float thickness, final float yPosition)

Phrase

短語是一系列的Chunk
一個短語有一個主字體,但是短語中的一些塊可以有一個不同于主字體的字體。一個短語中的所有塊都有相同的引導

// 向這個短語添加一個字符串 public boolean add(final String s)

Paragraph

public void setIndentationLeft(float indentation)

PdfPTable

這個表可以放在絕對位置,也可以作為 Table 類添加到文檔中

PdfPTableEvent可以與表關聯,在表被渲染時進行自定義繪制。

PdfPTable 構造方法

// 用numColumns列構造一個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) ) // 設置表格在頁面中所占的寬度百分比 public void setWidthPercentage(final float widthPercentage) //設置表的全寬度 public void setTotalWidth(final float totalWidth) 從絕對列寬度設置表的全寬度 public void setTotalWidth(final float columnWidth[])//設置組成標題的頂部行數。這個標題只有當表被添加到Document并且表跨越頁面時才有意義 public void setHeaderRows(int headerRows)//設置要用于頁腳的行數。從標題行中減去頁腳行數。 public void setFooterRows(int footerRows)//跳過第一個標題的打印。當連續打印屬于同一打印表方面的表時使用。 public void setSkipFirstHeader(final boolean skipFirstHeader)public void setSkipLastFooter(final boolean skipLastFooter)//設置表的相對寬度 public void setWidths(final int relativeWidths[])//設置此表前的間距 public void setSpacingBefore(final float spacing) //獲取默認的PdfPCell,該PdfPCell將用作除addCell(PdfPCell)外的所有addCell方法的引用。 public PdfPCell getDefaultCell()

PdfPCell

PdfPTable中的單元格。

PdfPCell 構造方法

// 使用短語構造PdfPCell。默認 padding 為2 public PdfPCell(Phrase phrase)//用圖像構造一個PdfPCell。對于0.5的邊框寬度,默認padding為0.25。 //fit True,以使圖像適合單元格 public PdfPCell(Image image, boolean fit) //The default padding is 0. public PdfPCell(Image image)//構造一個PdfPCell的深層副本。 public PdfPCell(PdfPCell cell)//用PdfPtable構造一個PdfPCell。這個構造函數允許嵌套表。默認填充為0。 public PdfPCell(PdfPTable table)// 應用于單元格的樣式(可以使用getDefaultCell()) public PdfPCell(PdfPTable table, PdfPCell style)

PdfPCell 常用方法

// 屬性rowspan的Setter public void setRowspan(int rowspan)//設置表的全寬度 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)//設置單元格的水平對齊方式。它可以是Element.ALIGN_CENTER為例。 public void setHorizontalAlignment(int horizontalAlignment)public int getVerticalAlignment()

List

List包含多個 ListItem

List 構造方法

//在生成pdf文檔時,縮進是很重要的,它指示列表符號的縮進。這對于html文檔并不重要 public List(final boolean numbered, final float symbolIndent)// 創建一個列表 public List(final boolean numbered, final boolean lettered, final float symbolIndent)

List 常用方法

PdfReader

讀取PDF文檔

PdfReader 構造方法

//讀取和解析PDF文檔。 public PdfReader(final String filename)

總結

以上是生活随笔為你收集整理的iText 5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。