【发布时间】:2021-08-02 18:06:24
【问题描述】:
我正在更新我们的脚本以确保它们保持正常运行,并发现 iText7 已经取代了 iTextSharp。我的需求很简单;阅读表单字段。相反,我知道如何读取表单字段,我只是在检查是否有更简化的方法来执行此操作,因为在 iTextSharp 中似乎更容易。
这是我们在 iTextSharp 中使用的旧代码($form 正在通过 foreach 循环馈送到 $reader):
#create pdf reader object and load form
$reader = New-Object iTextSharp.text.pdf.PdfReader -ArgumentList $form.PSPath.Replace("Microsoft.PowerShell.Core\FileSystem::","")
#Get the data I need
$First = $reader.AcroFields.GetField("FirstName")
简单。但是,在使用 iText7 时,它似乎失去了它的简单性。这是 iText7 的内容:
#Create pdf reader and load form
$Reader = [iText.Kernel.Pdf.PdfReader]::new("C:\temp\TestForm.pdf")
#Create PDFDoc object?
$PdfDoc = [iText.Kernel.Pdf.PdfDocument]::new($Reader)
#What? Why?
$Form = [iText.Forms.PdfAcroForm]::getAcroForm($PdfDoc, $True)
#Get the data I need. Oh wait, I am unable to read it.
$fName = $Form.GetField("FirstName")
#Finally...
$First = $fName.GetValue()
恐怕我没有运气研究简单的代码;每个人似乎都在动态创建 Web 表单,或者解析数千个 PDF 以进行数据分析。我也只是一个低级的系统管理员,而不是开发人员。请告诉我有一种更简单的方法可以在 iText7 中读取单个表单字段。提前致谢!
【问题讨论】:
-
我刚刚注意到有多余的代码行并将其删除。它并没有改变我的问题,但它现在比原来精简了 1 行。
标签: powershell itext itext7