整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          怎么把pdf轉(zhuǎn)換成html格式?分享兩個(gè)超簡(jiǎn)單方法

          工作中,我們經(jīng)常會(huì)處理很多種類的文件,相信大多數(shù)人處理最多的應(yīng)該是pdf文件吧?我們經(jīng)常使用pdf文件的主要原因就是pdf比較便于查看,也易于傳輸,而且它的體積很小,不會(huì)特別占用設(shè)備的內(nèi)存。但是pdf文件也有一些缺點(diǎn),它不支持在線編輯,不能夠仔細(xì)查看文件中的圖片,所以我們?cè)诠ぷ髦杏袝r(shí)候需要將pdf轉(zhuǎn)成html格式的文件。但是我們怎么把pdf轉(zhuǎn)換成html格式呢?小編今天跟大家分享兩個(gè)超級(jí)簡(jiǎn)單的方法,大家趕快來(lái)看一看吧!

          怎么把pdf轉(zhuǎn)換成html格式?

          方法一、小圓象PDF轉(zhuǎn)換器

          小圓象PDF轉(zhuǎn)換器是一款非常專業(yè)的PDF轉(zhuǎn)換軟件,它不僅支持PDF轉(zhuǎn)Word、ExcelPPTHtml等格式的文件,還有一些PDF小工具,像是PDF加密/解密、PDF合并/拆分、PDF壓縮等,都能幫助學(xué)習(xí)黨和工作黨更好的處理文件。它對(duì)文件的識(shí)別也很精確,轉(zhuǎn)換后文件準(zhǔn)確率很高。同時(shí)它的安全性也很高,不會(huì)泄露用戶任何的隱私。

          第一步:進(jìn)入小圓象PDF轉(zhuǎn)換器官網(wǎng)(網(wǎng)址:https://www.xiaoyuanxiang.cn/),點(diǎn)擊客戶端下載,軟件安裝完畢后,打開(kāi)軟件,點(diǎn)擊第一個(gè)功能——PDF轉(zhuǎn)文件。

          第二步:在上方各種功能中,選擇——PDF轉(zhuǎn)Html,隨后將文件添加到虛線框內(nèi),等待文件添加完畢,調(diào)整輸出目錄,最后點(diǎn)擊右下角——開(kāi)始轉(zhuǎn)換,就可以轉(zhuǎn)換完成了!

          方法二、PDF 24 Tools

          這款軟件功能非常豐富,一共有24種功能,每種都很實(shí)用,頁(yè)面很有設(shè)計(jì)感,除了可以將PDF轉(zhuǎn)換為其他格式文件以外,還支持PDF轉(zhuǎn)圖像、從PDF文件中讀取圖像、PDF旋轉(zhuǎn)、刪除PDF頁(yè)面等相關(guān)操作。它轉(zhuǎn)換文件的成功率也比較高,轉(zhuǎn)換后的文件內(nèi)容大致是一樣的,比較適合日常使用。不過(guò)它也有一個(gè)小缺點(diǎn),那就是它的網(wǎng)頁(yè)上會(huì)有一些小廣告。

          第一步:進(jìn)入軟件首頁(yè),在眾多功能中找到第一行最后一個(gè)功能——PDF轉(zhuǎn)換器,點(diǎn)擊進(jìn)入下一頁(yè)面。

          第二步:選擇第二項(xiàng)——將PDF轉(zhuǎn)換成,進(jìn)入下一步。

          第三步:將本地文件上傳成功后,點(diǎn)擊左下角——格式,選擇HTML格式,再點(diǎn)擊右下角——轉(zhuǎn)換,等待片刻就可以轉(zhuǎn)換成功。

          看完這篇文章,大家知道該怎么把pdf轉(zhuǎn)換成html格式了吧?就個(gè)人而言,小編還是更喜歡小圓象PDF轉(zhuǎn)化器一些,它的頁(yè)面很簡(jiǎn)潔,沒(méi)有小廣告,而且操作會(huì)更簡(jiǎn)單些,不知道大家喜歡哪種方法呢?

          html 轉(zhuǎn) pdf 技術(shù)方案調(diào)研:從入門(mén)到精通的全方位解析

          **引言:**

          在Web開(kāi)發(fā)中,有時(shí)我們需要將HTML內(nèi)容轉(zhuǎn)換為PDF格式,以滿足打印、下載或郵件發(fā)送的需求。本文將深入調(diào)研并解析目前主流的HTML轉(zhuǎn)PDF技術(shù)方案,涵蓋從原生API到第三方庫(kù)的多種實(shí)現(xiàn)方式,讓您全面了解各種方案的優(yōu)劣,并通過(guò)具體的代碼實(shí)例幫助您快速掌握實(shí)現(xiàn)技巧。

          ---

          ### **一、原生API:打印預(yù)覽生成PDF**

          **標(biāo)題:利用瀏覽器內(nèi)置打印功能**

          大多數(shù)現(xiàn)代瀏覽器都內(nèi)置了打印預(yù)覽功能,通過(guò)調(diào)整打印設(shè)置,可以選擇“保存為PDF”。雖然這種方式并非直接生成PDF,但對(duì)于簡(jiǎn)單的HTML內(nèi)容轉(zhuǎn)換十分便捷。

          ```javascript

          // 觸發(fā)打印對(duì)話框

          window.print();

          // 或者更精細(xì)地控制打印內(nèi)容

          const myPrintContent = document.getElementById('printable-section');

          myPrintContent.style.display = 'block';

          myPrintContent.focus();

          myPrintContent.print();

          ```

          然而,這種方法的局限性在于無(wú)法自定義PDF的樣式、頁(yè)眉頁(yè)腳等內(nèi)容,而且不適用于自動(dòng)化流程或服務(wù)器端生成PDF。

          ---

          ### **二、Headless Chrome Puppeteer**

          **標(biāo)題:Headless Chrome Puppeteer的HTML轉(zhuǎn)PDF解決方案**

          Puppeteer是由Google開(kāi)發(fā)的Node庫(kù),它提供了一種可控的方式來(lái)通過(guò)Chrome Headless運(yùn)行JavaScript并與頁(yè)面交互,包括生成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的優(yōu)點(diǎn)是可以精確控制PDF樣式,支持CSS3,且跨平臺(tái)兼容性好。但需要注意的是,它需要在服務(wù)器端部署Chrome,并占用一定的計(jì)算資源。

          ---

          ### **三、jsPDF庫(kù)**

          **標(biāo)題:小巧輕便的jsPDF庫(kù)**

          jsPDF是一個(gè)純JavaScript編寫(xiě)的PDF生成庫(kù),主要面向輕量級(jí)應(yīng)用場(chǎng)景,可以將HTML內(nèi)容轉(zhuǎn)化為PDF,但對(duì)CSS的支持有限。

          ```javascript

          import jsPDF from 'jspdf';

          const doc = new jsPDF();

          doc.text('Hello World!', 10, 10);

          doc.save('a4.pdf');

          // 通過(guò)html2canvas配合實(shí)現(xiàn)HTML轉(zhuǎn)PDF(較復(fù)雜場(chǎng)景)

          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的優(yōu)點(diǎn)在于輕量、易于集成,適用于簡(jiǎn)單的文字排版和圖表繪制。但因其不直接支持HTML渲染,復(fù)雜HTML內(nèi)容需要借助html2canvas等庫(kù)先轉(zhuǎn)為圖像再插入PDF。

          ---

          ### **四、Apache PDFBox**

          **標(biāo)題:Java世界的HTML轉(zhuǎn)PDF工具——Apache PDFBox**

          Apache PDFBox是一個(gè)開(kāi)源的Java庫(kù),可以處理PDF文檔的創(chuàng)建、修改、提取等操作,同時(shí)也支持HTML轉(zhuǎn)PDF,適用于后端Java環(huán)境。

          ```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庫(kù),但因其強(qiáng)大的功能和對(duì)企業(yè)級(jí)應(yīng)用的良好支持,成為了許多Java項(xiàng)目的選擇。

          ---

          **總結(jié):**

          選擇何種HTML轉(zhuǎn)PDF方案取決于具體的應(yīng)用場(chǎng)景和需求。原生打印API適用于簡(jiǎn)單的本地操作,Puppeteer適用于服務(wù)端生成高質(zhì)量PDF,jsPDF適用于輕量級(jí)、純JavaScript環(huán)境,而Apache PDFBox則在Java環(huán)境中表現(xiàn)出眾。理解每個(gè)方案的特性和限制,將有助于我們?cè)趯?shí)際項(xiàng)目中做出合適的選擇。無(wú)論哪種方式,HTML轉(zhuǎn)PDF都是現(xiàn)代Web開(kāi)發(fā)中的一項(xiàng)重要技能,值得深入學(xué)習(xí)和掌握。

          嘍,今天是一篇HTML to PDF速食指南。

          Java 轉(zhuǎn)換 HTML 到PDF有許多類庫(kù),今天我們介紹一下第三方免費(fèi)的類庫(kù)OpenPDF。

          1. OpenPDF

          OpenPDF是免費(fèi)的Java類庫(kù) ,遵從LGPL 和 MPL協(xié)議,所以基本上能夠可以隨意使用。OpenPDF是基于iTEXT的,目前來(lái)說(shuō)也是維護(hù)的比較好的Java操作PDF的開(kāi)源軟件。

          話不多說(shuō),且看所需要的依賴,

          <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文件轉(zhuǎn)換成輸入流等,也可以遍歷html的DOM節(jié)點(diǎn),提取元素及樣式等。

          2. 示例

          本篇示例將以下html文件轉(zhuǎn)換成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用瀏覽器打開(kāi)如下,亂碼是因?yàn)橹形淖煮w不識(shí)別,下面轉(zhuǎn)換的時(shí)候會(huì)加載對(duì)應(yīng)的字體來(lái)進(jìn)行轉(zhuǎn)換。

          使用Java轉(zhuǎn)換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);
                  
                  //引入資源目錄,可以單獨(dú)引入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代碼轉(zhuǎn)換成PDF如下(示例中使用了微軟雅黑中文字體):

          上述html文件中增加如下外部樣式

          <link href="style.css" rel="stylesheet">
          

          并在resources目錄下添加style.css文件,重新生成PDF文件如下。

          3. 總結(jié)

          本片介紹了使用OpenPDF將html文件轉(zhuǎn)換成PDF文件。同時(shí)也使用了自定義字體,外部樣式。但是以下幾點(diǎn)需要格外注意。

          • Java代碼中加載的字體名稱要和HTML引用的CSS樣式中的字體名相同 ({font-family:"msyh";})。
          • HTML文件標(biāo)簽節(jié)點(diǎn)必須閉合(<xxx></xxx>).否則解析會(huì)失敗。

          全部示例在此:https://github.com/javatechnorth/java-study-note/tree/master/javaOpenSource/src/main/java/pdf

          文章來(lái)源:Java技術(shù)指北


          主站蜘蛛池模板: 成人久久精品一区二区三区| 亚洲综合国产一区二区三区| 国产精品 视频一区 二区三区| 日韩综合无码一区二区| 精品一区二区三区在线播放视频| 国产精品一区二区av不卡| 加勒比无码一区二区三区| AV无码精品一区二区三区| 日本不卡一区二区三区视频| 成人一区二区免费视频| 国产观看精品一区二区三区| 国产精品第一区揄拍无码| 亚洲精品精华液一区二区| 亚洲色精品VR一区区三区| 麻豆果冻传媒2021精品传媒一区下载| 日韩欧国产精品一区综合无码| 国产一区二区女内射| 国产综合一区二区在线观看| 在线精品国产一区二区三区| 中文字幕一区二区三区在线播放| 无码人妻一区二区三区精品视频| 国产主播福利精品一区二区| 国产伦精品一区二区三区四区| 在线观看国产一区亚洲bd| 又紧又大又爽精品一区二区| 日本一区二区在线不卡| 一区二区三区免费视频播放器| 视频在线一区二区三区| 国产乱码伦精品一区二区三区麻豆| 国产亚洲一区二区三区在线不卡| 中文字幕永久一区二区三区在线观看| 波多野结衣的AV一区二区三区| 中文字幕亚洲一区二区va在线| 日韩精品成人一区二区三区| 亚洲蜜芽在线精品一区| 伊人久久精品一区二区三区| 北岛玲在线一区二区| 农村人乱弄一区二区 | 亚洲AV无码一区二区三区电影| 精品熟人妻一区二区三区四区不卡| 亚洲精品色播一区二区|