導航:首頁 > 文件類型 > javaitext生成pdf文件

javaitext生成pdf文件

發布時間:2024-01-31 20:14:21

『壹』 itext 生成 PDF(一)

itext 生成 PDF(二)

官網: http://itextsupport.com/apidocs/itext5/latest/

博文: https://blog.csdn.net/u010154380/article/details/78087663

博文: https://blog.csdn.net/u013129932/article/details/43889705

iText是著名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。

項目要使用iText,必須引入jar包。才能使用,maven依賴如下:

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency>

輸出中文,還要引入下面itext-asian.jar包:

<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

設置pdf文件密碼,還要引入下面bcprov-jdk15on.jar包:

<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.54</version></dependency>

iText常用類

com.itextpdf.text.Document:這是iText庫中最常用的類,它代表了一個pdf實例。如果你需要從零開始生成一個PDF文件,你需要使用這個Document類。首先創建(new)該實例,然後打開(open)它,並添加(add)內容,最後關閉(close)該實例,即可生成一個pdf文件。

com.itextpdf.text.Paragraph:表示一個縮進的文本段落,在段落中,你可以設置對齊方式,縮進,段落前後間隔等

com.itextpdf.text.Chapter:表示PDF的一個章節,他通過一個Paragraph類型的標題和整形章數創建

com.itextpdf.text.Font:這個類包含了所有規范好的字體,包括family of font,大小,樣式和顏色,所有這些字體都被聲明為靜態常量

com.itextpdf.text.List:表示一個列表;

com.itextpdf.text.Anchor:表示一亂返磨個錨,類似於HTML頁面的鏈接。

com.itextpdf.text.pdf.PdfWriter:當這個PdfWriter被添加到PdfDocument後,所有添嘩斗加世鉛到Document的內容將會寫入到與文件或網路關聯的輸出流中。

com.itextpdf.text.pdf.PdfReader:用於讀取PDF文件;

iText使用

創建一個簡單的pdf文件,如下:

packagecom.hd.pdf;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importcom.itextpdf.text.Document;importcom.itextpdf.text.DocumentException;importcom.itextpdf.text.Paragraph;importcom.itextpdf.text.pdf.PdfWriter;publicclassTestPDFDemo1{publicstaticvoidmain(String[]args)throws FileNotFoundException,DocumentException{// 1.新建document對象Document document=newDocument();// 2.建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入到磁碟中。// 創建 PdfWriter 對象 第一個參數是對文檔對象的引用,第二個參數是文件的實際名稱,在該名稱中還會給出其輸出路徑。PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test.pdf"));// 3.打開文檔document.open();// 4.添加一個內容段落document.add(newParagraph("Hello World!"));// 5.關閉文檔document.close();}}

打開文件

851491-20161209165247147-746087588.png

PDF中創建表格

publicstaticvoidmain(String[]args)throws DocumentException,FileNotFoundException{//創建文件Document document=newDocument();//建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test4.pdf"));//打開文件document.open();//添加內容document.add(newParagraph("HD content here"));// 3列的表.PdfPTable table=newPdfPTable(3);table.setWidthPercentage(100);// 寬度100%填充table.setSpacingBefore(10f);// 前間距table.setSpacingAfter(10f);// 後間距List<PdfPRow>listRow=table.getRows();//設置列寬float[]columnWidths={1f,2f,3f};table.setWidths(columnWidths);//行1PdfPCell cells1[]=newPdfPCell[3];PdfPRow row1=newPdfPRow(cells1);//單元格cells1[0]=newPdfPCell(newParagraph("111"));//單元格內容cells1[0].setBorderColor(BaseColor.BLUE);//邊框驗證cells1[0].setPaddingLeft(20);//左填充20cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中cells1[1]=newPdfPCell(newParagraph("222"));cells1[2]=newPdfPCell(newParagraph("333"));//行2PdfPCell cells2[]=newPdfPCell[3];PdfPRow row2=newPdfPRow(cells2);cells2[0]=newPdfPCell(newParagraph("444"));//把第一行添加到集合listRow.add(row1);listRow.add(row2);//把表格添加到文件中document.add(table);//關閉文檔document.close();//關閉書寫器writer.close();}

打開圖片

851491-20161209165247147-746087588.png

給PDF文件設置文件屬性,例如:

publicstaticvoidmain(String[]args)throws FileNotFoundException,DocumentException{//創建文件Document document=newDocument();//建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test2.pdf"));//打開文件document.open();//添加內容document.add(newParagraph("Some content here"));//設置屬性//標題document.addTitle("this is a title");//作者document.addAuthor("H__D");//主題document.addSubject("this is subject");//關鍵字document.addKeywords("Keywords");//創建時間document.addCreationDate();//應用程序document.addCreator("hd.com");//關閉文檔document.close();//關閉書寫器writer.close();}

打開文件

851491-20161209165247147-746087588.png

PDF中添加圖片

publicstaticvoidmain(String[]args)throws DocumentException,IOException{//創建文件Document document=newDocument();//建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test3.pdf"));//打開文件document.open();//添加內容document.add(newParagraph("HD content here"));//圖片1Image image1=Image.getInstance("C:/Users/H__D/Desktop/IMG_0109.JPG");//設置圖片位置的x軸和y周image1.setAbsolutePosition(100f,550f);//設置圖片的寬度和高度image1.scaleAbsolute(200,200);//將圖片1添加到pdf文件中document.add(image1);//圖片2Image image2=Image.getInstance(newURL("http://static.cnblogs.com/images/adminlogo.gif"));//將圖片2添加到pdf文件中document.add(image2);//關閉文檔document.close();//關閉書寫器writer.close();}

打開圖片

851491-20161209165247147-746087588.png

PDF中創建列表

publicstaticvoidmain(String[]args)throws DocumentException,FileNotFoundException{//創建文件Document document=newDocument();//建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test5.pdf"));//打開文件document.open();//添加內容document.add(newParagraph("HD content here"));//添加有序列表List orderedList=newList(List.ORDERED);orderedList.add(newListItem("Item one"));orderedList.add(newListItem("Item two"));orderedList.add(newListItem("Item three"));document.add(orderedList);//關閉文檔document.close();//關閉書寫器writer.close();}

打開文件

851491-20161209180029726-1168732515.png

PDF中設置樣式/格式化輸出,輸出中文內容,必須引入itext-asian.jar

publicstaticvoidmain(String[]args)throws DocumentException,IOException{//創建文件Document document=newDocument();//建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test6.pdf"));//打開文件document.open();//中文字體,解決中文不能顯示問題BaseFont bfChinese=BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//藍色字體Font blueFont=newFont(bfChinese);blueFont.setColor(BaseColor.BLUE);//段落文本Paragraph paragraphBlue=newParagraph("paragraphOne blue front",blueFont);document.add(paragraphBlue);//綠色字體Font greenFont=newFont(bfChinese);greenFont.setColor(BaseColor.GREEN);//創建章節Paragraph chapterTitle=newParagraph("段落標題xxxx",greenFont);Chapter chapter1=newChapter(chapterTitle,1);chapter1.setNumberDepth(0);Paragraph sectionTitle=newParagraph("部分標題",greenFont);Section section1=chapter1.addSection(sectionTitle);Paragraph sectionContent=newParagraph("部分內容",blueFont);section1.add(sectionContent);//將章節添加到文章中document.add(chapter1);//關閉文檔document.close();//關閉書寫器writer.close();}

打開圖片

![

851491-20161209180029726-1168732515.png

]

851491-20161209165247147-746087588.png

給PDF文件設置密碼,需要引入bcprov-jdk15on.jar包:

publicstaticvoidmain(String[]args)throws DocumentException,IOException{// 創建文件Document document=newDocument();// 建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test8.pdf"));//用戶密碼String userPassword="123456";//擁有者密碼String ownerPassword="hd";writer.setEncryption(userPassword.getBytes(),ownerPassword.getBytes(),PdfWriter.ALLOW_PRINTING,PdfWriter.ENCRYPTION_AES_128);// 打開文件document.open();//添加內容document.add(newParagraph("password !!!!"));// 關閉文檔document.close();// 關閉書寫器writer.close();}

打開圖片

851491-20161209165247147-746087588.png

給PDF文件設置許可權

publicstaticvoidmain(String[]args)throws DocumentException,IOException{// 創建文件Document document=newDocument();// 建立一個書寫器PdfWriter writer=PdfWriter.getInstance(document,newFileOutputStream("C:/Users/H__D/Desktop/test9.pdf"));// 只讀許可權writer.setEncryption("".getBytes(),"".getBytes(),PdfWriter.ALLOW_PRINTING,PdfWriter.ENCRYPTION_AES_128);// 打開文件document.open();// 添加內容document.add(newParagraph("password !!!!"));// 關閉文檔document.close();// 關閉書寫器writer.close();}

讀取/修改已有的PDF文件

publicstaticvoidmain(String[]args)throwsDocumentException,IOException{//讀取pdf文件PdfReaderpdfReader=newPdfReader("C:/Users/H__D/Desktop/test1.pdf");//修改器PdfStamperpdfStamper=newPdfStamper(pdfReader,newFileOutputStream("C:/Users/H__D/Desktop/test10.pdf"));Imageimage=Image.getInstance("C:/Users/H__D/Desktop/IMG_0109.JPG");image.scaleAbsolute(50,50);image.setAbsolutePosition(0,700);for(inti=1;i<=pdfReader.getNumberOfPages();i++){PdfContentBytecontent=pdfStamper.getUnderContent(i);content.addImage(image);}pdfStamper.close();}

itext  生成 PDF(二)

鏈接:https://www.jianshu.com/p/20d4905383b4

『貳』 java相關,關於使用itext導出pdf後,中文字體設置的問題。

可以直接調用字體 寫一個
BaseFont bf=BaseFont.createFont("字體",BaseFont.CP1250, BaseFont.EMBEDDED);
字體就設置,你的那個字體路徑

『叄』 如何運用Java組件itext生成pdf

iText是著名開放源碼的站點一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。

使用如下:

1、首先下載 JAR 包 : itext-2.0.8.jar core-render.jar

2、創建一個html頁面

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>pdf</title>
</head>

<body>
這是html內容

</body>
</html>

3、編寫java代碼

publicclassPDFUtil{
publicvoidcreatePdf()throwsException{

StringinputFile="index.html";
Stringurl=newFile(inputFile).toURI().toURL().toString();
StringoutputFile="index.pdf";
System.out.println(url);


OutputStreamos=newFileOutputStream(outputFile);
org.xhtmlrenderer.pdf.ITextRendererrenderer=newITextRenderer();
renderer.setDocument(url);

//step3解決中文支持
org.xhtmlrenderer.pdf.ITextFontResolverfontResolver=renderer.getFontResolver();
fontResolver.addFont("c:/Windows/Fonts/simsun.ttc",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

renderer.layout();
renderer.createPDF(os);
os.close();

System.out.println("createpdfdone!!");
}


publicstaticvoidmain(String[]args)throwsException{
Appapp=newApp();
app.createPdf();
}
}

這樣就可以完成一個簡單PDF生成功能了。

『肆』 如何運用Java組件itext生成pdf

itext是生成pdf的一個開源組件,首先去官網下載itext相關的jar包,然後內運用相關api即可快速生成一容個pdf文檔,好像還有一個組件叫Flying Saucer(飛碟)也是基於itext的pdf生成組件
具體參考資料:
http://news.newhua.com/news/2011/0111/113128.shtml

『伍』 java itext轉換PDF

public void GenerateAllParts() {
Document document = new Document();

try {
PdfWriter.getInstance(document, new FileOutputStream("d:\\all.pdf"));

// 生成字體
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
// 標題字體
Font f30 = new Font(bfChinese, 30, Font.NORMAL, Color.BLACK);
// 正文字體
Font f12 = new Font(bfChinese, 12, Font.NORMAL, Color.BLACK);
Font f6 = new Font(bfChinese, 6, Font.NORMAL, Color.BLACK);
Font f8 = new Font(bfChinese, 8, Font.NORMAL, Color.BLACK);

document.open();

// 標題
document.add(new Paragraph("報表實例", f30));
// 換行
document.add(new Chunk("\n\n"));
//
document.add(
new Paragraph(
new Chunk(".......................點擊查看報表", f12)
.setLocalGoto("table")));
// 換行
document.add(new Chunk("\n\n"));
document.add(
new Paragraph(
new Chunk(".......................點擊查看圖片", f12)
.setLocalGoto("image")));
document.add(new Chunk("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"));

///////////////////////////////////////////////////
// 報表位置
document.add(new Chunk("報表實例", f12).setLocalDestination("table"));
// 添加table實例
PdfPTable table = new PdfPTable(5);
table.setWidthPercentage(100);
table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(new Color(213, 141, 69));
cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);

// 表格標題
cell.setPhrase(new Paragraph("標題一", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題二", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題三", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題四", f8));
table.addCell(cell);
cell.setPhrase(new Paragraph("標題五", f8));
table.addCell(cell);

// 表格數據
PdfPCell newcell = new PdfPCell();
newcell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
newcell.setPhrase(new Paragraph("數據一", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據二", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據三", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據四", f8));
table.addCell(newcell);
newcell.setPhrase(new Paragraph("數據五", f8));
table.addCell(newcell);

document.add(table);
////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////
// 添加連接
document.add(new Chunk("圖片實例", f12).setLocalDestination("image"));
Image jpg = Image.getInstance("d:\\3.jpg");
document.add(jpg);
//////////////////////////////////////////////////////////

document.close();
} catch (Exception e) {
// TODO: handle exception
}
}

『陸』 java導出PDF文檔

java導出pdf需要用到iText庫,iText是著名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf
的文檔,而且可以將XML、Html文件轉化為PDF文件。
iText的安裝非常方便,下載iText.jar文件後,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用
iText類庫了。
代碼如下:

public class createPdf {
//自己做的一個簡單例子,中間有圖片之類的
//先建立Document對象:相對應的 這個版本的jar引入的是com.lowagie.text.Document
Document document = new Document(PageSize.A4, 36.0F, 36.0F, 36.0F, 36.0F);
public void getPDFdemo() throws DocumentException, IOException{
//這個導出用的是 iTextAsian.jar 和iText-2.1.3.jar 屬於比較老的方法。 具體下在地址見:
//首先
//字體的定義:這里用的是自帶的jar裡面的字體
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
// 當然你也可以用你電腦裡面帶的字體庫
//BaseFont bfChinese = BaseFont.createFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
//定義字體 注意在最新的包裡面 顏色是封裝的
Font fontChinese8 = new Font(bfChinese, 10.0F, 0, new Color(59, 54, 54));
//生成pdf的第一個步驟:
//保存本地指定路徑
saveLocal();
document.open();
ByteArrayOutputStream ba = new ByteArrayOutputStream();
// PdfWriter writer = PdfWriter.getInstance(document, ba);
document.open();
//獲取此編譯的文件路徑
String path = this.getClass().getClassLoader().getResource("").getPath();
//獲取根路徑
String filePath = path.substring(1, path.length()-15);
//獲取圖片路徑 找到你需要往pdf上生成的圖片
//這里根據自己的獲取的路徑寫 只要找到圖片位置就可以
String picPath = filePath +"\\WebContent" +"\\images\\";
//往PDF中添加段落
Paragraph pHeader = new Paragraph();
pHeader.add(new Paragraph(" 你要生成文字寫這里", new Font(bfChinese, 8.0F, 1)));
//pHeader.add(new Paragraph("文字", 字體 可以自己寫 也可以用fontChinese8 之前定義好的 );
document.add(pHeader);//在文檔中加入你寫的內容
//獲取圖片
Image img2 = Image.getInstance(picPath +"ccf-stamp-new.png");
//定義圖片在文檔中顯示的絕對位置
img2.scaleAbsolute(137.0F, 140.0F);
img2.setAbsolutePosition(330.0F, 37.0F);
//將圖片添加到文檔中
document.add(img2);
//關閉文檔
document.close();
/*//設置文檔保存的文件名
response.setHeader("Content-
disposition", "attachment;filename=\""+ new String(("CCF會員資格確認
函.pdf").getBytes("GBK"),"ISO-8859-1") + "\"");
//設置類型
response.setContentType("application/pdf");
response.setContentLength(ba.size());
ServletOutputStream out = response.getOutputStream();
ba.writeTo(out);
out.flush();*/
}
public static void main(String[]args) throws DocumentException, IOException{
createPdf pdf= new createPdf();
pdf.getPDFdemo();
}

//指定一個文件進行保存 這里吧文件保存到D盤的text.pdf
public void saveLocal() throws IOException, DocumentException{
//直接生成PDF 制定生成到D盤test.pdf
File file = new File("D:\\text2.pdf");
file.createNewFile();
PdfWriter.getInstance(document, new FileOutputStream(file));

}
}

『柒』 怎麼用java動態生成pdf文檔

Flying-Saucer + iText + Velocity
1. 第一步
將jar包放到你的工程里,需要的jar如下:
bcprov-jdk15-140.jar
core-renderer.jar
iText-2.0.8.jar
iTextAsian.jar
velocity-1.4.jar
Jar包下載地址:http://code.google.com/p/flying-saucer/downloads/list
2. 第二步
設計模版,進行排版調整樣式,css樣式也可以導入@import 等,通過Velocity模版引擎動態替換 頁面內容,以下是模版內容:
<?xml version="1.0" encoding="UTF-8" ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>PDF模版</title>
<style type="text/css">
<!--
body {
font: 100% Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
text-align: center;
color: #000000;
}
.oneColLiqCtrHdr #container {
width: 100%;
margin: 0 auto;
text-align: left;
}
div.header-left {display: none}
div.header-right {display: none}
div.footer-left {display: none}
div.footer-right {display: none}

閱讀全文

與javaitext生成pdf文件相關的資料

熱點內容
python代碼過長換行 瀏覽:697
歐冠直播哪個app畫質最清楚 瀏覽:225
iphone6備份密碼 瀏覽:365
微信打碼賺錢安卓軟體 瀏覽:608
蘋果官換機買什麼版本 瀏覽:979
visio數據模型怎麼用 瀏覽:179
關於駕駛的app 瀏覽:92
多線程編程有什麼特點 瀏覽:453
iso文件系統 瀏覽:116
蘋果932攔截騷擾電話 瀏覽:765
盲盒開箱app有哪些 瀏覽:422
win10激活腳本之家 瀏覽:191
魔鬼作坊工具包 瀏覽:185
ae源文件下載 瀏覽:520
如何將照片內容轉換成pdf文件 瀏覽:137
浙里辦app如何更換手機號碼 瀏覽:244
電子資料文件有哪些 瀏覽:241
猥瑣貓表情教程 瀏覽:599
android音頻文件格式 瀏覽:458
漫畫臉app哪裡可以下載 瀏覽:959

友情鏈接