我是 PowerShell 新手,我正在尝试使用 iTextSharp 工具编辑 pdf,但我无法让它工作,这是我到目前为止尝试打开文件的内容,但它给了我一个错误
$path = "C:\...\Itext\lib\a.pdf" #path to my pdf file
[System.Reflection.Assembly]::LoadFrom("C:\...\Itext\lib\itextsharp.dll") #path to my itextsharp.dll
[System.Reflection.Assembly]::LoadFrom("C:\...\Itext\lib\BouncyCastle.Crypto.dll") #path to my BouncyCastle.Crypto.dll
New-Object iTextSharp.text.pdf.PdfReader ("$path")
错误是这样的:
New-Object:使用参数“1”调用“.ctor”时出现异常:“重建失败:字典键 Virtual 不是名称。位于文件指针 2516 处; 原始消息:字典键 Virtual 不是名称。在文件指针 2516"
我希望有人能帮助我,提前谢谢
继续我的评论。
https://github.com/itext/itextsharp
请注意:iTextSharp 已停产,已被 iText 7 取代。仅添加安全修复程序 我们强烈建议客户将 iText 7 用于新项目,并考虑将现有项目从 iTextSharp 迁移到 iText 7,以从众多改进中受益如:
这里有很多关于通过 PowerShell 进行 iTestSharp 和 iText7 用例的帖子。
https://stackoverflow.com/search?q=powershell+itextsharp
https://stackoverflow.com/search?q=powershell+itext7
https://stackoverflow.com/search?q=powershell+using+itextsharp
SO 示例
## Set various paths
$iTextSharpFilePath = "D:\DLLs\itextsharp.dll"
$imageFolderPath = "D:\images"
$pdfFilePath = "D:\temp.pdf"
## Load iTextSharp and System.Drawing
[System.Reflection.Assembly]::LoadFrom($iTextSharpFilePath)
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
如何在powershell V5中使用Itext7,加载pdfWriter时出现异常
问题是缺少一些依赖项。 iText7 依赖于 Common.Logging 版本 3.4.1(可以在此处下载),而后者又依赖于 Common.Logging.Core,相同版本 3.4.1(可以在此处下载)。另外,请确保 BouncyCastle 依赖项是 Portable.BouncyCastle 版本 1.8.1.3(可以在此处下载)。
你不需要 NLog 依赖,至少 iText 7 不需要它。
话虽这么说,这是在我的设置中运行良好的代码(iText 7.1.6,PowerShell 5.1):
[string] $pdfDocuFilename = "C:\temp\" + (Get-Date -Format "yyyyMMdd_HHmmss") + ".pdf"
Add-Type -Path "C:\temp\Common.Logging.Core.dll"
Add-Type -Path "C:\temp\Common.Logging.dll"
Add-Type -Path "C:\temp\itext.io.dll"
Add-Type -Path "C:\temp\itext.kernel.dll"
Add-Type -Path "C:\temp\BouncyCastle.Crypto.dll"
$pdfWriter = [iText.Kernel.Pdf.PdfWriter]::new($pdfDocuFilename)
$pdf = [iText.Kernel.Pdf.PdfDocument]::new($pdfWriter)
$pdf.AddNewPage()
$pdf.Close()