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));
}
}
㈡ python核心編程(第二版)PDF和Python基礎教程(第二版)PDF
相關鏈接:網頁鏈接點擊進入然後下載即可。
Python介紹:
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體,源代碼和解釋器CPython遵循GPL(GNUGeneral Public License)協議。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
Python基本演算法:
Python的設計目標之一是讓代碼具備高度的可閱讀性。它設計時盡量使用其它語言經常使用的標點符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和意外。
㈢ C#中pdf如何添加頁眉或頁腳
以WPS 2019版本為例:
關於pdf如何添加頁眉或頁腳,我們推薦您可考慮使用WPS2019來完成,操作步驟如下:
1、打開「PDF文檔」;
2、點擊「插入-頁碼」/「插入-頁眉頁腳」(提示該功能需開通WPS會員使用);
3、可根據需求設置頁面或頁眉頁腳的參數來進行插入。
㈣ java 如何給pdf文件加水印
Java生成PDF 加密 水印
1、iText簡介
iText是一個開放源碼的Java類庫,可以用來方便地生成PDF文件。大家通過訪問http://sourceforge.net/project/showfiles.php?group_id=15255&release_id=167948
下載最新版本的類庫,下載完成之後會得到一個.jar包,把這個包加入JDK的classpath即可使用。
如果生成的PDF文件中需要出現中文、日文、韓文字元,則還需要通過訪問http://itext.sourceforge.net/downloads/iTextAsian.jar
下載iTextAsian.jar包。
關於iText類庫的使用,http://www.lowagie.com/iText/tutorial/index.html
有比較詳細的教程。該教程從入門開始,比較系統地介紹了在PDF文件中放入文字、圖片、表格等的方法和技巧。
讀完這片教程,大致就可以做一些從簡單到復雜的PDF文件了。不過,試圖通過教程解決在生成PDF文件過程中遇到的所有困難無疑是一種奢望。所以,閱讀iText的api文檔顯得非常重要。讀者在下載類庫的同時,也可以下載類庫的文檔。
註:如果以上兩個下載鏈接無法下載而且通過網路也找不到這個jar包的同志可以留下郵箱地址,我會在兩個工作日之內發郵件過去。
以下部分我是我調試通過的源代碼,提供大家參考:
import java.awt.*;
import java.io.*;
import com.lowagie.text.*;
import com.lowagie.text.Font;
import
com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.*;
/**
* 最近的項目中使用Itext將txt文件轉換為PDF文件, 並且實現對文件的一些許可權控制。
現實對pdf文件加
*密,添加水印等。
*/
public class PDFConvertBL
{
//
txt原始文件的路徑
private static final String txtFilePath = "d:/11.txt";
// 生成的pdf文件路徑
private static final String pdfFilePath =
"d:/22.pdf";
// 添加水印圖片路徑
// private static final String
imageFilePath = "D:/33.jpg";
// 生成臨時文件前綴
private static final
String prefix = "tempFile";
// 所有者密碼
private static final String
OWNERPASSWORD = "12345678";
/**
* txt文件轉換為pdf文件
*
* @param txtFile
txt文件路徑
* @param pdfFile pdf文件路徑
* @param userPassWord
用戶密碼
* @param waterMarkName 水印內容
* @param permission
操作許可權
*/
public static void generatePDFWithTxt(String txtFile,
String pdfFile, String userPassWord, String
waterMarkName,
int permission)
{
try
{
// 生成臨時文件
File file =
File.createTempFile(prefix, ".pdf");
//
創建pdf文件到臨時文件
if (createPDFFile(txtFile, file))
{
// 增加水印和加密
waterMark(file.getPath(),
pdfFile, userPassWord, OWNERPASSWORD, waterMarkName, permission);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 創建PDF文檔
*
* @param txtFilePath
txt文件路徑(源文件)
* @param pdfFilePath pdf文件路徑(新文件)
*/
private
static boolean createPDFFile(String txtFilePath, File file)
{
// 設置紙張
Rectangle rect = new Rectangle(PageSize.A4);
//
設置頁碼
HeaderFooter footer = new HeaderFooter(new Phrase("頁碼:",
setChineseFont()), true);
footer.setBorder(Rectangle.NO_BORDER);
// step1
Document
doc = new Document(rect, 50, 50, 50, 50);
doc.setFooter(footer);
try
{
FileReader
fileRead = new FileReader(txtFilePath);
BufferedReader read = new
BufferedReader(fileRead);
// 設置pdf文件生成路徑 step2
PdfWriter.getInstance(doc, new FileOutputStream(file));
//
打開pdf文件 step3
doc.open();
// 實例化Paragraph
獲取寫入pdf文件的內容,調用支持中文的方法. step4
while (read.ready())
{
// 添加內容到pdf(這里將會按照txt文件的原始樣式輸出)
doc.add(new Paragraph(read.readLine(), setChineseFont()));
}
// 關閉pdf文件 step5
doc.close();
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
/**
* 在pdf文件中添加水印
*
* @param inputFile
原始文件
* @param outputFile 水印輸出文件
* @param waterMarkName
水印名字
*/
private static void waterMark(String inputFile, String
outputFile, String userPassWord, String ownerPassWord,
String waterMarkName, int permission)
{
try
{
PdfReader reader = new PdfReader(inputFile);
PdfStamper stamper = new PdfStamper(reader, new
FileOutputStream(outputFile));
// 設置密碼
stamper.setEncryption(userPassWord.getBytes(), ownerPassWord.getBytes(),
permission, false);
BaseFont base =
BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
int total = reader.getNumberOfPages() +
1;
// Image image =
Image.getInstance(imageFilePath);
//
image.setAbsolutePosition(200, 400);
PdfContentByte
under;
int j = waterMarkName.length();
char c =
0;
int rise = 0;
for (int i = 1; i < total;
i++)
{
rise = 500;
under =
stamper.getUnderContent(i);
// 添加圖片
//
under.addImage(image);
under.beginText();
under.setColorFill(Color.CYAN);
under.setFontAndSize(base,
30);
// 設置水印文字字體傾斜 開始
if (j >=
15)
{
under.setTextMatrix(200,
120);
for (int k = 0; k < j;
k++)
{
under.setTextRise(rise);
c =
waterMarkName.charAt(k);
under.showText(c +
"");
rise -= 20;
}
}
else
{
under.setTextMatrix(180, 100);
for (int k = 0; k < j; k++)
{
under.setTextRise(rise);
c = waterMarkName.charAt(k);
under.showText(c +
"");
rise -= 18;
}
}
// 字體設置結束
under.endText();
// 畫一個圓
//
under.ellipse(250, 450, 350, 550);
//
under.setLineWidth(1f);
// under.stroke();
}
stamper.close();
}
catch (Exception
e)
{
e.printStackTrace();
}
}
/**
* 設置中文
*
* @return Font
*/
private static Font setChineseFont()
{
BaseFont base =
null;
Font fontChinese = null;
try
{
base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.EMBEDDED);
fontChinese = new Font(base, 12,
Font.NORMAL);
}
catch (DocumentException e)
{
e.printStackTrace();
}
catch (IOException
e)
{
e.printStackTrace();
}
return fontChinese;
}
public static void main(String[] args)
{
generatePDFWithTxt(txtFilePath, pdfFilePath, "123", "水印文字", 16);
}
}
文章參考一些網路博客稍加修改調試,特此申明
http://hi..com/sx_python/item/15081531ad7d1bc21b96965e
㈤ js編輯pdf文件
如何使用js將html轉換為PDF文件utils-htmlToPdf.jsmain.js如果在多個頁面使用,給函數定義一個參數,參數為要導出頁面部分的id。
本文實例講述了JS實現的將html轉為pdf功能。
生成pdf,然後將pdf上傳雲上伺服器。選擇pyppeteer,有如下依據,python官方庫如xhtml2pdf只能處理類似富文本類的靜態頁面,而html需要js渲染,故藉助瀏覽器是一種可行的實現方式,tornado是非同步框架,pyppeteer是非同步庫匹配。
然後選擇「列印」,然後選擇另存為PDF就可以了,如下圖所示:選擇目標另存為PDF,這個是將整個網頁轉換成PDF文件的,有時網頁很長可能會有3頁的PDF。
如何在PDF文件中調用JAVASCRIPT1、大綱視圖打開PPT演示文稿,單擊大綱,在左側幻燈片/大綱」任務窗格的「大綱」選項卡里單擊一下滑鼠,按Ctrl+A組合健全選內容,然後使用Ctrl+C組合鍵或右鍵單擊在快捷菜單中選擇復制命令,然後粘貼到Word里。
2、網頁里的JavaScript做不了這個,就象JavaScript控制不了Flash一樣,兩個東西的運行環境不一樣。
3、將pdf流生成pdf文件,然後在將pdf文件使用PDF.js進行查看。你需要考慮瀏覽器兼容性,低版本瀏覽器可能沒辦法支持。
4、這個方法可以參考文獻http://blog.csdn.net/youthon/article/details/32717471在網頁上你獲取用戶輸入的信息後傳入後台先可以寫成一個txt文件到系統的一個目錄下,然後再讀取這個文件,進行轉換成pdf。一個解決思路。
pdf.js第一頁反轉1、PDF軟體中視圖-反轉視圖,如果這個反轉視圖前面打勾的話,那你取消就能恢復原樣了。
2、如果你所使用的pdf文件,頁碼順序發生了錯誤,那麼就可以先將文件中的頁碼給全部刪除掉,然後再給pdf文件重新添加上頁碼。
3、啟動windows命令行工具(windows下啟動系統搜索功能,輸入cmd回車就出來了)。查看環境變數是否已經自動配置,在命令行工具中輸入node-v,如果出現v10欄位,則說明成功安裝Node.js。
4、純js實現分頁方法一:廢話不多說,直接上代碼了!註:本項目是全程使用js來寫的,前台的數據通過ajax進行獲取,然後再進行拼裝,動態載入到頁面。
5、PDF.js是一個由HTML5建立的PDF閱讀器。依託開源社區驅動和Mozilla實驗室的技術支持。
6、安裝和引入pdf.js包。(這里不再做過多的贅述)渲染pdf,同事添加div,進行用來存儲文字,保證文字可以被選取復制。通過input標簽獲取到數據文件,然後通過getPDF()方法進行渲染。
js修改現有pdf的文字js使用裡面的div功能來修改現有pdf的文字。js是開發中的一種程序設計工具,人們可以使用裡面的div代碼功能來實現對pdf文字的修改。
單擊文字選中文字,點擊滑鼠右鍵—「屬性列表」,打開「屬性」對話框,點擊相應的項即可修改。比如要改變字的大小,點擊「字體大小」項,在:「值」欄里輸入需要的數字(數字越大字體也越大)後再按「Enter」即可。
用極速PDF編輯器打開我們需要修改的PDF文件,選擇工具欄中的【對象工具】,接著在圖片處右擊並選擇【圖像】—【提取到文件】。然後將圖片以【PNG或JPG】格式保存到電腦桌面。
nodejs讀取pdf並翻轉內容保存pdf1、打開word2003,點擊文件,選擇另存為。在另存為界面,選擇格式pdf,點擊保存即可完成。
2、首先需要引入fs模塊,這是nodejs自帶的。
3、感覺就是循環太大,導致內存超過v8內存限制,但是目前對於這種2個表的查詢我沒找到好的方法,只能在程序裡面處理這種大數據的循環,不停的讀寫資料庫。
如何用js生成pdf
1、AngularJS是瀏覽器端運行的,無法完成創建pdf功能。AngularJS通過以下技術來解決靜態網頁技術在構建動態應用上的不足:類庫-類庫是一些函數的集合,它能幫助你寫WEB應用。起主導作用的是你的代碼,由你來決定何時使用類庫。
2、jspdf隱藏某個元素生成pdf在id上切換來解析該項。就是把html內容轉成canvas,然後生成圖片,把圖片添加到jspdf里,保存導出pdf優點:生成的pdf清晰度良好,且支持中文字體。
3、直接用js是實現不了的,可以用js調用列印的功能,然後客戶端安裝了pdf列印(另存pdf).這個由客戶端決定,做網站的人決定不了。
㈥ 如何運用Java組件itext生成pdf
首先從iText的官網下載這個開源的小組件。
iText官方網站
Java版iText組件
Java版工具包
C#版iText組件
C#版工具包
這里筆者使用的是Java版itext-5.2.1。
將itext-5.2.1.zip壓縮包解壓縮後得到7個文件:itextpdf-5.2.1.jar(核心組件)、itextpdf-5.2.1-javadoc.jar(API文檔)、itextpdf-5.2.1-sources.jar(源代碼)、itext-xtra-5.2.1.jar、itext-xtra-5.2.1-javadoc.jar、itext-xtra-5.2.1-sources.jar
使用5步即可生成一個簡單的PDF文檔。
復制代碼
1 // 1.創建 Document 對象
2 Document _document = new Document();
3 // 2.創建書寫器,通過書寫器將文檔寫入磁碟
4 PdfWriter _pdfWriter = PdfWriter.getInstance(_document, new FileOutputStream("生成文件的路徑"));
5 // 3.打開文檔
6 _document.open();
7 // 4.向文檔中添加內容
8 _document.add(new Paragraph("Hi"));
9 // 5.關閉文檔
10 _document.close();
復制代碼
OK,搞定,不出問題的話就會在你指定的路徑中生成一個PDF文檔,內容是純文本的「Hi」。
可是這樣並不能完全滿足我們的需求,因為通常我們要生成的PDF文件不一定是純文本格式的,比如我現在要實現列印銷售單的功能,那麼最起碼需要繪製表格才行,怎麼辦呢?且跟筆者繼續向下研究。
在iText中,有專門的表格類,即PdfPTable類。筆者做了一個簡單的表格示例,請先看代碼:
復制代碼
1 OutTradeList _otl = this.getOtlBiz().findOutTradeListById(this.getOtlid());
2 String _fileName = _otl.getOtlId() + ".pdf";
3
4 // iText 處理中文
5 BaseFont _baseFont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", true);
6 // 1.創建 Document 對象
7 Document _document = new Document(PageSize.A4);
8
9 HttpServletResponse response = ServletActionContext.getResponse();
10 response.setContentType("application/pdf; charset=ISO-8859-1");
11 response.setHeader("Content-Disposition", "inline; filename=" + new String(_fileName.getBytes(), "iso8859-1"));
12
13 // 2.創建書寫器,通過書寫器將文檔寫入磁碟
14 PdfWriter _pdfWriter = null;
15 try {
16 _pdfWriter = PdfWriter.getInstance(_document, response.getOutputStream());
17 } catch (Exception e) {
18 this.setMessage("單據生成失敗,請檢查伺服器目錄許可權配置是否正確");
19 e.printStackTrace();
20 System.out.println("2.掛了");
21 // return INPUT;
22 return null;
23 }
24 if(_pdfWriter == null) {
25 this.setMessage("單據生成失敗,請檢查伺服器目錄許可權配置是否正確");
26 System.out.println("3.掛了");
27 // return INPUT;
28 return null;
29 }
30
31 // 3.打開文檔
32 _document.open();
33
34 // 4.創建需要填入文檔的元素
35 PdfPTable _table = new PdfPTable(4);
36 PdfPCell _cell = null;
37
38 _table.addCell(new Paragraph("單據號", new Font(_baseFont)));
39 _cell = new PdfPCell(new Paragraph(_otl.getOtlId()));
40 _cell.setColspan(3);
41 _table.addCell(_cell);
42
43 _table.addCell(new Paragraph("客戶名稱", new Font(_baseFont)));
44 _cell = new PdfPCell(new Paragraph(_otl.getClients().getName(), new Font(_baseFont)));
45 _cell.setColspan(3);
46 _table.addCell(_cell);
47
48 _table.addCell(new Paragraph("銷售日期", new Font(_baseFont)));
49 _cell = new PdfPCell(new Paragraph(_otl.getOutDate().toString()));
50 _cell.setColspan(3);
51 _table.addCell(_cell);
52
53 _cell = new PdfPCell();
54 _cell.setColspan(4);
55 PdfPTable _tabGoods = new PdfPTable(7);
56 // 添加標題行
57 _tabGoods.setHeaderRows(1);
58 _tabGoods.addCell(new Paragraph("序號", new Font(_baseFont)));
59 _tabGoods.addCell(new Paragraph("商品名稱", new Font(_baseFont)));
60 _tabGoods.addCell(new Paragraph("自定義碼", new Font(_baseFont)));
61 _tabGoods.addCell(new Paragraph("規格", new Font(_baseFont)));
62 _tabGoods.addCell(new Paragraph("數量", new Font(_baseFont)));
63 _tabGoods.addCell(new Paragraph("單價", new Font(_baseFont)));
64 _tabGoods.addCell(new Paragraph("小計", new Font(_baseFont)));
65 Object[] _outTrades = _otl.getOutTrades().toArray();
66 // 將商品銷售詳細信息加入表格
67 for(int i = 0; i < _outTrades.length;) {
68 if((_outTrades[i] != null) && (_outTrades[i] instanceof OutTrade)) {
69 OutTrade _ot = (OutTrade) _outTrades[i];
70 Goods _goods = _ot.getGoods();
71 _tabGoods.addCell(String.valueOf((++i)));
72 _tabGoods.addCell(new Paragraph(_goods.getName(), new Font(_baseFont)));
73 _tabGoods.addCell(_goods.getUserCode());
74 _tabGoods.addCell(_goods.getEtalon());
75 _tabGoods.addCell(String.valueOf(_ot.getNum()));
76 _tabGoods.addCell(String.valueOf(_ot.getPrice()));
77 _tabGoods.addCell(String.valueOf((_ot.getNum() * _ot.getPrice())));
78 }
79 }
80 _cell.addElement(_tabGoods);
81 _table.addCell(_cell);
82
83 _table.addCell(new Paragraph("總計", new Font(_baseFont)));
84 _cell = new PdfPCell(new Paragraph(_otl.getAllPrice().toString()));
85 _cell.setColspan(3);
86 _table.addCell(_cell);
87
88 _table.addCell(new Paragraph("操作員", new Font(_baseFont)));
89 _cell = new PdfPCell(new Paragraph(_otl.getProcure()));
90 _cell.setColspan(3);
91 _table.addCell(_cell);
92
93 // 5.向文檔中添加內容,將表格加入文檔中
94 _document.add(_table);
95
96 // 6.關閉文檔
97 _document.close();
98 System.out.println(_fileName);
99 this.setPdfFilePath(_fileName);
100 System.out.println("3.搞定");
101 // return SUCCESS;
102 return null;
復制代碼
以上代碼是寫在 Struts2 的 Action 中的,當用戶發送了請求之後直接將生成的PDF文件用輸出流寫入到客戶端,瀏覽器收到伺服器的響應之後就會詢問用戶打開方式。
當然,我們也可以將文件寫入磁碟等等。