使用iText7-dotnet读取PDF时遇“找不到程序集”错误求助
解决PowerShell中iText7-dotnet加载时缺少依赖的问题
你的问题出在只加载了iText7的核心内核库,缺少必需的依赖库itext.commons.dll。iText7采用模块化设计,PdfReader类依赖itext.commons提供的基础工具类,单独加载itext.kernel.dll无法完成类的初始化。
正确的库加载步骤
- 确认从官方获取的iText7 8.0.2包中包含以下关键dll(通常位于
netstandard2.0目录下):itext.commons.dllitext.kernel.dll
- 必须先加载
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
相关产品推荐
相关产品推荐

