翻譯|使用教程|編輯:胡濤|2023-02-24 10:13:12.433|閱讀 161 次
概述:本教程介紹如何使用 LEADTOOLS SDK 在 C# Windows 控制臺(tái)應(yīng)用程序中提取包含在 PDF 文件中的附件。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
LEADTOOLS 是一個(gè)綜合工具包的集合,用于將識(shí)別、文檔、醫(yī)療、成像和多媒體技術(shù)整合到桌面、服務(wù)器、平板電腦、網(wǎng)絡(luò)和移動(dòng)解決方案中,是一項(xiàng)企業(yè)級(jí)文檔自動(dòng)化解決方案,有捕捉,OCR,OMR,表單識(shí)別和處理,PDF,打印捕獲,歸檔,注釋和顯示功能。利用業(yè)界領(lǐng)先的圖像處理技術(shù),能夠智能識(shí)別文件,可以用來識(shí)別任何類型的掃描或傳真形式的圖像。
本教程介紹如何使用 LEADTOOLS SDK 在 C# Windows 控制臺(tái)應(yīng)用程序中提取包含在 PDF 文件中的附件。
| 概括 | 本教程介紹如何在 C# Windows 控制臺(tái)應(yīng)用程序中提取 PDF 附件并將它們轉(zhuǎn)換為 PNG 文件。 | 
| 完成時(shí)間 | 30分鐘 | 
| 視覺工作室項(xiàng)目 | |
| 平臺(tái) | C# Windows 控制臺(tái)應(yīng)用程序 | 
| 集成開發(fā)環(huán)境 | 視覺工作室 2017、2019 | 
| 開發(fā)許可 | LEADTOOLS | 
| 用另一種語言試試 | 
 | 
所需知識(shí)
在學(xué)習(xí)從 PDF 中提取附件 - 控制臺(tái) C#教程之前,通過查看添加引用和設(shè)置許可證教程熟悉創(chuàng)建項(xiàng)目的基本步驟。
創(chuàng)建項(xiàng)目并添加 LEADTOOLS 引用從添加引用和設(shè)置許可證教程中創(chuàng)建的項(xiàng)目副本開始。如果您沒有該項(xiàng)目,請(qǐng)按照該教程中的步驟創(chuàng)建它。
所需的參考取決于項(xiàng)目的目的。可以通過以下兩種方法之一(但不能同時(shí)使用)添加引用。
如果使用 NuGet 引用,本教程需要以下 NuGet 包:
如果使用本地 DLL 引用,則需要以下 DLL。
DLL 位于<INSTALL_DIR>\LEADTOOLS22\Bin\Dotnet4\x64:
有關(guān)您的應(yīng)用程序需要哪些 DLL 文件的完整列表,請(qǐng)參閱要包含在您的應(yīng)用程序中的文件。
設(shè)置許可證文件許可證解鎖項(xiàng)目所需的功能。它必須在調(diào)用任何工具包函數(shù)之前設(shè)置。有關(guān)詳細(xì)信息,包括針對(duì)不同平臺(tái)的教程,請(qǐng)參閱設(shè)置運(yùn)行時(shí)許可證。
有兩種類型的運(yùn)行時(shí)許可證:
筆記
添加 LEADTOOLS NuGet 和本地引用以及設(shè)置許可證在添加引用和設(shè)置許可證教程中有更詳細(xì)的介紹。
創(chuàng)建項(xiàng)目、添加參考和設(shè)置許可證后,就可以開始編碼了。
在解決方案資源管理器中,打開Program.cs。將以下語句添加到頂部的 using 塊中Program.cs:
[C#]
using System; using System.Collections.Generic; using System.IO; using Leadtools; using Leadtools.Caching; using Leadtools.Codecs; using Leadtools.Document; using Leadtools.Document.Converter; using Leadtools.Document.Writer;
將以下全局變量添加到類中Program。
[C#]
static FileCache cache; static string OutputDir = "Output";
Program.cs在named中創(chuàng)建一個(gè)新方法ExtractPDFAttachments()。在set license調(diào)用下調(diào)用方法中的方法Main(),如下圖。
[C#]
static void Main(string[] args) 
{ 
    try 
    { 
        SetLicense(); 
        ExtractPDFAttachments(); 
    } 
    catch (Exception ex) 
    { 
        Console.WriteLine(ex.ToString()); 
    } 
    Console.WriteLine("Press any key to exit..."); 
    Console.ReadKey(true); 
} 
static void ExtractPDFAttachments() 
{ 
    cache = new FileCache { CacheDirectory = "\\cache" }; 
 
    List<LEADDocument> documents = new List<LEADDocument>(); 
 
    if (!Directory.Exists(OutputDir)) 
        Directory.CreateDirectory(OutputDir); 
 
    LoadDocumentOptions options = new LoadDocumentOptions 
    { 
        Cache = cache, 
        LoadAttachmentsMode = DocumentLoadAttachmentsMode.AsAttachments 
    }; 
 
    LEADDocument document = DocumentFactory.LoadFromFile(@"FILE PATH TO PDF WITH ATTACHMENTS", options); 
 
    if (document.Pages.Count > 0) 
        documents.Add(document); 
 
    foreach (DocumentAttachment attachment in document.Attachments) 
    { 
        LoadAttachmentOptions attachmentOptions = new LoadAttachmentOptions { AttachmentNumber = attachment.AttachmentNumber, }; 
        LEADDocument loadDocument = document.LoadDocumentAttachment(attachmentOptions); 
        documents.Add(loadDocument); 
    } 
 
    ConvertDocuments(documents, RasterImageFormat.Png); 
} 
在Program類中,添加一個(gè)名為 的新方法ConvertDocuments(IEnumerable<LEADDocument> documents, RasterImageFormat imageFormat)。該方法將在方法內(nèi)部調(diào)用ExtractPDFAttachments(),如上所示。將下面的代碼添加到ConvertDocuments()將 PDF 附件轉(zhuǎn)換為 PNG 文件的方法中。
static void ConvertDocuments(IEnumerable<LEADDocument> documents, RasterImageFormat imageFormat) 
{ 
    DocumentConverter converter = new DocumentConverter(); 
 
    foreach (LEADDocument document in documents) 
    { 
        string name = string.IsNullOrEmpty(document.Name) ? "DocumentAttachment" : document.Name; 
        string outputFile = Path.Combine(OutputDir, $"{name}.{RasterCodecs.GetExtension(imageFormat)}"); 
        int count = 1; 
        while (File.Exists(outputFile)) 
            outputFile = Path.Combine(OutputDir, $"{name}({count++}).{RasterCodecs.GetExtension(imageFormat)}"); 
 
        DocumentConverterJobData jobData = new DocumentConverterJobData 
        { 
            Document = document, 
            Cache = cache, 
            DocumentFormat = DocumentFormat.User, 
            RasterImageFormat = imageFormat, 
            RasterImageBitsPerPixel = 0, 
            OutputDocumentFileName = outputFile, 
        }; 
        DocumentConverterJob job = converter.Jobs.CreateJob(jobData); 
        converter.Jobs.RunJob(job); 
 
        if (job.Errors.Count > 0) 
            foreach (var error in job.Errors) 
                Console.WriteLine($"Error during conversion: {error.Error.Message}\n"); 
        else 
            Console.WriteLine($"Successfully Converted to {outputFile}...\n"); 
    } 
} 
按F5或選擇Debug -> Start Debugging運(yùn)行項(xiàng)目。
如果正確執(zhí)行了這些步驟,應(yīng)用程序?qū)⑦\(yùn)行并將給定 PDF 文件中的所有附件轉(zhuǎn)換為單獨(dú)的 PNG 文件。
以上便是從 PDF 中提取附件 - 控制臺(tái) C#,如果您還有其他疑問,歡迎咨詢我們或者加入我們官方技術(shù)交流群。
歡迎下載|體驗(yàn)更多LEADTOOL產(chǎn)品
	您還可以加入產(chǎn)品技術(shù)交流Q群:731259648
  
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn