Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
工作中,我們經常會處理很多種類的文件,相信大多數人處理最多的應該是pdf文件吧?我們經常使用pdf文件的主要原因就是pdf比較便于查看,也易于傳輸,而且它的體積很小,不會特別占用設備的內存。但是pdf文件也有一些缺點,它不支持在線編輯,不能夠仔細查看文件中的圖片,所以我們在工作中有時候需要將pdf轉成html格式的文件。但是我們怎么把pdf轉換成html格式呢?小編今天跟大家分享兩個超級簡單的方法,大家趕快來看一看吧!
怎么把pdf轉換成html格式?
方法一、小圓象PDF轉換器
小圓象PDF轉換器是一款非常專業的PDF轉換軟件,它不僅支持PDF轉Word、Excel、PPT、Html等格式的文件,還有一些PDF小工具,像是PDF加密/解密、PDF合并/拆分、PDF壓縮等,都能幫助學習黨和工作黨更好的處理文件。它對文件的識別也很精確,轉換后文件準確率很高。同時它的安全性也很高,不會泄露用戶任何的隱私。
第一步:進入小圓象PDF轉換器官網(網址:https://www.xiaoyuanxiang.cn/),點擊客戶端下載,軟件安裝完畢后,打開軟件,點擊第一個功能——PDF轉文件。
第二步:在上方各種功能中,選擇——PDF轉Html,隨后將文件添加到虛線框內,等待文件添加完畢,調整輸出目錄,最后點擊右下角——開始轉換,就可以轉換完成了!
方法二、PDF 24 Tools
這款軟件功能非常豐富,一共有24種功能,每種都很實用,頁面很有設計感,除了可以將PDF轉換為其他格式文件以外,還支持PDF轉圖像、從PDF文件中讀取圖像、PDF旋轉、刪除PDF頁面等相關操作。它轉換文件的成功率也比較高,轉換后的文件內容大致是一樣的,比較適合日常使用。不過它也有一個小缺點,那就是它的網頁上會有一些小廣告。
第一步:進入軟件首頁,在眾多功能中找到第一行最后一個功能——PDF轉換器,點擊進入下一頁面。
第二步:選擇第二項——將PDF轉換成…,進入下一步。
第三步:將本地文件上傳成功后,點擊左下角——格式,選擇HTML格式,再點擊右下角——轉換,等待片刻就可以轉換成功。
看完這篇文章,大家知道該怎么把pdf轉換成html格式了吧?就個人而言,小編還是更喜歡小圓象PDF轉化器一些,它的頁面很簡潔,沒有小廣告,而且操作會更簡單些,不知道大家喜歡哪種方法呢?
html 轉 pdf 技術方案調研:從入門到精通的全方位解析
**引言:**
在Web開發中,有時我們需要將HTML內容轉換為PDF格式,以滿足打印、下載或郵件發送的需求。本文將深入調研并解析目前主流的HTML轉PDF技術方案,涵蓋從原生API到第三方庫的多種實現方式,讓您全面了解各種方案的優劣,并通過具體的代碼實例幫助您快速掌握實現技巧。
---
### **一、原生API:打印預覽生成PDF**
**標題:利用瀏覽器內置打印功能**
大多數現代瀏覽器都內置了打印預覽功能,通過調整打印設置,可以選擇“保存為PDF”。雖然這種方式并非直接生成PDF,但對于簡單的HTML內容轉換十分便捷。
```javascript
// 觸發打印對話框
window.print();
// 或者更精細地控制打印內容
const myPrintContent = document.getElementById('printable-section');
myPrintContent.style.display = 'block';
myPrintContent.focus();
myPrintContent.print();
```
然而,這種方法的局限性在于無法自定義PDF的樣式、頁眉頁腳等內容,而且不適用于自動化流程或服務器端生成PDF。
---
### **二、Headless Chrome Puppeteer**
**標題:Headless Chrome Puppeteer的HTML轉PDF解決方案**
Puppeteer是由Google開發的Node庫,它提供了一種可控的方式來通過Chrome Headless運行JavaScript并與頁面交互,包括生成PDF。
```javascript
const puppeteer = require('puppeteer');
async function generatePDF(url, outputPath) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url, {waitUntil: 'networkidle2'});
await page.emulateMediaType('print'); // 模擬打印媒體類型,確保樣式正確
await page.pdf({
path: outputPath,
format: 'A4',
printBackground: true, // 是否包含背景色
margin: {
top: '1cm',
bottom: '1cm',
left: '1cm',
right: '1cm'
}
});
await browser.close();
}
generatePDF('http://example.com', 'output.pdf');
```
Puppeteer的優點是可以精確控制PDF樣式,支持CSS3,且跨平臺兼容性好。但需要注意的是,它需要在服務器端部署Chrome,并占用一定的計算資源。
---
### **三、jsPDF庫**
**標題:小巧輕便的jsPDF庫**
jsPDF是一個純JavaScript編寫的PDF生成庫,主要面向輕量級應用場景,可以將HTML內容轉化為PDF,但對CSS的支持有限。
```javascript
import jsPDF from 'jspdf';
const doc = new jsPDF();
doc.text('Hello World!', 10, 10);
doc.save('a4.pdf');
// 通過html2canvas配合實現HTML轉PDF(較復雜場景)
import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';
async function convertHtmlToPdf(element, filename) {
const canvas = await html2canvas(element);
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF();
pdf.addImage(imgData, 'PNG', 10, 10, 180, 160);
pdf.save(filename);
}
```
jsPDF的優點在于輕量、易于集成,適用于簡單的文字排版和圖表繪制。但因其不直接支持HTML渲染,復雜HTML內容需要借助html2canvas等庫先轉為圖像再插入PDF。
---
### **四、Apache PDFBox**
**標題:Java世界的HTML轉PDF工具——Apache PDFBox**
Apache PDFBox是一個開源的Java庫,可以處理PDF文檔的創建、修改、提取等操作,同時也支持HTML轉PDF,適用于后端Java環境。
```java
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.html2pdf.HtmlConverter;
public void convertHtmlToPdf(String html, String outputFilePath) throws IOException {
HtmlConverter.convertToPdf(new File(html), new File(outputFilePath));
}
```
Apache PDFBox雖不是JavaScript庫,但因其強大的功能和對企業級應用的良好支持,成為了許多Java項目的選擇。
---
**總結:**
選擇何種HTML轉PDF方案取決于具體的應用場景和需求。原生打印API適用于簡單的本地操作,Puppeteer適用于服務端生成高質量PDF,jsPDF適用于輕量級、純JavaScript環境,而Apache PDFBox則在Java環境中表現出眾。理解每個方案的特性和限制,將有助于我們在實際項目中做出合適的選擇。無論哪種方式,HTML轉PDF都是現代Web開發中的一項重要技能,值得深入學習和掌握。
嘍,今天是一篇HTML to PDF速食指南。
Java 轉換 HTML 到PDF有許多類庫,今天我們介紹一下第三方免費的類庫OpenPDF。
OpenPDF是免費的Java類庫 ,遵從LGPL 和 MPL協議,所以基本上能夠可以隨意使用。OpenPDF是基于iTEXT的,目前來說也是維護的比較好的Java操作PDF的開源軟件。
話不多說,且看所需要的依賴,
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-core</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>1.0.6</version>
</dependency>
jsoup可以將html文件轉換成輸入流等,也可以遍歷html的DOM節點,提取元素及樣式等。
本篇示例將以下html文件轉換成pdf
<html>
<head>
<style>
.center_div {
border: 1px solid #404e94;
margin-left: auto;
margin-right: auto;
background-color: #f6d0ed;
text-align: left;
padding: 8px;
}
table {
width: 100%;
border: 1px solid black;
}
th, td {
border: 1px solid black;
}
body,html,input{font-family:"msyh";}
</style>
</head>
<body>
<div class="center_div">
<h1>Hello java North!</h1>
<div>
<p>convert html to pdf.</p>
</div>
<div>
<table>
<thead>
<th>ROLE</th>
<th>NAME</th>
<th>TITLE</th>
</thead>
<tbody>
<tr>
<td>MARKSMAN</td>
<td>ASHE</td>
<td>THE FROST ARCHER</td>
</tr>
<tr>
<td>MAGES</td>
<td>ANNIE</td>
<td>THE DARK CHILD</td>
</tr>
<tr>
<td>射手</td>
<td>凱塔琳</td>
<td>皮城女警</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
以上html用瀏覽器打開如下,亂碼是因為中文字體不識別,下面轉換的時候會加載對應的字體來進行轉換。
使用Java轉換HTML到PDF代碼如下:
public class HtmlToPDFOpenSource {
public static void main(String[] args) throws IOException {
HtmlToPDFOpenSource htmlToPDFOpenSource = new HtmlToPDFOpenSource();
htmlToPDFOpenSource.generatePdfByOpenhtmltopdf();
}
private void generatePdfByOpenhtmltopdf() throws IOException {
File inputHtml = new File("E:\\javaNorth\\java-study-note\\javaOpenSource\\src\\main\\resources\\test.html");
//加載html文件
Document document = Jsoup.parse(inputHtml, "UTF-8");
document.outputSettings().syntax(Document.OutputSettings.Syntax.html);
//引入資源目錄,可以單獨引入css,圖片文件等
String baseUri = FileSystems.getDefault()
.getPath("javaOpenSource\\src\\main\\resources")
.toUri().toString();
try (OutputStream os = new FileOutputStream("javaOpenSource\\src\\main\\resources\\testOpenLeagueoflegends1.pdf")) {
PdfRendererBuilder builder = new PdfRendererBuilder();
builder.withUri("javaOpenSource\\src\\main\\resources\\testOpenLeagueoflegends1.pdf");
builder.toStream(os);
builder.withW3cDocument(new W3CDom().fromJsoup(document), baseUri);
//引入指定字體,注意字體名需要和css樣式中指定的字體名相同
builder.useFont(new File("javaOpenSource\\src\\main\\resources\\fonts\\msyh.ttf"),"msyh",1,BaseRendererBuilder.FontStyle.NORMAL, true);
builder.run();
}
}
}
使用Java代碼轉換成PDF如下(示例中使用了微軟雅黑中文字體):
上述html文件中增加如下外部樣式:
<link href="style.css" rel="stylesheet">
并在resources目錄下添加style.css文件,重新生成PDF文件如下。
本片介紹了使用OpenPDF將html文件轉換成PDF文件。同時也使用了自定義字體,外部樣式。但是以下幾點需要格外注意。
全部示例在此:https://github.com/javatechnorth/java-study-note/tree/master/javaOpenSource/src/main/java/pdf
文章來源:Java技術指北
*請認真填寫需求信息,我們會在24小時內與您取得聯系。