操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    家好,很高興又見面了,我是"高級前端?進階?",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發!

    高級前端?進階

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

    PDFKit

    PDFKit 是用于 Node 和瀏覽器環境的 JavaScript PDF 生成庫。 借助于 PDFKit,開發者可以輕松創建復雜的、多頁的、可打印的文檔。 API 可鏈式調用,包括眾多底層功能和高級功能的抽象。 PDFKit API 被設計為盡量簡單的,但是通過函數組合可以快速生成復雜文檔。

    PDFKit的典型特征包括:

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

    除了上面列舉的功能外,包括:圖案填充、用于創建表格和布局內容的高級 API、更多性能優化已經在陸續開發中,在不久后就會發布。下面的示例展示了使用PDFKit的簡單示例

    const PDFDocument=require('pdfkit');
    const fs=require('fs');
    // 創建文檔
    const doc=new PDFDocument();
    // 將其輸出通過管道傳輸到某個地方,例如文件或 HTTP 響應
    // 請參閱下面的瀏覽器用法
    doc.pipe(fs.createWriteStream('output.pdf'));
    // 嵌入字體,設置字體大小,并渲染一些文本
    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');
    // 應用一些變換并使用“奇偶”填充規則渲染 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+,是一個優秀的前端開源項目。

    pdfmake

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

    • 支持瀏覽器和Node.js環境:直接在瀏覽器中打印 PDF 或將其委托給 NodeJS 后端。 在這兩種情況下使用相同的文檔定義。
    • 完全聲明:忘記手動 x、y 計算。 聲明文檔結構并讓 pdfmake 完成剩下的工作。
    • 強大的布局引擎:使用段落、列、列表、表格、畫布等,還支持開發者聲明自己的樣式,使用自定義字體,構建 DSL 并擴展框架。

    在功能層面,pdfmake已經實現了以下諸多特征:

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

    目前 pdfmake 已經支持眾多主流瀏覽器環境,包括:

    • 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() {
      // 在回調之前創建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+,是一個優秀的前端開源項目。

    jsPDF

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

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

    使用 jsPDF 非常簡單,首先安裝相關的包即可:

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

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

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

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

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

    //橫向輸出,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環境中,可以通過如下方法進行調用:

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

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

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

    react-pdf

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

    內部結構創建

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

    react-pdf 會處理這個數據結構,開始推斷每個塊在最終文檔中的位置。

    解析樣式

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

    部分預處理涉及單位轉換、樣式繼承和樣式擴展。

    獲取資源

    遍歷內部節點樹以獲取任何所需的字體、圖像或表情符號。

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

    排版文字

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

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

    包裝頁面

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

    react-pdf 在內部使用 Yoga 布局來計算文檔內節點的大小和坐標,并根據一組可自定義的啟發式方法執行分頁。

    渲染

    PDF 文檔本身的創建。 對于這個任務,react-pdf 使用了很棒的 pdfkit。

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

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

    import React from 'react';
    import { Document, Page, Text, View, StyleSheet } from '@react-pdf/renderer';
    // 創建樣式
    const styles=StyleSheet.create({
      page: {
        flexDirection: 'row',
        backgroundColor: '#E4E4E4'
      },
      section: {
        margin: 10,
        padding: 10,
        flexGrow: 1
      }
    });
    // 創建文檔組件
    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環境中可以將文檔保存到一個文件中,比如下面的例子:

    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 標準的平臺,用于解析和渲染 PDF。本質上,PDF.js 是一種使用 HTML5 構建的便攜式文檔格式 (PDF) 查看器, 由社區驅動并由 Mozilla 提供支持。

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

    要使用PDF.js,需要先導入相應的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 來處理加載期間的錯誤,還演示了如何等待頁面加載和渲染。

    // 如果提供了來自遠程服務器的絕對 URL,則配置 CORS
    // 該服務器上的標頭。
    var url='https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf';
    // 通過 <script> 標簽加載,創建訪問 PDF.js 導出的快捷方式。
    var pdfjsLib=window['pdfjs-dist/build/pdf'];
    // 應指定 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 頁面尺寸準備畫布
        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);
    });

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

    本文總結

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

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

    參考資料

    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的界面設計簡潔而直觀,同時提供了豐富的皮膚和主題選項,讓用戶能夠根據個人喜好進行個性化設置。

    2.電子書閱讀器——Vbook

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

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

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

    4.自定義工具——CustomizerGod

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

    5.護眼軟件——CareUEyes

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

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

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

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

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