You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用iText7-dotnet读取PDF时遇“找不到程序集”错误求助

解决PowerShell中iText7-dotnet加载时缺少依赖的问题

你的问题出在只加载了iText7的核心内核库,缺少必需的依赖库itext.commons.dll。iText7采用模块化设计,PdfReader类依赖itext.commons提供的基础工具类,单独加载itext.kernel.dll无法完成类的初始化。

正确的库加载步骤

  1. 确认从官方获取的iText7 8.0.2包中包含以下关键dll(通常位于netstandard2.0目录下):
    • itext.commons.dll
    • itext.kernel.dll
  2. 必须先加载itext.commons.dll,再加载itext.kernel.dll,加载顺序不能颠倒。

完整PowerShell示例代码

# 定义库文件路径
$commonsLib = "C:\Temp\lib\netstandard2.0\itext.commons.dll"
$kernelLib = "C:\Temp\lib\netstandard2.0\itext.kernel.dll"

# 加载依赖库
[System.Reflection.Assembly]::LoadFrom($commonsLib)
[System.Reflection.Assembly]::LoadFrom($kernelLib)

# 初始化PdfReader并读取PDF基本信息
try {
    $pdfReader = [iText.Kernel.Pdf.PdfReader]::new("C:\Temp\sample.pdf")
    $pdfDoc = [iText.Kernel.Pdf.PdfDocument]::new($pdfReader)
    
    # 示例:获取PDF总页数
    Write-Host "PDF总页数:$($pdfDoc.GetNumberOfPages())"
    
    # 关闭资源
    $pdfDoc.Close()
    $pdfReader.Close()
}
catch {
    Write-Error "操作失败:$_"
}

扩展:提取PDF文本内容

如果需要提取PDF中的文本,还需加载itext.layout.dll,并使用PdfTextExtractor类实现,代码片段如下:

# 额外加载布局库
$layoutLib = "C:\Temp\lib\netstandard2.0\itext.layout.dll"
[System.Reflection.Assembly]::LoadFrom($layoutLib)

# 提取第一页文本
$page = $pdfDoc.GetPage(1)
$text = [iText.Layout.Pdf.PdfTextExtractor]::GetTextFromPage($page)
Write-Host "第一页文本内容:`n$text"

内容的提问来源于stack exchange,提问作者Ralf_Reddings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:15:11