C#/VB.NET:如何將PDF轉為PDF/A

来源:https://www.cnblogs.com/Carina-baby/archive/2023/03/27/17261090.html
-Advertisement-
Play Games

PDF/A是一種ISO標準的PDF文件格式版本,是為長期保存文件而設計的。它提供了一種工具,使電子文件在長時間之後依然以一種保留其外觀的方式重現,而不管該文件是用什麼工具和系統創建、儲存或製作的。這種保留方式使PDF文件可自我持續。PDF/A通過嵌入在文檔自身內部顯示該文檔的信息(內容、顏色、字體、 ...


PDF/A是一種ISO標準的PDF文件格式版本,是為長期保存文件而設計的。它提供了一種工具,使電子文件在長時間之後依然以一種保留其外觀的方式重現,而不管該文件是用什麼工具和系統創建、儲存或製作的。這種保留方式使PDF文件可自我持續。PDF/A通過嵌入在文檔自身內部顯示該文檔的信息(內容、顏色、字體、圖像,等等),存儲這種自我持續。換句話說,PDF/A文件不要求任何附加的外部信息才能適當地顯示。本文將介紹如何通過C#/VB.NET代碼,以編程方式將PDF轉換為PDF/A-1A、2A、3A、1B、2B 和 3B相容的PDF。

程式環境:

本次測試時,在程式中引入 Free Spire.PDF.dll 文件。

方法1

​​Free Spire.PDF for .NET​​ 下載到本地,解壓,找到 BIN 文件夾下的 Spire.PDF.dll。然後在 Visual Studio 中打開“解決方案資源管理器”,滑鼠右鍵點擊“引用”,“添加引用”,將本地路徑 BIN 文件夾下的 dll 文件添加引用至程式。

方法2:

通過​NuGet​​安裝。可通過以下 2 種方法安裝:

  1. 可以在 Visual Studio 中打開“解決方案資源管理器”,滑鼠右鍵點擊“引用”,“管理 NuGet 包”,然後搜索“Free Spire.PDF”,點擊“安裝”。等待程式安裝完成。

  2. 將以下內容複製到 PM 控制台安裝。

Install-Package FreeSpire.PDF -Version 8.6.0

將PDF轉為PDF/A

將PDF轉換為PDF/A-1A、2A、3A、1B、2B 和 3B相容PDF的詳細步驟如下:

  • 指定輸入文件路徑和輸出文件夾
  • 創建一個 PdfStandardsConverter 實例並將輸入文件作為參數傳入。
  • 使用 PdfStandardsConverter.ToPdfA1A() 方法將輸入文件轉換為 PdfA1A 一致性級別。
  • 使用 PdfStandardsConverter.ToPdfA1B() 方法將輸入文件轉換為 PdfA1B 一致性級別。
  • 使用 PdfStandardsConverter.ToPdfA2A() 方法將輸入文件轉換為 PdfA2A 一致性級別。
  • 使用 PdfStandardsConverter.ToPdfA2B() 方法將輸入文件轉換為 PdfA2B 一致性級別。
  • 使用 PdfStandardsConverter.ToPdfA3A() 方法將輸入文件轉換為 PdfA3A 一致性級別。
  • 使用 PdfStandardsConverter.ToPdfA3B() 方法將輸入文件轉換為 PdfA3B 一致性級別。

完整代碼

【C#】

using System;
using Spire.Pdf.Conversion;

namespace ConvertPdf2PdfA
{
    class Program
    {
        static void Main(string[] args)
        {
            //指定輸入文檔路徑
            String inputFile = "成都第31屆世界大學生夏季運動會.pdf";

            //指定輸出文檔的存放文件夾
            String outputFolder = @"D:\VS2022項目\free PDF\bin\Debug\輸出結果\";

            //創建PdfStandardsConverter對象,傳入輸入文檔路徑
            PdfStandardsConverter converter = new PdfStandardsConverter(inputFile);

            //轉換為PdfA1A
            converter.ToPdfA1A(outputFolder + "ToPdfA1A.pdf");

            //轉換為PdfA1B
            converter.ToPdfA1B(outputFolder + "ToPdfA1B.pdf");

            //轉換為PdfA2A
            converter.ToPdfA2A(outputFolder + "ToPdfA2A.pdf");

            //轉換為PdfA2B
            converter.ToPdfA2B(outputFolder + "ToPdfA2B.pdf");

            //轉換為PdfA3A
            converter.ToPdfA3A(outputFolder + "ToPdfA3A.pdf");

            //轉換為PdfA3B
            converter.ToPdfA3B(outputFolder + "ToPdfA3B.pdf");
        }
    }
}

【VB.NET】

Imports Spire.Pdf.Conversion

Namespace ConvertPdf2PdfA
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '指定輸入文檔路徑
            Dim inputFile = "成都第31屆世界大學生夏季運動會.pdf"

            '指定輸出文檔的存放文件夾
            Dim outputFolder = "D:\VS2022項目\free PDF\bin\Debug\輸出結果\"

            '創建PdfStandardsConverter對象,傳入輸入文檔路徑
            Dim converter As PdfStandardsConverter = New PdfStandardsConverter(inputFile)

            '轉換為PdfA1A
            converter.ToPdfA1A(outputFolder & "ToPdfA1A.pdf")

            '轉換為PdfA1B
            converter.ToPdfA1B(outputFolder & "ToPdfA1B.pdf")

            '轉換為PdfA2A
            converter.ToPdfA2A(outputFolder & "ToPdfA2A.pdf")

            '轉換為PdfA2B
            converter.ToPdfA2B(outputFolder & "ToPdfA2B.pdf")

            '轉換為PdfA3A
            converter.ToPdfA3A(outputFolder & "ToPdfA3A.pdf")

            '轉換為PdfA3B
            converter.ToPdfA3B(outputFolder & "ToPdfA3B.pdf")
        End Sub
    End Class
End Namespace

效果圖

—本文完—


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Spdlog 是一個快速、非同步的 C++ 日誌庫,被廣泛應用於 C++ 項目中。在這篇文章中,我們將探討 Spdlog 日誌庫的實現原理。 Spdlog 的結構 Spdlog 由五個主要組件構成:Loggers、Sinks、Formatters、Async Logger 和 Registry。每個組 ...
  • TiDB 基礎使用 TiDB dashboard使用 TiDB Dashboard 是 TiDB 自 4.0 版本起提供的圖形化界面,可用於監控及診斷 TiDB 集群。TiDB Dashboard 內置於 TiDB 的 PD 組件中,無需獨立部署。 集群概況 查看集群整體 QPS 數值、執行耗時、消 ...
  • python中index()、find()方法,具體內容如下: index() 方法檢測字元串中是否包含子字元串 str ,該方法與 python find()方法一樣,只不過如果str不在 string中會報一個異常。影響後面程式執行 index()方法語法:str.index(str, beg= ...
  • 基於.NET Core + Jquery實現文件斷點分片上傳 前言 該項目是基於.NET Core 和 Jquery實現的文件分片上傳,沒有經過測試,因為博主沒有那麼大的文件去測試,目前上傳2G左右的文件是沒有問題的。 使用到的技術 Redis緩存技術 Jquery ajax請求技術 為什麼要用到R ...
  • 1. 重寫和覆蓋的定義 1.1 重寫(override)的定義 在C#中,用override關鍵字來重寫一個父類中的虛方法或抽象方法。override關鍵字用於指示編譯器,我要用派生類中的一個方法,重寫基類中的同名方法。通過重寫基類中的方法,可以實現多態性。有關重寫與虛方法和抽象方法的詳細示例,可移 ...
  • 1. 多態性定義 C#中的多態性是OOP(面向對象編程)的一個基本概念,它允許一個對象在不同情況下表現出不同的行為,以增強代碼的可重用性和靈活性。 根據網上的教程,我們得知C#多態性分為兩類,靜態和動態。但實際上,C#沒有嚴格的靜態和動態多態性的分法。之所以這麼分,還是為了我們便於理解,我們沿用這個 ...
  • 1. 抽象方法與虛方法的區別 先說兩者最大的區別:抽象方法是需要子類去實現的。虛方法是已經實現了的,可以被子類覆蓋,也可以不覆蓋,取決於需求。因為抽象類無法實例化,所以抽象方法沒有辦法被調用,也就是說抽象方法永遠不可能被實現。 如果需要瞭解虛方法及抽象方法具體的定義和語句,請移步:C#多態性學習,虛 ...
  • 前段時間小編同事面試遇到了這個問題,由於同事比較菜並未很完美的完成這個問題,本文就替小編來解答一下。在C#中有多種方式類遍歷指定文件夾中的文件,本文將介紹三種方式。 一、使用Directory類的GetFiles方法: 示例代碼如下: string[] files = Directory.GetFi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...