導航:首頁 > 文檔加密 > javahtml轉化pdf

javahtml轉化pdf

發布時間:2023-02-15 23:45:29

1. java使用什麼工具可以把html頁面轉換成pdf文件,要支持中文的。

用 這個jar 包 iText-5.0.6.jar
.........................................................................................

import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

public class PaperManager {

public static void buildPaper(IDao , OutputStream outputstream,
long paperid) {
Document document = new Document();

try {
PdfWriter.getInstance(document, outputstream);
document.open();
/** 開始添加內容 * */
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font font1 = new Font(bfChinese, 16, Font.BOLD);
Font font2 = new Font(bfChinese, 14, Font.BOLD);
Font font3 = new Font(bfChinese, 12, Font.NORMAL);

Paragraph par = new Paragraph(「fdfd」, font1);
document.add(par);
par = new Paragraph(「中文」, font2);

} catch (Exception e) {
throw new RuntimeException(e);
} finally {
document.close();
}

}

}

2. Spring Boot - 將 html 頁面轉化為 pdf 文件

廢話不多說,先看效果圖。

本示例重要功能點:

技術棧:

進入 http://start.spring.io 創建 Spring Boot 項目,Spring Boot 版本為 2.7.0,選擇如下依賴:

訪問 http://localhost:9090/view 查看 html 頁面效果。訪問 http://localhost:9090/downloadPdf 下載 pdf 文件。



3. 如何將html頁面轉成pdf

1安裝Adobe Acrobat後會默認在IE瀏覽器中添加PDF工具欄。
該工具可以方便的將網頁轉化成PDF文檔,或者添加入已有的PDF文檔,Adobe PDF Explorer工具欄則可以在IE的收藏夾界面內管理window內的HTML文檔與PDF文檔的轉化。


2、安裝單獨的pdf虛擬列印機(pdffactory、ultra pdf等),通過網頁的列印功能轉換。



3使用客戶端軟體HTML2PDF_Pilot。
HTML2PDF_Pilot的截面如上圖,很簡潔。
如果只是要完成最簡單的工作只需如箭頭所示,點擊上方的添加按鈕添加HTML文檔然後點擊轉換,稍等既可以完成一個HTML文檔的轉化工作。
兩種方法的比較
靈活性:
PDF工具欄的方式相比客戶端的方式要靈活許多。
在使用的過程中發現HTML2PDF_Pilot不能通過URL(網址)直接轉化PDF文檔,而工具欄只需在瀏覽的過程隨意使用。
功能:在功能的環節上,客戶端方式的HTML2PDF_Pilot就明顯要比PDF工具欄要強大許多
工具欄只提供了最基本的保存和添加入已有文檔的功能,而HTML2PDF_Pilot則提供了更為豐富的選項。
另外,如果需要批量轉化網頁文件的話,工具欄的方式也無法提供對應的功能。
其實還是有很多可以選擇的方式,比如把網頁轉化為WORD的文件格式然後通過WPS軟體來轉化文檔等,只要能靈活運用,html文件轉PDF是非常簡單的事情。

4. java將html文件轉成pdf

核心代碼如下
package com.hmkcode;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.html2pdf.HtmlConverter;

public class App {
public static final String HTML = "<h1>Hello</h1>"
+ "<p>This was created using iText</p>"
+ "<a href='hmkcode.com'>hmkcode.com</a>";

public static void main( String[] args ) throws FileNotFoundException, IOException
{
HtmlConverter.convertToPdf(HTML, new FileOutputStream("string-to-pdf.pdf"));

System.out.println( "PDF Created!" );
}
}

5. java把html轉成pdf文件

renderer.createPDF( os );捕捉下異常,看是不是跳走廊,在close之前調用os.flush()試試。

String docPath = session.getAttribute("docpath").toString();//獲取文件HTML文件路徑
String inputFile = docPath+"html"; //定義輸入文件全名
String url = new File(inputFile).toURI().toURL().toString();
String outputFile =docPath + "pdf"; //定義輸出文件全名
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer(); 實例化一個ITextRenderer
renderer.setDocument(url);
ITextFontResolver fontResolver = renderer.getFontResolver();
ontResolver.addFont("C:/Windows/fonts/simsun.ttc",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); //設置字體
// 解決圖片的相對路徑問題
renderer.getSharedContext().setBaseURL("file:/" + application.getRealPath("UserFiles/Image") + "/");
renderer.layout();
renderer.createPDF(os);
os.close();

6. 怎樣用Java把html轉為pdf

java中利用第三方jar包iText 5.4.2就可以實現html轉為pdf。

比如有如下index.html文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>HTML to PDF</title>

<link href="style.css" rel="stylesheet" type="text/css" />

</head>

<body>

<h1>HTML to PDF</h1>

<p>

<span class="itext">itext</span> 5.4.2 <span class="description"> converting HTML to PDF</span>

</p>

<table>

<tr>

<th class="label">Title</th>

<td>iText - Java HTML to PDF</td>

</tr>

<tr>

<th>URL</th>

<td>http://hmkcode.com/itext-html-to-pdf-using-java</td>

</tr>

</table>

</body>

</html>

樣式文件:

h1 {

color:#ccc;

}

table tr td{

text-align:center;

border:1px solid gray;

padding:4px;

}

table tr th{

background-color:#84C7FD;

color:#fff;

width:100px;

}

.itext{

color:#84C7FD;

font-weight:bold;

}

.description{

color:gray;

}

後台轉換的介面:

package com.hmkcode;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import com.itextpdf.text.Document;

import com.itextpdf.text.DocumentException;

import com.itextpdf.text.pdf.PdfWriter;

import com.itextpdf.tool.xml.XMLWorkerHelper;

public class App

{

public static void main( String[] args )throws DocumentException, IOException

{

// step 1

Document document =new Document();

// step 2

PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("pdf.pdf"));

// step 3

document.open();

// step 4

XMLWorkerHelper.getInstance().parseXHtml(writer, document,

new FileInputStream("index.html"));

//step 5

document.close();

System.out.println("PDF Created!" );

}

}

轉換結果:

7. java中html怎麼轉換為可編輯pdf文件

Java代碼

//step1
Documentdocument=newDocument();
//step2
PdfWriterwriter=PdfWriter.getInstance(document,newFileOutputStream("pdf.pdf"));
//step3
document.open();
//step4
XMLWorkerHelper.getInstance().parseXHtml(writer,document,
newFileInputStream("index.html"));
//step5
document.close();

System.out.println("PDFCreated!");

Maven構建對應的版本

Xml代碼

<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.4.1</version>
</dependency>

8. java怎麼把HTML界面做成pdf格式列印

public boolean convertHtmlToPdf(String inputFile, String outputFile)
throws Exception {

OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
String url = new File(inputFile).toURI().toURL().toString();

renderer.setDocument(url);

// 解決中文支持問題
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//解決圖片的相對路徑問題
renderer.getSharedContext().setBaseURL("file:/D:/");
renderer.layout();
renderer.createPDF(os);

os.flush();
os.close();
return true;
}

上面這段代碼是這樣的,輸入一個HTML地址URL = inputFile,輸入一個要輸出的地址,就可以在輸出的PDF地址中生成這個PDF。

9. java中html字元串如何完美轉換成pdf文件

1、首先導入itext的jar包,
然後直接上代碼
private static void versionsone(String htmlCode, String pdfPath){
Document document = new Document();
try{
StyleSheet st = new StyleSheet();
st.loadTagStyle("body", "leading", "16,0");
PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
document.open();
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
ArrayList<ArrayList> p = HTMLWorker.parseToList(dome_2(htmlCode), st);
for(int k=0;k<p.size();k++){
for(int m=0;m<p.get(k).size();m++){
Paragraph pCode = new Paragraph(p.get(k).get(m).toString(),FontChinese);
document.add(pCode);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
document.close();
}
}

private static Reader dome_2(String htmlCode){
if(htmlCode != null && !htmlCode.trim().equals("")){
try{
InputStream tInputStringStream = new ByteArrayInputStream(htmlCode.getBytes());
InputStreamReader isr = new InputStreamReader(tInputStringStream,"utf-8");
BufferedReader reader = new BufferedReader(isr);
return reader;
}catch(Exception e){
e.printStackTrace();
}

}
return null;
}
其實此處和別人的最大的不一樣的是,
ArrayList<ArrayList> p = HTMLWorker.parseToList(dome_2(htmlCode), st);

其實剛剛開始我在網上找來的代碼中是這樣寫的「ArrayList p = HTMLWorker.parseToList(dome_2(htmlCode), st);」
但後來我通過debug發現,ArrayList 裡面裝的還是一個集合,然後集合中放得才是真正不含html標簽的字元串。對於普通得文章,一般html標簽一般都是<p></p>
佔大多數。所以我直接用了兩層for循環直接從裡面取得我們想要的字元串。然後直接「Paragraph pCode = new Paragraph(p.get(k).get(m).toString(),FontChinese);」document.add(pCode);這樣就能解決中文問題了

10. 《html轉pdf-----wkhtmltopdf踩坑總結》

最近公司給了個任務,差不多的流程就是接受json數據,然後最後生成圖片。我想的辦法是根據json數據生成html然後轉成pdf。使用的語言是python。然後具體來說使用的工具就是使用python名為pdfkit的庫去調用基於webkit的wkhtmltopdf。

目前來說html轉pdf最主流的程序就是wkhtmltopdf,但是坑還是挺多的而且網上資源不是很豐富,所以寫一篇踩坑總結。

##1. 無法讀取本地文件

顯示在html上好好的本地圖片,到了pdf上就讀取不出來,但是來源於網路(給一個url)的圖片卻能完美讀出來。

後來發現,原來在上一個版本0.12.5是可以讀取的,到了0.12.6不能讀取了是因為其中的一個參數--enable-local-file-access變為了非默認。在python中改這個參數的方法是

然後再在後續調用wkhtmltopdf中載入這個option(我一開始想的是把value改成True,結果一直報錯,吐了)

##2. 無法解析latex格式的公式

在html使用了MathJax提供的js去解析latex格式的數學公式,在html界面可以完美顯示,但是到了pdf中就解析不了,然後我以為是沒有添加'enable-javascript'的問題。結果加上之後還是不行。然後我發現又有一個參數叫做'no-stop-slow-scripts'的參數,可以等到js運行完畢之後再進行pdf的轉化。結果還是不行。

然後我就在想會不會js在運行的時候出了什麼問題,加上了'debug-javascripts'的參數。果然發現在調用MathJax提供的鏈接的時候發現這個鏈接已經過期了(我也不知道為啥過期了在html界面還能完美展示。。。),把js里的鏈接換成了

https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML

完美解決

##3. 部分css失效

css3中的flex全部失效,所以大家得換一下!

當時遇到了一個講的很好的博客,給大家分享一下,然後再放一個官方文檔的鏈接

博客:https://www.jianshu.com/p/4d65857ffe5e

官方文檔:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

閱讀全文

與javahtml轉化pdf相關的資料

熱點內容
任我充app怎麼開發票 瀏覽:330
人工智慧與編程語言 瀏覽:406
linux網路編程伺服器 瀏覽:800
海爾32cw空調壓縮機電容多大 瀏覽:747
分區加密了該怎麼辦 瀏覽:103
索尼延時拍攝app怎麼導入 瀏覽:226
冰箱冷凍壞了壓縮機一直響 瀏覽:807
windows伺服器如何組建raid0 瀏覽:180
橡膠壓縮空氣管 瀏覽:556
如果出現編譯錯誤如何解決 瀏覽:924
程序員飾品 瀏覽:430
什麼叫網站伺服器站點 瀏覽:686
java轉義字元雙引號 瀏覽:779
網上考場的app怎麼看真假 瀏覽:644
四層電梯的plc編程 瀏覽:899
程序員的職場 瀏覽:662
圓形平面怎麼編程 瀏覽:67
python開源代碼下載 瀏覽:661
如何連接區域網寬頻連接伺服器地址 瀏覽:171
華為應用王者榮耀方舟編譯器 瀏覽:935