整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          如何實現將PDF和html相互轉換

          DF是一種比較穩定的電子文檔格式,而HTML則是一種通用的網頁格式,如何才能實現這兩種格式之間的互轉呢?

          首先將網頁轉成PDF是相當來說比較簡單的操作,而且只要我們對PDF格式比較熟悉,一定都知道PDF虛擬打印機可以將各種格式打印并以PDF格式保存,所以此方法也同樣適用于HTML轉換PDF,具體操作方法就是先打開網頁后,在網頁任意處右擊并選擇“打印”

          接著在左上角的打印設置頁面,將目標打印機更改為電腦已有的PDF虛擬打印機或另存為PDF,再點擊保存并選擇文檔保存位置后就可以了。

          而將PDF文件轉成網頁就需要使用一些工具了,先下載并安裝極速玩轉后,選擇PDF轉換中的PDF轉HTML進入轉換頁面,并添加需要轉換的PDF文檔。

          然后在左下角的輸出路徑設置好轉換后的HTML網頁保存文件夾后,點擊右下角的開始轉換就可以了。

          擬機為我們提供了一個無限可能的世界。在這個世界里,我們可以嘗試、學習、甚至犯錯,而不必擔心現實生活中的后果。Emacs,作為一款強大的文本編輯器,它的Org模式更是讓人們在組織復雜信息時如魚得水。但是,當我們嘗試將Org文件轉換為HTML格式時,有時會遇到一個令人困惑的問題:“source block missing language specification #include”。這是什么意思?它又該如何解決呢?

          在深入探討之前,讓我們先來思考一個問題:為什么我們要將Org文件轉換為HTML?答案可能各有不同,但一個共同點是,我們都希望能夠更好地分享和展示我們的工作。HTML作為一種廣泛支持的格式,能夠讓我們的內容在不同的平臺上呈現出一致的效果。這就像是我們穿上了一件合身的外衣,讓內在的價值得以外顯。

          當我們遇到“source block missing language specification #include”的提示時,我們應該怎么辦呢?首先,我們需要理解這個提示的含義。在Emacs的Org模式中,當我們使用源代碼塊時,通常需要指定語言類型,比如#+BEGIN_SRC python。這樣,Emacs就能夠知道如何高亮和格式化我們的代碼。但如果我們忘記了這一步,就會收到上述的提示。

          解決這個問題的方法其實很簡單。我們只需要回到源代碼塊的開始,確保正確地指定了語言類型。如果是包含在文件中的代碼,比如C語言的頭文件,我們可以使用#+INCLUDE: "file.h" src c這樣的語法來引入。

          通過這個簡單的修正,我們就能夠順利地將Org文件轉換為HTML,而不會再有任何阻礙。這個過程就像是我們在虛擬世界中解決了一個謎題,獲得了前進的鑰匙。

          并且可以嘗試以下幾種方法來解決:

          方法一:添加語言規范

          在 Org 文檔中,對于包含代碼塊的文本,需要添加語言規范,以便 Org-mode 正確地解析和轉換代碼。

          具體步驟如下:

          在代碼塊的開頭,添加一行指示語言規范的注釋。例如,對于 C 語言代碼,可以添加以下注釋:

          #lang c

          再次嘗試將 Org 文檔轉換為 HTML。

          方法二:使用 org-babel

          org-babel 是 Org-mode 的一個擴展包,可以用于將代碼塊轉換為各種格式,包括 HTML。

          具體步驟如下:

          安裝 org-babel 擴展包。

          M-x package-install RET org-babel

          在 Org 文檔中,將代碼塊標記為 babel 塊。例如,對于 C 語言代碼,可以使用以下標記:

          #+begin_src c#include <stdio.h>int main() {  printf("Hello, world!\n");  return 0;}#+end_src

          再次嘗試將 Org 文檔轉換為 HTML。

          方法三:使用 org-html-export-filter

          org-html-export-filter 是 Org-mode 的一個函數,可以用于在導出 HTML 時自定義代碼塊的轉換。

          具體步驟如下:

          在 Emacs 配置文件中,添加以下代碼:

          (defun my-org-html-export-filter (block)  "自定義代碼塊的轉換。"  (if (string-match-p "^#lang\s+c\s*$" (org-block-property block :language))    (org-html-export-filter-block-as-code block "c" "highlight")    (org-html-export-filter-block-as-verbatim block)))(add-hook 'org-html-export-filter-alist 'my-org-html-export-filter)

          再次嘗試將 Org 文檔轉換為 HTML。

          以上三種方法都可以解決 Org 轉為 HTML 時提示“source block missing language specification #include<stdio.h>”的問題。具體選擇哪種方法,可以根據自己的實際情況和需求來決定。

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

          Java 轉換 HTML 到PDF有許多類庫,今天我們介紹一下第三方免費的類庫OpenPDF。

          1. 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節點,提取元素及樣式等。

          2. 示例

          本篇示例將以下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文件如下。

          3. 總結

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

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

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

          文章來源:Java技術指北


          主站蜘蛛池模板: 国产成人精品一区二区A片带套| 国产精品一区视频| 国产精品成人一区二区| 国产在线不卡一区| 无码日韩精品一区二区人妻| 果冻传媒董小宛一区二区| 久久影院亚洲一区| 日韩精品乱码AV一区二区| 精品国产一区二区三区久久狼 | 一区二区三区精品| 亚洲一区中文字幕在线观看| 国产萌白酱在线一区二区| 东京热无码av一区二区| 亚洲丰满熟女一区二区v| 国产天堂在线一区二区三区| 免费萌白酱国产一区二区三区| 国产精品一区二区久久精品| 精品不卡一区中文字幕| 一区二区三区四区视频| 国产丝袜一区二区三区在线观看| 精品国产不卡一区二区三区 | 伊人久久精品一区二区三区| 高清在线一区二区| 2022年亚洲午夜一区二区福利| 精品国产天堂综合一区在线| 国产一区二区在线视频| 国产精品视频无圣光一区| 久久久久成人精品一区二区| 国产伦精品一区二区三区精品| 亚洲国产精品一区二区第一页| 国产在线视频一区二区三区| 日产精品久久久一区二区| 日韩精品无码久久一区二区三| 91午夜精品亚洲一区二区三区 | 无码精品人妻一区二区三区免费看| 日韩精品一区二区三区中文版| 无码人妻AV免费一区二区三区| 一区二区三区无码高清视频| 无码精品一区二区三区| 日韩AV无码久久一区二区| 三上悠亚精品一区二区久久|