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。
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小時內與您取得聯系。