如何在Powershell上使用iTextSharp

问题描述 投票:0回答:1

我是 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"

我希望有人能帮助我,提前谢谢

powershell itext
1个回答
0
投票

您收到的错误消息并非 iTextSharp 所独有。

继续我的评论。

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

https://stackoverflow.com/search?q=powershell+using+itext7

SO 示例

Powershell 和 iTextsharp 将多个图像添加到 PDF

## 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()
© www.soinside.com 2019 - 2024. All rights reserved.