整合營銷服務商

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

          免費咨詢熱線:

          如何將網頁生成PDF?僅需一步,輕松轉換!

          保存在線文章以便日后查閱,如何實現?想將網頁內容轉為PDF保存,如何轉換?

          今天,小福教大家如何將網頁生成PDF文件,跟著小福一起來看看吧!

          首先,我們打開福昕高級PDF編輯器,選擇左上角“文件”>“創建”>“從網頁”,或點擊菜單欄“轉換”>“從網頁”;


          在彈出的對話框中,粘貼轉換的網頁的URL鏈接,點擊“創建”,福昕高級PDF編輯器將開始加載網頁內容;


          加載完畢后,網頁就被轉為PDF啦!此時,我們就可以對該頁面進行進一步的編輯和調整,如文字提取、編輯、添加注釋、劃重點等。完成編輯后,點擊保存即可。

          此外,在轉換時,我們可以點擊“設置”來選擇更多轉換選項:

          在彈出的“網頁轉換設置”對話框中,有“常規”和“頁面布局”選項卡。常規選項卡可以設置網頁的轉換等級和轉換內容,頁面布局則可設置生成的PDF的頁面尺寸、頁邊距和方向,以及多媒體類型及縮放比例。

          這里給大家說說常用的一些設置:

          在“常規”選項卡中:

          1、轉換等級:可以指定網站中要轉換的網頁等級,或勾選“轉換整個站點”。

          轉換同一路徑的網頁:轉換隸屬于您輸入的網頁地址的所有網頁;轉換同一服務器上的網頁:轉換儲存在同一服務器上的所有網頁。

          2、PDF設置:設置加載整個頁面的超時時間。超過此設置時間,加載進程將自動中止,且僅已加載內容會被轉換成PDF。默認值為120秒。

          • 在所生成的PDF文件中禁用所有超鏈接:勾選該項后,轉換生成的PDF中的所有超鏈接均為無效鏈接。
          • 將所有的頁面內容轉換到同一個PDF頁面:勾選該項后,所有相關內容將被轉換到同一個PDF頁面中。
          • 創建書簽:勾選該項,轉換后將自動生成被轉換頁面的書簽。書簽名為網頁的域名。當網頁域名相同時,將自動創建子書簽并以頁面的標題作為子書簽的名稱。若頁面沒有標題,則使用對應的URL作為子書簽的名稱。
          • 創建 PDF 標簽:勾選該項以創建包含標簽和其他輔助信息的PDF文檔。
          • 在新建頁面放置頁眉和頁腳:在生成的 PDF 的每一頁上放置頁眉和頁腳。頁眉顯示您創建PDF的日期和網頁標題。頁腳顯示網頁URL(或 HTML 文件的文件路徑)和頁碼。
          • 背景圖像:勾選該項以保留頁面背景,生成的 PDF 看起來將與原始網頁完全一樣。有時,網頁上的背景可能會影響文本的顯示效果,您可以取消勾選該項,這樣轉換后的頁面可能與網頁瀏覽器中顯示的不同,但更易于閱讀。

          3、其他設置:

          • 轉換圖像:如需在 PDF 轉換時轉換圖像,請勾選此項;反之則取消勾選。
          • 為鏈接添加下劃線:如需在生成的 PDF 中為網頁鏈接文本添加下劃線,請勾選此項;反之則取消勾選。

          以上就是本期所有內容,我們下期再見啦!

          多編程技術文章,請查閱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轉換過程。

          iff2HTML:將Diff輸出轉換為HTML的便捷工具

          github: https://github.com/rtfpessoa/diff2html

          項目地址:https://diff2html.xyz/

          在軟件開發和版本控制過程中,diff 命令是不可或缺的,它用于顯示文件之間的差異。然而,直接在命令行中查看 diff 的輸出可能不夠直觀,特別是對于大型文件或復雜的代碼更改。為了更友好地展示這些差異,diff2html 應運而生,它將 diff 的輸出轉換成易于閱讀的 HTML 格式,使得代碼審查、版本對比等任務變得更加高效。



          一、diff2html 簡介

          diff2html 是一個輕量級的 JavaScript 庫,它可以將 diff(通常是 Git 或其他版本控制系統生成的補丁文件)轉換成漂亮的 HTML 格式。這個庫不僅支持基本的文本差異顯示,還提供了多種樣式和配置選項,以滿足不同場景下的需求。

          二、安裝與引入

          diff2html 可以通過多種方式安裝和使用,包括但不限于 npm、CDN 鏈接等。

          1. 使用 npm 安裝

          如果你正在使用 Node.js 環境,可以通過 npm 來安裝 diff2html

          npm install diff2html

          安裝后,你可以在你的項目中引入并使用它。

          2. 通過 CDN 引入

          如果你只是想在 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 轉換并顯示 diff

          以下是一個簡單的示例,演示如何使用 JavaScript 和 diff2htmldiff 數據轉換為 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 引入,


          主站蜘蛛池模板: 亚洲日韩AV一区二区三区四区| 亚洲一区二区三区亚瑟| 91一区二区视频| 无码人妻久久一区二区三区蜜桃| 色婷婷一区二区三区四区成人网| 一区二区三区在线播放| 亚洲AV日韩AV一区二区三曲| 日韩十八禁一区二区久久| 波多野结衣精品一区二区三区 | 91一区二区三区四区五区| 中文字幕视频一区| 偷拍激情视频一区二区三区| 无码国产精品一区二区免费vr| 国精品无码一区二区三区在线| 一区国严二区亚洲三区| 岛国精品一区免费视频在线观看| 琪琪see色原网一区二区| 久久精品国产AV一区二区三区| 在线观看视频一区二区| 成人精品一区二区不卡视频| 国产一区二区三区无码免费| 免费一区二区无码东京热| 精品亚洲一区二区| 精品一区精品二区制服| 日韩一区二区三区在线观看| 91精品国产一区二区三区左线| 一区二区三区国产| 精品一区二区AV天堂| 亚洲综合一区二区精品久久| 国产精品久久久久久一区二区三区| 国产在线精品一区二区中文| 亚洲成在人天堂一区二区| 在线观看精品视频一区二区三区| 香蕉免费看一区二区三区| 一区二区三区国产| 亚洲日韩一区精品射精| 日韩精品一区二区三区国语自制 | 日韩一区二区超清视频| 无码乱码av天堂一区二区| 亚洲AV网一区二区三区| 日本在线视频一区|