純前端 -- html轉pdf插件總結

一、html2canvas+jsPDF(文字會被截斷):

將HTML元素呈現給添加到PDF中的畫布對象,不能僅使用jsPDF,需要html2canvas或rasterizeHTML

html2canvas+jsPDF的具體使用鏈接

二、html2pdf(內容顯示不全+文字會被截斷):

下載或者安裝html2pdf:官網

1、將文檔放在本地,用原生js進行引用和使用。

① 新建一個名為 html2pdf.js 的文件,并且將線上的內容進行復制。
② 引入 js 文件:

// js直接引入 -- 未嘗試
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.js"></script>// layui使用
// 首先在html2pdf.js文件中添加exports
layui.define([],function(exports){// 復制的內容...exports('html2pdf',html2pdf);
})
// 其次進行自定義插件的引入
layui.define(['appsmenu'],function (exports) {exports("conf", {// 第三方擴展extend: {// 引入html2pdfhtml2pdf: "lay/extends/html2pdf",}}
})

2、使用 npm 進行安裝使用:

npm install --save html2pdf.js

3、在原生js中使用:

// 點擊下載按鈕
document.getElementById("btn").onclick=function(){let opt = {margin: 1,  // pdf外邊距filename:  'pdf生成'+'.pdf', // 導出的pdf名稱image: { // 圖片的類型和質量,詳情: https://github.com/eKoopmans/html2pdf.js#image-type-and-qualitytype: 'jpeg',quality: 0.98  // 取0-1,默認0.95,僅適用  jpeg/webp},html2canvas: {scale: 1,dpi: 92,},jsPDF: { // 詳情:http://www.rotisedapsales.com/snr/cloud2/website/jsPDF-master/docs/jsPDF.htmlunit: 'pt', // pt、mm、cm、informat: 'a4', orientation: 'portrait' // 縱向p,橫向l}};html2pdf().set(opt).from(document.getElementById('box')).save();
}

4、效果:

在這里插入圖片描述

三、print.js(內容截斷:包括不限于圖表截斷、動態表格行截斷):

下載或者安裝PrintJs:官網

1、將文檔放在本地,用原生js進行引用和使用。

① 新建一個名為 print.js 的文件,并且將線上的內容進行復制。
② 引入 js 文件:

// js直接引入 -- 未嘗試
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/print-js/1.6.0/print.js"></script>// layui使用
// 首先在print.js文件中添加exports
layui.define([],function(exports){// 復制的內容...exports('print',print);
})
// 其次進行自定義插件的引入
layui.define(['appsmenu'],function (exports) {exports("conf", {// 第三方擴展extend: {// 引入print-jsprint: "lay/extends/print",}}
})

2、使用 npm 進行安裝使用:

npm install print-js --save

3、原生js使用:

// 點擊下載按鈕
document.getElementById("btn").onclick=function(){printJS({printable: 'box', // 數據源:pdf or image的url,html類型則填打印區域元素id,json類型則是數據object。type: 'html', // 默認pdf,可選類型:pdf, html, image, json// header: '暫時不要標題', // 應用于頁面頂部標題文本。targetStyles: ['*'],scanStyles: false, 	//此屬性默認為true,printJs會自動掃描當前html結構所用的樣式表style: stringCssFunc(), // 打印的內容是沒有css樣式的,此處需要string類型的css樣式
})
}var stringCssFunc = function() {return `@page {margin:0 10mm};body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form,pre{margin: 0; padding: 0; -webkit-tap-highlight-color:rgba(0,0,0,0);}a:active,a:hover{outline:0}img{display: inline-block; border: none; vertical-align: middle;}li{list-style:none;}table{border-collapse: collapse; border-spacing: 0;}h1,h2,h3{font-weight: 400;}h4, h5, h6{font-size: 100%; font-weight: 400;}button,input,select,textarea{font-size: 100%; }input,button,textarea,select,optgroup,option{font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit; outline: 0;}pre{white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;}body{line-height: 24px; font: 14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif;}hr{height: 1px; margin: 10px 0; border: 0; clear: both;}a{color: #333; text-decoration:none; }a:hover{color: #777;}a cite{font-style: normal; *cursor:pointer;}`
}

四、jsPDF-Autotable(只對表格起作用):

下載或者安裝jsPDF-Autotable:這個應該是官網,找不到別的了

1、將文檔放在本地,用原生js進行引用和使用。

① 新建一個名為 autotable.js 的文件,并且將線上的內容進行復制。
② 引入 js 文件:

// js直接引入 -- 未嘗試
<script type="text/javascript" src="https://cdn.staticfile.org/jspdf-autotable/3.5.31/jspdf.plugin.autotable.js"></script>// layui使用
// 首先在autotable.js文件中添加exports
layui.define([],function(exports){// 復制的內容...// 將復制的內容引出的default改為autotable,可以看下面的圖片1exports('autotable',autotable);
})
// 其次進行自定義插件的引入
layui.define(['appsmenu'],function (exports) {exports("conf", {// 第三方擴展extend: {// 引入jsPDF-Autotableautotable: "lay/extends/autotable",}}
})

圖片1:
在這里插入圖片描述

2、使用 npm 進行安裝使用:

npm install jspdf -Snpm install jspdf-autotable -S

3、原生js使用:

// 點擊下載按鈕
document.getElementById("btn").onclick=function(){const doc = new jsPDF()// 當前的dom元素,應該是table元素上面的類名,table里面包含th、tr、td等// 如果使用除了table、th、tr、td之外的元素,那么將會報錯,或者打印的是空白autoTable(doc, { html: '#box' })doc.save('下載的文件.pdf')
}

四、pdfmake(只適用很簡單的頁面結構,沒有什么樣式,嘗試失敗):

pdfmake默認不支持中文,所以需要安裝字體文件

下載或者安裝pdfmake及字體js:官網

1、將文檔放在本地,用原生js進行引用和使用。

① 新建一個名為 pdfmake.min.js 的文件,并且將線上的內容進行復制。
② 新建一個名為 vsfFonts.js的文件,并且將線上的內容進行復制。
③ 引入 js 文件:

// js直接引入 -- 未嘗試
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>

2、使用 npm 進行安裝使用:

npm install pdfmake

3、原生js使用:

// 點擊下載按鈕
document.getElementById("btn").onclick=function(){var docDefinition = { // 描述的對象 -- 內容的結構數組、樣式文件的引入都在這里寫,感覺不適合復雜的頁面結構content: "這里可以使用字符串,也可以使用數組",defaultStyle: {// 設置定義好的字體為默認字體font: "字體名",},};pdfMake.createPdf(docDefinition).download("下載的文件名", () => {console.log("下載完成的回調");})
}

五、pdf-lib(沒看懂)

下載或者安裝pdf-lib:官網

六、PDFKit、Puppeteer、wkhtmltopdf、PhantomJS都是在服務器端調用的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36600.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[RoarCTF 2019Online Proxy]sql巧妙盲注

文章目錄 [RoarCTF 2019Online Proxy]sql巧妙盲注解題腳本腳本解析 [RoarCTF 2019Online Proxy]sql巧妙盲注 解題 在源代碼界面發現&#xff1a;Current Ip 我們會聯想到&#xff1a;X-Forwarded-For來修改ip&#xff1a; 結果我們發現&#xff0c;response會講Last Ip回顯出…

Semaphore 原理分析

分析下SemaPhore吧&#xff0c;也是基于AQS實現的&#xff0c;對并發進行控制的工具類&#xff0c;看下其怎么實現的&#xff0c; Semaphore semaphore new Semaphore(3);semaphore.acquire();semaphore.release();Semaphore 常用于控制并發量&#xff0c;比如這里設置為3&…

請教電路高手幫忙Review一下是否可行?

想要實現STM32 3.3V GPIO 控制5V電源通斷&#xff0c;默認狀態為&#xff1a;接通。 使用如下電路圖有無問題&#xff1f;參數是否需要調整&#xff1f;

8.14 ARM

1.練習一 .text 文本段 .global _start 聲明一個_start函數入口 _start: _start標簽&#xff0c;相當于C語言中函數mov r0,#0x2mov r1,#0x3cmp r0,r1beq stopsubhi r0,r0,r1subcc r1,r1,r0stop: stop標簽&#xff0c;相當于C語言中函數b stop 跳轉到stop標簽下的第一條…

C++的IO流

C語言的輸入與輸出 C語言中我們用到的最頻繁的輸入輸出方式就是scanf ()與printf()。 scanf(): 從標準輸入設備(鍵盤)讀取數據&#xff0c;并將值存放在變量中。printf(): 將指定的文字/字符串輸出到標準輸出設備(屏幕)。注意寬度輸出和精度輸出控制。C語言借助了相應的緩沖區來…

javaScript:如何獲取html中的元素對象

目錄 前言&#xff1a; 方法 1.通過id獲取元素 2.通過標簽名獲取元素 3.通過類名class獲取元素 獲取body的方法 1.document.getElementsByTagName(body)[0] 2.document.body 相關代碼 前言&#xff1a; 通過獲取HTML中的元素對象&#xff0c;JavaScript可以對網頁進行動…

學生成績管理系統V1.0

某班有最多不超過30人&#xff08;具體人數由鍵盤輸入&#xff09;參加某門課程的考試&#xff0c;用一維數組作函數參數編程實現如下學生成績管理&#xff1a; &#xff08;1&#xff09;錄入每個學生的學號和考試成績&#xff1b; &#xff08;2&#xff09;計算課程的總分…

Vue [Day7]

文章目錄 自定義創建項目ESlint 代碼規范vuex 概述創建倉庫向倉庫提供數據使用倉庫中的數據通過store直接訪問通過輔助函數 mapState&#xff08;簡化&#xff09;mutations傳參語法(同步實時輸入&#xff0c;實時更新輔助函數 mapMutationsaction &#xff08;異步輔助函數map…

IntelliJ IDEA 2021/2022關閉雙擊shift全局搜索

我這里演示的是修改&#xff0c;刪除是右鍵的時候選擇Remove就好了 IDEA左上角 File-->Settings 找到Navigate -->Search Everywhere &#xff0c;右鍵添加快捷鍵。 OK --> Apply應用

C語言學習之const關鍵字的使用

const修飾變量&#xff1a;const關鍵字修飾變量時&#xff0c;該變量表示是一個只讀變量&#xff0c;不能通過變量名修改變量的值&#xff1b;案例&#xff1a; const int m 20; int const n 30; m 30;//不可以賦值&#xff0c;因為m是只讀變量 n 20;//不可以賦值&#xf…

初始多線程

目錄 認識線程 線程是什么&#xff1a; 線程與進程的區別 Java中的線程和操作系統線程的關系 創建線程 繼承Thread類 實現Runnable接口 其他變形 Thread類及其常見方法 Thread的常見構造方法 Thread類的幾個常見屬性 Thread類常用的方法 啟動一個線程-start() 中斷…

前端食堂技術周刊第 93 期:7 月登陸 Web 平臺的新功能、Node.js 工具箱、Nuxt3 開發技巧、MF 重構方案

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;橙橙冰萃美式 食堂技術周刊倉庫地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童歐巴。歡迎來到前端食堂技術周刊&#xff0c;我們先來…

Android多屏幕支持-Android12

Android多屏幕支持-Android12 1、概覽及相關文章2、屏幕窗口配置2.1 配置xml文件2.2 DisplayInfo#uniqueId 屏幕標識2.3 adb查看信息 3、配置文件解析3.1 xml字段讀取3.2 簡要時序圖 4、每屏幕焦點 android12-release 1、概覽及相關文章 AOSP > 文檔 > 心主題 > 多屏…

如何利用DeepBook自動做市商(AMM),發揮應用的最大價值

盡管Sui宣布DeepBook作為其首個本地流動性層&#xff0c;即中央限價單簿&#xff08;Central Limit Order Book&#xff0c;CLOB&#xff09;&#xff0c;但自動做市商&#xff08;Automated Market Maker&#xff0c;AMM&#xff09;平臺也可以在Sui上發揮作用。事實上&#x…

理解jvm之對象已死怎么判斷?

目錄 引用計數算法 什么是引用 可達性分析算法&#xff08;用的最多的&#xff09; 引用計數算法 定義&#xff1a;在對象中添加一個引用計數器&#xff0c;每當有一個地方引用它時&#xff0c;計數器值就加一&#xff1b;當引用失效時&#xff0c;計數器值就減一&#xff1…

文件批量改名高手:輕松刪除文件名,僅保留編號!

您是否經常需要對大量文件進行命名調整&#xff1f;是否為繁瑣的手動操作而感到厭煩&#xff1f;現在&#xff0c;我們的智能批量文件改名工具為您提供了一種簡單而高效的解決方案&#xff01;只需幾步操作&#xff0c;您就能輕松刪除原有的文件名&#xff0c;僅保留編號&#…

YOLO相關原理(文件結構、視頻檢測等)

超參數進化(hyperparameter evolution) 超參數進化是一種使用了genetic algorithm&#xff08;GA&#xff09;遺傳算法進行超參數優化的一種方法。 YOLOv5的文件結構 images文件夾內的文件和labels中的文件存在一一對應關系 激活函數&#xff1a;非線性處理單元 activation f…

c#學習路線

文章目錄 .net coreN層架構大項目實戰高性能互聯網項目架構c#高級編程各種主流框架分布式通信SSO單點登錄+權限管理系統實戰N層架構WEB安全ASP.NET MVCNoSQLORM框架c#6和c#7新語法VS插件分享項目管理三層項目實戰三層架構ASP.NET基礎數據庫和ASP.NETADO.NET計算機基礎計算機硬件…

C# 11 中的新增功能

本文內容 泛型屬性泛型數學支持數值 IntPtr 和 UIntPtr字符串內插中的換行符 顯示另外 11 個 C# 11 中增加了以下功能&#xff1a; 原始字符串字面量泛型數學支持泛型屬性UTF-8 字符串字面量字符串內插表達式中的換行符列表模式文件本地類型必需的成員自動默認結構常量 str…

【設計模式】MVC 模式

MVC 模式代表 Model-View-Controller&#xff08;模型-視圖-控制器&#xff09; 模式。這種模式用于應用程序的分層開發。 Model&#xff08;模型&#xff09; - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯&#xff0c;在數據變化時更新控制器。View&#xff…