首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从iTextSharp升级到iText7

从iTextSharp升级到iText7
EN

Stack Overflow用户
提问于 2021-08-02 18:06:24
回答 1查看 275关注 0票数 1

我正在更新我们的脚本,以确保它们仍然有效,并发现iText7已经取代了iTextSharp。我的需求很简单:读取表单字段。相反,我知道如何读取表单字段,我只是检查一下是否有更简单的方法,因为它似乎在iTextSharp中更容易。

下面是我们在iTextSharp中使用的旧代码( $form通过一个foreach循环提供给$reader ):

代码语言:javascript
复制
#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准备的内容:

代码语言:javascript
复制
#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以进行数据分析。我也只是个低级的SysAdmin,不是开发人员。请告诉我有一种更简单的方法来读取iText7中的单个表单域。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 18:09:29

简单性不一定是通过代码行数来衡量的。您在iText 7中读取表单域的方式是正确的。您需要更多行的原因是,iText 7在模块之间对代码的不同部分进行了更清晰的分离。与iText 5相比,这有很大的优势,并为用户代码的灵活性提供了更大的空间。

顺便说一句,无法调用$Form.GetField("FirstName").GetValue()是PowerShell的一个限制,与iText无关--您可以在C#或Java中使用这种链接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68626161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档