欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    家好,很高興又見面了,我是"高級前端?進階?",由我?guī)е蠹乙黄痍P(guān)注前端前沿、深入前端底層技術(shù),大家一起進步,也歡迎大家關(guān)注、點贊、收藏、轉(zhuǎn)發(fā)!

    高級前端?進階

    PDF 目前已成為網(wǎng)絡(luò)文檔共享的基本元素,本文將帶著大家細數(shù)前端圈最火的PDF開源庫,話不多說,直接開始。

    PDFKit

    PDFKit 是用于 Node 和瀏覽器環(huán)境的 JavaScript PDF 生成庫。 借助于 PDFKit,開發(fā)者可以輕松創(chuàng)建復(fù)雜的、多頁的、可打印的文檔。 API 可鏈?zhǔn)秸{(diào)用,包括眾多底層功能和高級功能的抽象。 PDFKit API 被設(shè)計為盡量簡單的,但是通過函數(shù)組合可以快速生成復(fù)雜文檔。

    PDFKit的典型特征包括:

    • 支持矢量圖形:類似 HTML5 畫布的 API;路徑操作;用于輕松創(chuàng)建路徑的 SVG 路徑解析器;轉(zhuǎn)換Transform;線性和徑向漸變
    • 文本:換行;文本對齊;項目符號列表等眾多功能
    • 字體嵌入:支持 TrueType (.ttf)、OpenType (.otf)、WOFF、WOFF2、TrueType Collections (.ttc) 和 Datafork TrueType (.dfont) 字體;字體子集
    • 圖像嵌入:支持 JPEG 和 PNG 文件(包括索引 PNG 和具有透明度的 PNG)
    • 注釋:鏈接;筆記;強調(diào);下劃線
    • AcroForms
    • 大綱
    • PDF安全:加密;訪問權(quán)限(打印、復(fù)制、修改、注釋、表格填寫、內(nèi)容可訪問性、文檔組裝)
    • 輔助功能支持(標(biāo)記內(nèi)容、邏輯結(jié)構(gòu)、標(biāo)記 PDF、PDF/UA)

    除了上面列舉的功能外,包括:圖案填充、用于創(chuàng)建表格和布局內(nèi)容的高級 API、更多性能優(yōu)化已經(jīng)在陸續(xù)開發(fā)中,在不久后就會發(fā)布。下面的示例展示了使用PDFKit的簡單示例

    const PDFDocument=require('pdfkit');
    const fs=require('fs');
    // 創(chuàng)建文檔
    const doc=new PDFDocument();
    // 將其輸出通過管道傳輸?shù)侥硞€地方,例如文件或 HTTP 響應(yīng)
    // 請參閱下面的瀏覽器用法
    doc.pipe(fs.createWriteStream('output.pdf'));
    // 嵌入字體,設(shè)置字體大小,并渲染一些文本
    doc
      .font('fonts/PalatinoBold.ttf')
      .fontSize(25)
      .text('Some text with an embedded font!', 100, 100);
    // 添加圖像,將其限制為給定大小,并將其垂直和水平居中
    doc.image('path/to/image.png', {
      fit: [250, 300],
      align: 'center',
      valign: 'center'
    });
    // 添加另外一頁
    doc
      .addPage()
      .fontSize(25)
      .text('Here is some vector graphics...', 100, 100);
    // 繪制三角形
    doc
      .save()
      .moveTo(100, 150)
      .lineTo(100, 250)
      .lineTo(200, 250)
      .fill('#FF3300');
    // 應(yīng)用一些變換并使用“奇偶”填充規(guī)則渲染 SVG 路徑
    doc
      .scale(0.6)
      .translate(470, -380)
      .path('M 250,75 L 323,301 131,161 369,161 177,301 z')
      .fill('red', 'even-odd')
      .restore();
    // 添加一些帶有注釋的文本
    doc
      .addPage()
      .fillColor('blue')
      .text('Here is a link!', 100, 100)
      .underline(100, 100, 160, 27, { color: '#0000FF' })
      .link(100, 100, 160, 27, 'http://google.com/');
    // 完成 PDF 文件
    doc.end();

    目前 PDFKit 在Github上有超過8.7k的star、1.1k的fork、超過64.1k的項目依賴量,代碼貢獻者80+,是一個優(yōu)秀的前端開源項目。

    pdfmake

    純 JavaScript 中的客戶端、服務(wù)器端 PDF 操作庫。pdfmake具有以下明顯特性:

    • 支持瀏覽器和Node.js環(huán)境:直接在瀏覽器中打印 PDF 或?qū)⑵湮薪o NodeJS 后端。 在這兩種情況下使用相同的文檔定義。
    • 完全聲明:忘記手動 x、y 計算。 聲明文檔結(jié)構(gòu)并讓 pdfmake 完成剩下的工作。
    • 強大的布局引擎:使用段落、列、列表、表格、畫布等,還支持開發(fā)者聲明自己的樣式,使用自定義字體,構(gòu)建 DSL 并擴展框架。

    在功能層面,pdfmake已經(jīng)實現(xiàn)了以下諸多特征:

    • 換行
    • 文本對齊(左、右、居中、對齊),
    • 編號和項目符號列表,
    • 表和列:自動/固定/星形寬度,列跨度和行跨度,在分頁的情況下自動重復(fù)標(biāo)題,
    • 圖像和矢量圖形
    • 方便的樣式和樣式繼承
    • 頁眉和頁腳:靜態(tài)或動態(tài)內(nèi)容,訪問當(dāng)前頁碼和頁數(shù),
    • 背景層支持
    • 頁面尺寸和方向
    • 邊距
    • 自定義分頁符
    • 字體嵌入
    • 支持復(fù)雜的多級(嵌套)結(jié)構(gòu)
    • 目錄
    • 用于打開/打印/下載生成的 PDF 的輔助方法
    • PDF 元數(shù)據(jù)(例如作者、主題)的設(shè)置

    目前 pdfmake 已經(jīng)支持眾多主流瀏覽器環(huán)境,包括:

    • Internet Explorer 11
    • Edge 12+
    • Firefox
    • Chrome
    • Chrome (Android)
    • Opera
    • Safari (iOS)
    • Safari (iOS) iPhone

    在Node.js的版本支持上也是非常廣泛,具體如下:

    • 12 LTS (End-of-life: April 2022)
    • 14 LTS (End-of-life: April 2023)
    • 16 LTS (End-of-life: April 2024)
    • 18 LTS (End-of-life: April 2025)

    而 pdfmake的 0.1.x 版本支持 Node.js 8 LTS、10 LTS、12 LTS、14 LTS。下面是異步使用 pdfmake 的示例:

    $scope.generatePdf=function() {
      // 在回調(diào)之前創(chuàng)建window
      var win=window.open('', '_blank');
      $http.post('/someUrl', data).then(function(response) {
        // pass the "win" argument
        pdfMake.createPdf(docDefinition).open({}, win);
      });
    };

    目前 pdfmake 在Github上有超過10.8k的star、2k的fork、超過67.9k的項目依賴量,代碼貢獻者84+,是一個優(yōu)秀的前端開源項目。

    jsPDF

    jsPDF 是一個基于 HTML5 的客戶端解決方案,用于生成各種用途的 PDF 文檔,jsPDF 是一個使用 JavaScript 語言生成 PDF 的開源庫。

    開發(fā)者可以在 Firefox 插件,服務(wù)端腳本或是瀏覽器腳本中使用它,客戶端 Safari 和 iPhone Safari 支持得最好,其次是 Opera 和 Windows 下的 Firefox3 等。IE 暫不支持。

    使用 jsPDF 非常簡單,首先安裝相關(guān)的包即可:

    npm install jspdf --save
    // or
    yarn add jspdf

    或者引入相應(yīng)的CDN資源:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
    <script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script>
    // unpkg版本

    這個包的 dist 文件夾包含不同類型的文件:

    • jspdf.es.*.js:現(xiàn)代 ES2015 模塊格式。
    • jspdf.node.*.js:在 Node 中運行,使用文件操作來加載/保存文件而不是瀏覽器 API
    • jspdf.umd.*.js:UMD模塊格式, 用于 AMD 或腳本標(biāo)簽加載。
    • polyfills*.js:舊版瀏覽器(如 Internet Explorer)所需的 polyfill,es 變體簡單地從 core-js 導(dǎo)入所有必需的 polyfill,umd 變體是自包含的。

    通常沒有必要在導(dǎo)入語句中指定確切的文件。 構(gòu)建工具或 Node 會自動找出正確的文件,因此導(dǎo)入 jspdf 就可以了。

    import { jsPDF } from "jspdf";
    // 默認導(dǎo)出為a4紙,縱向,使用毫米為單位
    const doc=new jsPDF();
    
    doc.text("Hello world!", 10, 10);
    doc.save("a4.pdf");

    如果要更改紙張大小、方向或單位,可以執(zhí)行以下操作:

    //橫向輸出,2×4 英寸
    const doc=new jsPDF({
      orientation: "landscape",
      unit: "in",
      format: [4, 2]
    });
    
    doc.text("Hello world!", 1, 1);
    doc.save("two-by-four.pdf");

    如果是在Node.js環(huán)境中,可以通過如下方法進行調(diào)用:

    const { jsPDF }=require("jspdf"); 
    // 會自動加載Node版本
    
    const doc=new jsPDF();
    doc.text("Hello world!", 10, 10);
    doc.save("a4.pdf");
    // 將文件保存在當(dāng)前工作目錄中

    jsPDF 也支持在TypeScript、Angular、Webpack、React等進行使用,更多使用配置可以參考官方文檔,本文不再過多展開。

    目前 jsPDF 在Github 有超過26.5k的star、4.5k的fork、超過75.1k的項目依賴量,代碼貢獻者192+,是一個非常優(yōu)秀的前端開源項目。

    react-pdf

    react-pdf 包用于使用 React 創(chuàng)建 PDF,如果開發(fā)者想顯示現(xiàn)有的 PDF,可以嘗試使用 react-pdf。對于react-pdf來說,在高層次上,文檔創(chuàng)建過程由 6 個具體步驟組成。

    內(nèi)部結(jié)構(gòu)創(chuàng)建

    將 React 元素樹轉(zhuǎn)換為每個組件類型的適當(dāng)內(nèi)部實例,比如涉及保存這些(父子)節(jié)點之間的關(guān)系。除了 Document 之外,所有節(jié)點都將代表文檔中的一個塊,具有高度、寬度、填充和邊距。

    react-pdf 會處理這個數(shù)據(jù)結(jié)構(gòu),開始推斷每個塊在最終文檔中的位置。

    解析樣式

    此步驟涉及預(yù)處理節(jié)點樣式,以及為用戶未提供的所需屬性定義默認值。 這樣,所有后續(xù)步驟都可以在樹中定義所有必需樣式的基礎(chǔ)上進行。

    部分預(yù)處理涉及單位轉(zhuǎn)換、樣式繼承和樣式擴展。

    獲取資源

    遍歷內(nèi)部節(jié)點樹以獲取任何所需的字體、圖像或表情符號。

    react-pdf 會異步運行所有這些請求,但在所有請求完成(成功或失敗)之前不會繼續(xù)。

    排版文字

    到這一步,react-pdf 已經(jīng)加載了所有字體,可以將文本布局到段落中。

    這是一個關(guān)鍵而復(fù)雜的步驟:首先使用適當(dāng)?shù)淖煮w系列和大小將字符轉(zhuǎn)換為字形,嵌入圖像或表情符號圖像(如果存在),并最終將它們分成幾行,根據(jù)空格或根據(jù)語言(或自定義)規(guī)則分解單詞

    包裝頁面

    這是最耗時的步驟,因為它不僅涉及計算每個元素在文檔中的位置以及需要多少空間,而且還要將這些元素拆分到不同的頁面中。

    react-pdf 在內(nèi)部使用 Yoga 布局來計算文檔內(nèi)節(jié)點的大小和坐標(biāo),并根據(jù)一組可自定義的啟發(fā)式方法執(zhí)行分頁。

    渲染

    PDF 文檔本身的創(chuàng)建。 對于這個任務(wù),react-pdf 使用了很棒的 pdfkit。

    一旦進入這個階段,react-pdf 就有了內(nèi)部樹結(jié)構(gòu),其中包含生成文檔所需的所有數(shù)據(jù)。 剩下的就是決定要如何處理這些數(shù)據(jù)。 這將根據(jù)開發(fā)者使用的綁定而有所不同,但基本上它意味著顯示或保存它。

    react-pdf 的使用也是非常簡單,比如下面的示例:

    import React from 'react';
    import { Document, Page, Text, View, StyleSheet } from '@react-pdf/renderer';
    // 創(chuàng)建樣式
    const styles=StyleSheet.create({
      page: {
        flexDirection: 'row',
        backgroundColor: '#E4E4E4'
      },
      section: {
        margin: 10,
        padding: 10,
        flexGrow: 1
      }
    });
    // 創(chuàng)建文檔組件
    const MyDocument=()=> (
      <Document>
        <Page size="A4" style={styles.page}>
          <View style={styles.section}>
            <Text>Section #1</Text>
          </View>
          <View style={styles.section}>
            <Text>Section #2</Text>
          </View>
        </Page>
      </Document>
    );

    也可以使用 ReactDOM.render 方法進行渲染:

    import React from 'react';
    import ReactDOM from 'react-dom';
    import { PDFViewer } from '@react-pdf/renderer';
    
    const App=()=> (
      <PDFViewer>
        <MyDocument />
      </PDFViewer>
    );
    
    ReactDOM.render(<App />, document.getElementById('root'));

    在Node.js環(huán)境中可以將文檔保存到一個文件中,比如下面的例子:

    import React from 'react';
    import ReactPDF from '@react-pdf/renderer';
    
    ReactPDF.render(<MyDocument />, `${__dirname}/example.pdf`);

    目前 react-pdf 在Github上有超過12.3k的star、1k的fork、超過7.2k的項目依賴量,代碼貢獻者107+,是一個不錯的前端開源項目。

    PDF.js

    PDF.js 是一個通用的、基于 Web 標(biāo)準(zhǔn)的平臺,用于解析和渲染 PDF。本質(zhì)上,PDF.js 是一種使用 HTML5 構(gòu)建的便攜式文檔格式 (PDF) 查看器, 由社區(qū)驅(qū)動并由 Mozilla 提供支持。

    開發(fā)者如果需要在 Web 應(yīng)用程序中使用 PDF.js,可以選擇使用庫的預(yù)構(gòu)建版本或從源代碼構(gòu)建它。 PDF.js 在 pdfjs-dist 名稱下提供用于 NPM 和 Bower 的預(yù)構(gòu)建版本。

    要使用PDF.js,需要先導(dǎo)入相應(yīng)的CDN資源。

    <script src="https://www.jsdelivr.com/package/npm/pdfjs-dist"></script>
    <script src="https://cdnjs.com/libraries/pdf.js"></script>
    <script src="https://unpkg.com/pdfjs-dist/"></script>

    下面示例演示了如何使用 promises 來處理加載期間的錯誤,還演示了如何等待頁面加載和渲染。

    // 如果提供了來自遠程服務(wù)器的絕對 URL,則配置 CORS
    // 該服務(wù)器上的標(biāo)頭。
    var url='https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf';
    // 通過 <script> 標(biāo)簽加載,創(chuàng)建訪問 PDF.js 導(dǎo)出的快捷方式。
    var pdfjsLib=window['pdfjs-dist/build/pdf'];
    // 應(yīng)指定 workerSrc 屬性。
    pdfjsLib.GlobalWorkerOptions.workerSrc='//mozilla.github.io/pdf.js/build/pdf.worker.js';
    // 異步下載PDF
    var loadingTask=pdfjsLib.getDocument(url);
    loadingTask.promise.then(function(pdf) {
      console.log('PDF loaded');
      // 獲取第一頁page
      var pageNumber=1;
      pdf.getPage(pageNumber).then(function(page) {
        console.log('Page loaded');
        var scale=1.5;
        var viewport=page.getViewport({scale: scale});
        // 使用 PDF 頁面尺寸準(zhǔn)備畫布
        var canvas=document.getElementById('the-canvas');
        var context=canvas.getContext('2d');
        canvas.height=viewport.height;
        canvas.width=viewport.width;
        // Render PDF page into canvas context
        var renderContext={
          canvasContext: context,
          viewport: viewport
        };
        var renderTask=page.render(renderContext);
        renderTask.promise.then(function () {
          console.log('Page rendered');
        });
      });
    }, function (reason) {
      // PDF loading error
      console.error(reason);
    });

    關(guān)于 PDF.js 的更多用法可以參考文末資料,這里不再過多展開。目前 PDF.js 在Github上有超過42.5k的star、9.4k的fork、215的項目依賴量,代碼貢獻者360+,是一個優(yōu)秀的前端開源項目。

    本文總結(jié)

    本文主要和大家介紹下全網(wǎng)最火的 5+ 前端 PDF 處理開源庫。相信通過本文的閱讀,大家對 各個 PDF 處理庫會有一個初步的了解。

    因為篇幅有限,文章并沒有過多展開,如果有興趣,可以在我的主頁繼續(xù)閱讀,同時文末的參考資料提供了大量優(yōu)秀文檔以供學(xué)習(xí)。最后,歡迎大家點贊、評論、轉(zhuǎn)發(fā)、收藏!

    參考資料

    https://github.com/foliojs/pdfkit

    http://pdfkit.org/

    https://pdfmake.github.io/docs/0.1/getting-started/client-side/methods/

    https://github.com/bpampuch/pdfmake

    https://parall.ax/products/jspdf

    https://github.com/parallax/jsPDF

    https://react-pdf.org/rendering-process

    https://mozilla.github.io/pdf.js/examples/index.html#interactive-examples(眾多示例)

    https://www.nicesnippets.com/blog/how-to-create-pdf-file-in-nodejs

    https://github.com/mozilla/pdf.js

    封面圖來自:https://www.nicesnippets.com/blog/how-to-create-pdf-file-in-nodejs

    今天我要為大家推薦五款小眾而且小體積的WIN10小工具,它們可以讓你的電腦使用更加方便和高效,而且不占用太多的空間和資源,非常適合輕量級的辦公和娛樂。

    1.音樂播放器——MusicBee

    MusicBee是一款功能全面且高度可定制的音樂播放器軟件。它支持多種音頻格式,提供強大的音樂庫管理功能,用戶可以輕松整理、搜索和播放自己的音樂收藏。MusicBee的界面設(shè)計簡潔而直觀,同時提供了豐富的皮膚和主題選項,讓用戶能夠根據(jù)個人喜好進行個性化設(shè)置。

    2.電子書閱讀器——Vbook

    Vbook是一款功能強大的電子書閱讀器軟件,專為閱讀愛好者打造。它支持多種電子書格式,包括EPUB、PDF、MOBI等,讓用戶能夠輕松打開和閱讀各種電子書資源。Vbook提供了舒適的閱讀界面和個性化的閱讀設(shè)置,用戶可以調(diào)整字體大小、背景顏色、亮度等參數(shù),以獲得最佳的閱讀體驗。

    3.微信空號檢測——燃精靈

    如果你想要知道全球200多個國家和地區(qū)的手機號碼中哪些有微信,燃精靈是你的好助手。燃精靈是一款優(yōu)秀的微信空號檢測軟件,讓你只需將號碼段導(dǎo)入云端,就能過濾出有微信的號碼,從而準(zhǔn)確抓住潛在客戶。搜索燃精靈,填寫推薦碼6666即可使用,飛機@RJL8888。

    4.自定義工具——CustomizerGod

    CustomizerGod是一款功能豐富的個性化定制工具軟件。它允許用戶根據(jù)個人喜好和需求,對電腦界面進行全方位的自定義。無論是更換主題、調(diào)整圖標(biāo)、修改字體,還是定制窗口樣式和顏色,CustomizerGod都能輕松滿足。它的操作界面簡潔直觀,同時提供了大量的自定義選項和高級設(shè)置,讓用戶能夠打造出獨一無二的個性化電腦界面。

    5.護眼軟件——CareUEyes

    CareUEyes是一款專注于保護用戶視力的護眼軟件。它通過智能調(diào)節(jié)屏幕亮度、色溫等參數(shù),有效減少長時間使用電腦對眼睛的傷害。CareUEyes還具備定時提醒功能,能夠定期提醒用戶休息眼睛,避免長時間連續(xù)使用電腦。它還提供了多種護眼模式和過濾效果,讓用戶在不同場景下都能獲得舒適的視覺體驗。

    希望這5款小工具能給你帶來新的啟發(fā),讓你的WIN10系統(tǒng)更加高效和個性化,如果有特別的需要可以在評論區(qū)給我留言。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有