LEADTOOLS SDK 解析并枚举 PDF 中的对象 - 控制台 C#

 解析并枚举 PDF 中的对象 - 控制台 C#

本教程介绍如何解析 PDF 文档结构、枚举PDF 对象,以及如何使用 LEADTOOLS SDK 在 C# Windows 控制台应用程序中显示有关对象的信息。

概述 
概括本教程介绍如何在 C# Windows 控制台应用程序中解析 PDF 文档中的对象。
完成时间30分钟
Visual Studio 项目下载教程项目 (2 KB)
平台C# Windows 控制台应用程序
集成开发环境Visual Studio 2017、2019、2022
开发许可证下载 LEADTOOLS
尝试使用其他语言
  • C#:. NET Framework(控制台)

  • Java: Java

所需知识

在开始解析和枚举 PDF 中的对象 - 控制台 C#教程之前,请先查看添加引用和设置许可证教程,熟悉创建项目的基本步骤。


定义

本教程中的PDF 对象包括 PDF 文件中的图像、书签、内部链接、字体和嵌入文件。


创建项目并添加 LEADTOOLS 引用

从“添加引用”和“设置许可证”教程中创建的项目副本开始。如果您没有该项目,请按照该教程中的步骤创建它。

所需的参考文献取决于项目的目的。可以通过以下两种方法之一添加参考文献(但不能同时使用)。

如果使用 NuGet 引用,本教程需要以下 NuGet 包:

  • Leadtools.Pdf

如果使用本地 DLL 引用,则需要以下 DLL。

DLL 位于<INSTALL_DIR>\LEADTOOLS23\Bin\net

  • Leadtools.dll
  • Leadtools.Core.dll
  • Leadtools.Pdf.dll

有关您的应用程序所需的 DLL 文件的完整列表,请参阅应用程序中要包含的文件

设置许可证文件

许可证用于解锁项目所需的功能。必须在调用任何工具包函数之前设置许可证。有关详细信息(包括不同平台的教程),请参阅设置运行时许可证

运行时许可证有两种类型:

  • 评估许可证,在下载评估工具包时获得。它允许对工具包进行评估。
  • 部署许可证。如果需要部署许可证文件和开发者密钥,请参阅获取许可证

注意:在添加引用和设置许可证教程中更详细地介绍了添加 LEADTOOLS NuGet 和本地引用以及设置许可证

添加枚举代码

创建项目、添加参考并设置许可证后,就可以开始编码了。

解决方案资源管理器中,打开Program.cs。将以下语句添加到顶部的 using 块中Program.cs

C#
// Using block at the top 
using Leadtools; 
using Leadtools.Pdf; 

向类中添加以下全局变量:

C#
private static PDFParseDocumentStructureOptions options; 

为类创建五个新方法,Program分别名为ParseImages(PDFDocument document)ParseBookmarks(PDFDocument document)ParseInternalLinks(PDFDocument document)ParseFonts(PDFDocument document)ParseEmbeddedFiles(PDFDocument document)。所有这些方法都用于填充PDFDocument对象的属性并显示与这些属性相关的信息。这些方法将在方法内部调用Main(),如下所示。

C#
static void Main(string[] args) 
{ 
    try 
    { 
        string pdfLocation = @"C:\LEADTOOLS23\Resources\Images\leadtools.pdf"; 
 
        SetLicense(); 
 
        PDFDocument pdfDocument = new PDFDocument(pdfLocation); 
        ParseImages(pdfDocument); 
        ParseBookmarks(pdfDocument); 
        ParseInternalLinks(pdfDocument); 
        ParseFonts(pdfDocument); 
        ParseEmbeddedFiles(pdfDocument); 
    } 
    catch (Exception ex) 
    { 
        Console.WriteLine(ex.ToString()); 
    } 
    Console.Write("Press ENTER to end program"); 
    Console.Read(); 
} 

处理流

要使用 处理文件MemoryStream,请将方法中的现有代码替换Main()为以下内容:

C#
static void Main(string[] args) 
{ 
    try 
    { 
        string pdfLocation = @"C:\LEADTOOLS23\Resources\Images\leadtools.pdf"; 
        byte[] data = File.ReadAllBytes(pdfLocation); 
        using MemoryStream ms = new MemoryStream(data); 
        SetLicense(); 
 
        PDFDocument pdfDocument = new(ms); 
        ParseImages(pdfDocument); 
        ParseBookmarks(pdfDocument); 
        ParseInternalLinks(pdfDocument); 
        ParseFonts(pdfDocument); 
        ParseEmbeddedFiles(pdfDocument); 
 
    } 
    catch (Exception ex) 
    { 
        Console.WriteLine(ex.ToString()); 
    } 
    Console.Write("Press ENTER to end program"); 
    Console.Read(); 
} 

解析图像

将以下代码添加到ParseImages方法中以填充PDFDocument.Images所提供文档的属性并显示对象信息。

C#
private static void ParseImages(PDFDocument document) 
{ 
    options = PDFParseDocumentStructureOptions.Images; 
    document.ParseDocumentStructure(options); 
 
    Console.WriteLine("=======================IMAGES=======================\n"); 
    foreach (PDFImage image in document.Images) 
    { 
        Console.WriteLine("###########################################"); 
        Console.WriteLine($"BitsPerComponent: {image.BitsPerComponent} bits"); 
        Console.WriteLine($"BitsPerPixel: {image.BitsPerPixel} bits"); 
        Console.WriteLine($"ColorDevice: {image.ColorDevice}"); 
        Console.WriteLine($"ComponentCount: {image.ComponentCount}"); 
        Console.WriteLine($"Height: {image.Height}"); 
        Console.WriteLine($"ImageType: {image.ImageType}"); 
        Console.WriteLine($"ObjectNumber: {image.ObjectNumber}"); 
        Console.WriteLine($"PageNumber: {image.PageNumber}"); 
        Console.WriteLine($"StreamLength: {image.StreamLength}"); 
        Console.WriteLine($"StreamOffset: {image.StreamOffset}"); 
        Console.WriteLine($"Width: {image.Width}"); 
        Console.WriteLine("###########################################\n"); 
    } 
    Console.WriteLine("\n====================================================\n"); 
} 

解析书签

将以下代码添加到ParseBookmarks方法中,以将 PDF 书签信息显示到控制台。

C#
private static void ParseBookmarks(PDFDocument document) 
{ 
    options = PDFParseDocumentStructureOptions.Bookmarks; 
    document.ParseDocumentStructure(options); 
 
    Console.WriteLine("=======================BOOKMARKS=======================\n"); 
    foreach (PDFBookmark bookmark in document.Bookmarks) 
    { 
        Console.WriteLine("###########################################"); 
        Console.WriteLine($"BookmarkStyle: {bookmark.BookmarkStyle}"); 
        Console.WriteLine($"Level: {bookmark.Level}"); 
        Console.WriteLine($"TargetPageFitType: {bookmark.TargetPageFitType}"); 
        Console.WriteLine($"TargetPageNumber: {bookmark.TargetPageNumber}"); 
        Console.WriteLine($"TargetPosition: {bookmark.TargetPosition}"); 
        Console.WriteLine($"Title: {bookmark.Title}"); 
        Console.WriteLine("###########################################\n"); 
    } 
    Console.WriteLine("\n====================================================\n"); 
} 

解析内部链接

将以下代码添加到ParseInternalLinks方法中,以将 PDF 内部链接信息显示到控制台。

C#
private static void ParseInternalLinks(PDFDocument document) 
{ 
    options = PDFParseDocumentStructureOptions.InternalLinks; 
    document.ParseDocumentStructure(options); 
 
    Console.WriteLine("=======================INTERNAL LINKS=======================\n"); 
    foreach (PDFInternalLink internalLink in document.InternalLinks) 
    { 
        Console.WriteLine("###########################################"); 
        Console.WriteLine($"BorderColor: {internalLink.BorderColor}"); 
        Console.WriteLine($"BorderDashLength: {internalLink.BorderDashLength}"); 
        Console.WriteLine($"BorderWidth: {internalLink.BorderWidth}"); 
        Console.WriteLine($"SourceBounds: {internalLink.SourceBounds}"); 
        Console.WriteLine($"SourcePageNumber: {internalLink.SourcePageNumber}"); 
        Console.WriteLine($"TargetPageFitType: {internalLink.TargetPageFitType}"); 
        Console.WriteLine($"TargetPageNumber: {internalLink.TargetPageNumber}"); 
        Console.WriteLine($"TargetPosition: {internalLink.TargetPosition}"); 
        Console.WriteLine($"TargetZoomPercent: {internalLink.TargetZoomPercent}%"); 
        Console.WriteLine("###########################################\n"); 
    } 
    Console.WriteLine("\n==========================================================\n"); 
} 

解析字体

将以下代码添加到ParseFonts方法中,以将 PDF 字体信息显示到控制台。

C#
private static void ParseFonts(PDFDocument document) 
{ 
    options = PDFParseDocumentStructureOptions.Fonts; 
    document.ParseDocumentStructure(options); 
 
    Console.WriteLine("=======================FONTS=======================\n"); 
    foreach (PDFFont font in document.Fonts) 
    { 
        Console.WriteLine("###########################################"); 
        Console.WriteLine($"DescendantCID: {font.DescendantCID}"); 
        Console.WriteLine($"EmbeddingType: {font.EmbeddingType}"); 
        Console.WriteLine($"Encoding: {font.Encoding}"); 
        Console.WriteLine($"FaceName: {font.FaceName}"); 
        Console.WriteLine($"FontType: {font.FontType}"); 
        Console.WriteLine("###########################################\n"); 
    } 
    Console.WriteLine("\n==================================================\n"); 
} 

解析嵌入文件

将以下代码添加到ParseEmbeddedFiles方法中以填充PDFDocument.EmbeddedFiles所提供文档的属性并将有关嵌入文件的信息显示到控制台。

C#
private static void ParseEmbeddedFiles(PDFDocument document) 
{ 
    options = PDFParseDocumentStructureOptions.EmbeddedFiles; 
    document.ParseDocumentStructure(options); 
 
    Console.WriteLine("=======================EMBEDDED FILES=======================\n"); 
    foreach (PDFEmbeddedFile file in document.EmbeddedFiles) 
    { 
        Console.WriteLine("###########################################"); 
        Console.WriteLine($"Created: {file.Created}"); 
        Console.WriteLine($"Description: {file.Description}"); 
        Console.WriteLine($"FileName: {file.FileName}"); 
        Console.WriteLine($"FileNumber: {file.FileNumber}"); 
        Console.WriteLine($"FileSize: {file.FileSize}"); 
        Console.WriteLine($"Modified: {file.Modified}"); 
        Console.WriteLine($"ObjectNumber: {file.ObjectNumber}"); 
        Console.WriteLine($"SchemaValues: {file.SchemaValues}"); 
        Console.WriteLine("###########################################\n"); 
    } 
    Console.WriteLine("\n==========================================================\n"); 
} 

运行项目

按F5或选择“调试”->“开始调试”来运行项目。

如果正确执行了这些步骤,应用程序将运行并从中加载指定的 PDF 文档C:\LEADTOOLS23\Resources\Images\leadtools.pdf,解析其所有PDF 对象的结构,并将信息显示到控制台。

本教程演示了如何加载 PDF 文档、解析文档的所有PDFDocument属性并显示信息。此外,我们还介绍了如何使用PDFDocumentPDFParseDocumentStructureOptionsPDFEmbeddedFile类以及PDFImagePDFBookmarkPDFInternalLinkPDFFont结构。

参见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值