保存在線文章以便日后查閱,如何實現?想將網頁內容轉為PDF保存,如何轉換?
今天,小福教大家如何將網頁生成PDF文件,跟著小福一起來看看吧!
首先,我們打開福昕高級PDF編輯器,選擇左上角“文件”>“創建”>“從網頁”,或點擊菜單欄“轉換”>“從網頁”;
在彈出的對話框中,粘貼轉換的網頁的URL鏈接,點擊“創建”,福昕高級PDF編輯器將開始加載網頁內容;
加載完畢后,網頁就被轉為PDF啦!此時,我們就可以對該頁面進行進一步的編輯和調整,如文字提取、編輯、添加注釋、劃重點等。完成編輯后,點擊保存即可。
此外,在轉換時,我們可以點擊“設置”來選擇更多轉換選項:
在彈出的“網頁轉換設置”對話框中,有“常規”和“頁面布局”選項卡。常規選項卡可以設置網頁的轉換等級和轉換內容,頁面布局則可設置生成的PDF的頁面尺寸、頁邊距和方向,以及多媒體類型及縮放比例。
這里給大家說說常用的一些設置:
在“常規”選項卡中:
1、轉換等級:可以指定網站中要轉換的網頁等級,或勾選“轉換整個站點”。
轉換同一路徑的網頁:轉換隸屬于您輸入的網頁地址的所有網頁;轉換同一服務器上的網頁:轉換儲存在同一服務器上的所有網頁。
2、PDF設置:設置加載整個頁面的超時時間。超過此設置時間,加載進程將自動中止,且僅已加載內容會被轉換成PDF。默認值為120秒。
3、其他設置:
以上就是本期所有內容,我們下期再見啦!
多編程技術文章,請查閱IOKKS - 專業編程技術分享平臺
在本文中,我們將確保讀取我們放在指定文件夾中的HTML文件,并解析其中的變量并替換為它們的實際值。然后,我使用了"openhtmltopdf-pdfbox"庫修改了HTML文件。我們將介紹如何將其轉換為PDF文件。
首先,我們將讀取我們確定的文件夾下的HTML文件,解析它,并將我們自己的動態值傳遞給HTML中相關的變量。我們將使用"openhtmltopdf-pdfbox"庫中最新更新的形式將HTML文件轉換為PDF文件。
我希望這將成為需要這方面幫助的人的參考。您可以在您的Java項目中輕松進行轉換。您可以在下面看到一個示例項目。
首先,我們將創建一個新的輸入文件夾,我們將在其中讀取我們的輸入HTML文件,并創建一個輸出文件夾,我們將在其中寫入PDF文件。
我們可以將HTML文件放在輸入文件夾下。我們定義一個要在HTML文件中替換的鍵值。這個鍵值被給定為#NAME#作為示例。在Java中,您可以選擇用外部發送的值替換您想要的鍵值。
input folder : \ConvertHtmlToPDF\input
output folder: \ConvertHtmlToPDF\output
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta data-fr-http-equiv="Content-Type" content="text/html; charset=UTF-8">
</meta>
<title>Convert to Html to Pdf</title>
<style type="text/css">
body {
font-family: "Times New Roman", Times, serif;
font-size: 40px;
}
</style>
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
<table width="700" border="0" cellspacing="0" cellpadding="0" style="background-color: #1859AB;
color: white;
font-size: 14px;
border-radius: 1px;
line-height: 1em; height: 30px;">
<tbody>
<tr>
<td>
<strong style="color:#F8CD00;"> Hello </strong>#NAME#
</td>
</tr>
</tbody>
</table>
</body>
</html>
我們正在創建一個新的Spring項目。我正在使用Intellj Idea。
為了在HTML中用值替換鍵,我們將從外部發送值。我們為此編寫一個rest服務。
我們在Controller文件夾下創建"ConvertHtmlToPdfController.java"類。我們在Controller類中創建一個名為"convertHtmlToPdf"的get方法。我們可以動態地將值傳遞給這個方法,如下所示。
package com.works.controller;
import com.works.service.ConvertHtmlToPdfService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("")
public class ConvertHtmlToPdfController {
private final ConvertHtmlToPdfService convertHtmlToPdfService;
public ConvertHtmlToPdfController(ConvertHtmlToPdfService convertHtmlToPdfService) {
this.convertHtmlToPdfService = convertHtmlToPdfService;
}
@GetMapping("/convertHtmlToPdf/{variableValue}")
public ResponseEntity<String> convertHtmlToPdf(@PathVariable @RequestBody String variableValue) {
try {
return ResponseEntity.ok(convertHtmlToPdfService.convertHtmlToPdf(variableValue));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
ConvertHtmlToPdfService.java服務包含一個名為convertHtmlToPdf的方法。convertHtmlToPdf方法接受字符串variableValue輸入。
在convertHtmlToPdf服務方法中;
"inputFile"變量被定義為讀取輸入文件夾下的html文件。我們可以給這個變量賦予我們將要讀取的輸入html文件的URL。
"outputFile"變量被定義為將pdf文件分配給輸出文件夾。我們可以將輸出文件夾的URL賦給這個變量。
您還可以從外部讀取字體文件。您可以從輸入文件夾下獲取這個文件。我們還可以將字體文件所在的URL分配給"fontFile"變量。
在上述代碼行中,將包含輸入的文件夾的URL傳遞給"ConvertHtmlToPdfUtil.readFileAsString"方法,以讀取輸入文件夾中的HTML文件。
String htmlContent = ConvertHtmlToPdfUtil.readFileAsString(inputFile);
package com.works.util;
import com.openhtmltopdf.pdfboxout.PdfRendererBuilder;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
public class ConvertHtmlToPdfUtil {
public static void safeCloseBufferedReader(BufferedReader bufferedReader) throws Exception {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e) {
throw new Exception("safeCloseBufferedReader - the method got an error. " + e.getMessage());
}
}
public static String readFileAsString(String filePath) throws Exception {
BufferedReader br = null;
String encoding = "UTF-8";
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), encoding));
StringBuilder fileContentBuilder = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
if (fileContentBuilder.length() > 0) {
fileContentBuilder.append(System.getProperty("line.separator"));
}
fileContentBuilder.append(line);
}
return fileContentBuilder.toString();
} catch (Exception e) {
new Exception("readFileAsString - the method got an error." + e.getMessage(), e);
return null;
} finally {
safeCloseBufferedReader(br);
}
}
public static OutputStream htmlConvertToPdf(String html, String filePath, String fonts) throws Exception {
OutputStream os = null;
try {
os = new FileOutputStream(filePath);
final PdfRendererBuilder pdfBuilder = new PdfRendererBuilder();
pdfBuilder.useFastMode();
pdfBuilder.withHtmlContent(html, null);
String fontPath = fonts;
pdfBuilder.useFont(new File(concatPath(fontPath, "times.ttf")), "Times", null, null, false);
pdfBuilder.toStream(os);
pdfBuilder.run();
os.close();
} catch (Exception e) {
throw new Exception(e.getMessage(), e);
} finally {
try {
if (os != null) {
os.close();
}
} catch (IOException e) {
}
}
return os;
}
public static String concatPath(String path, String... subPathArr) {
for (String subPath : subPathArr) {
if (!path.endsWith(File.separator)) {
path += File.separator;
}
path += subPath;
}
return path;
}
}
以上是ConvertHtmlToPdfUtil.readFileAsString方法中的代碼。它使用FileInputStream將HTML文件讀取為字符集,并使用InputStreamReader將其轉換為內部緩沖區,并使用BufferedReader將其放入內部緩沖區。
BufferedReader中的字符逐行讀取,如下所示。所有HTML內容都被放入字符串變量中。使用safeCloseBufferedReader方法,當我們完成時,我們關閉緩沖區。
我們可以將我們的HTML內容發送到setVariableValue方法中,以便用我們從外部發送的值替換我們在服務中發送的值。我們在HTML中標記為#key#的鍵值將被值值替換。
private String setVariableValue(String htmlContent, String key, String value) {
if (StringUtils.isNotEmpty(value)) {
htmlContent = htmlContent.replaceAll("#"+key+"#", value);
}else {
htmlContent = htmlContent.replaceAll("#"+key+"#", "");
}
return htmlContent;
}
然后,在替換過程之后,我們可以調用ConvertHtmlToPdfUtil.htmlConvertToPdf方法,將HTML URL文件生成為PDF輸出。ConvertHtmlToPdfUtil.htmlConvertToPdf方法可以接收HTML內容、輸出和字體輸入,如下所示。
我們可以將這些輸入傳遞給該方法。
ConvertHtmlToPdfUtil.htmlConvertToPdf(htmlContent, outputFile, fontFile);
ConvertHtmlToPdfUtil.htmlConvertToPdf方法內容;
我們將創建一個新的FileOutputStream。這將確定我們指定的output.pdf文件的創建。
PdfRendererBuilder類位于com.openhtmltopdf.pdfboxout庫中。因此,我們必須將此庫添加到pom.xml文件中,如下所示。
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>1.0.10</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.works</groupId>
<artifactId>convertHtmlToPDF</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>convertHtmlToPDF</name>
<description>convertHtmlToPDF</description>
<properties>
<java.version>17</java.version>
<spring-cloud.version>2022.0.3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.openhtmltopdf</groupId>
<artifactId>openhtmltopdf-pdfbox</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>paketobuildpacks/builder-jammy-base:latest</builder>
</image>
</configuration>
</plugin>
</plugins>
</build>
</project>
實現PdfRendererBuilder對象后,我們可以將HTML參數設置為'withHtmlContent',將fontpath參數設置為'useFont'。我們可以使用toStream設置輸出文件。最后,我們可以使用run方法運行它。
pdfBuilder.useFastMode();
pdfBuilder.withHtmlContent(html, null);
String fontPath = fonts;
pdfBuilder.useFont(new File(concatPath(fontPath, "times.ttf")), "Times", null, null, false);
pdfBuilder.toStream(os);
pdfBuilder.run();
pdfBuilder.run(); 在運行該方法后,我們應該看到output.pdf文件被創建在output文件夾下。
因此,我們可以看到使用openhtmltopdf-pdfbox庫進行平滑的HTML到PDF轉換過程。
github: https://github.com/rtfpessoa/diff2html
項目地址:https://diff2html.xyz/
在軟件開發和版本控制過程中,diff 命令是不可或缺的,它用于顯示文件之間的差異。然而,直接在命令行中查看 diff 的輸出可能不夠直觀,特別是對于大型文件或復雜的代碼更改。為了更友好地展示這些差異,diff2html 應運而生,它將 diff 的輸出轉換成易于閱讀的 HTML 格式,使得代碼審查、版本對比等任務變得更加高效。
diff2html 是一個輕量級的 JavaScript 庫,它可以將 diff(通常是 Git 或其他版本控制系統生成的補丁文件)轉換成漂亮的 HTML 格式。這個庫不僅支持基本的文本差異顯示,還提供了多種樣式和配置選項,以滿足不同場景下的需求。
diff2html 可以通過多種方式安裝和使用,包括但不限于 npm、CDN 鏈接等。
如果你正在使用 Node.js 環境,可以通過 npm 來安裝 diff2html:
npm install diff2html
安裝后,你可以在你的項目中引入并使用它。
如果你只是想在 HTML 頁面中快速使用 diff2html,可以直接通過 CDN 鏈接引入:
<script src="https://cdn.jsdelivr.net/npm/diff2html/bundles/diff2html.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/diff2html/bundles/diff2html.min.css" />
diff2html 的基本使用流程包括以下幾個步驟:
獲取 diff 數據:首先,你需要有 diff 的數據,這可以是通過 Git 命令生成的補丁文件內容,也可以是兩個文件內容直接通過 diff 命令生成的結果。
使用 diff2html 轉換:然后,使用 diff2html 提供的 API 或命令行工具(如果有的話)將 diff 數據轉換為 HTML。
顯示 HTML:最后,將轉換后的 HTML 插入到你的網頁中,或者使用 JavaScript 動態創建 HTML 元素并添加到 DOM 中。
以下是一個簡單的示例,演示如何使用 JavaScript 和 diff2html 將 diff 數據轉換為 HTML 并顯示在頁面上:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Diff2HTML Example</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/diff2html/bundles/diff2html.min.css" />
</head>
<body>
<div id="diff-output"></div>
<script src="https://cdn.jsdelivr.net/npm/diff2html/bundles/diff2html.min.js"></script>
<script>
// 假設這是你的 diff 數據
var diff = `diff --git a/file1.txt b/file1.txt
index 4d7a2fe..e43a40e 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1,3 +1,4 @@
Hello
World
+New Line
This is a test`;
// 使用 diff2html 轉換 diff 數據
var html = Diff2Html.getHtmlDiff(diff);
// 將轉換后的 HTML 插入到頁面中
document.getElementById('diff-output').innerHTML = html;
</script>
</body>
</html>
在這個示例中,我們首先通過 CDN 引入了 diff2html 的 JavaScript 和 CSS 文件。然后,在 <script> 標簽中,我們定義了一個包含 diff 數據的字符串,并使用 Diff2Html.getHtmlDiff() 方法將其轉換為 HTML。最后,我們通過 JavaScript 將轉換后的 HTML 插入到頁面的 <div> 元素中。
diff2html 還提供了多種配置選項和樣式定制功能,允許你根據實際需求調整差異顯示的樣式和行為。例如,你可以設置不同的主題、自定義行號樣式、啟用/禁用文件標題等。
要了解更多關于 diff2html 的高級配置和樣式選項,建議查閱其官方文檔或源代碼。
diff2html 是一個功能強大的工具,它能夠將 diff 輸出轉換為易于閱讀的 HTML 格式,極大地提升了代碼審查和版本對比的效率。無論是通過 npm 安裝還是通過 CDN 引入,
*請認真填寫需求信息,我們會在24小時內與您取得聯系。