首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iTextsharp -在AcroFields.SetField之后如何获得可编辑的字段?

iTextsharp -在AcroFields.SetField之后如何获得可编辑的字段?
EN

Stack Overflow用户
提问于 2013-05-24 10:49:05
回答 1查看 2.9K关注 0票数 0

我正在使用iTextSharp来填充PDF表单模板。我有一个pdf模板中的许多表单域。然后,软件填充字段并将模板保存到新文件中。但是,新PDF文件中的字段不再可编辑。

我想让一些字段在调用AcroFields.SetField后仍然可以编辑,这可能吗?

感谢您的回答或建议。

EN

回答 1

Stack Overflow用户

发布于 2013-05-25 02:08:34

在PDFStamper对象上调用FormFlattening。

代码语言:javascript
运行
复制
                ' flatten the form to remove editting options, set it to false
                ' to leave the form open to subsequent manual edits
                pdfStamper.FormFlattening = False

测试代码- master的路径在窗体的标题中:

代码语言:javascript
运行
复制
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Dim newFile As String = Me.Text.Replace(".pdf", "_Out.pdf")

    ' create w/overwrite copy of the template
    Dim pdfReader As New PdfReader(pdfTemplate)
    Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create))

    pdfFormFields = pdfStamper.AcroFields

    ' set form pdfFormFields ' field names are case sensitive
    pdfFormFields.SetField("NAME", "Firstname Lastname")
    pdfFormFields.SetField("PHONE", "805.555.1212")

    '' report by reading values from completed PDF
    Dim sTmp As String = "Completed: " + pdfFormFields.GetField("NAME") + " " + _
    pdfFormFields.GetField("PHONE")
    MessageBox.Show(sTmp, "Finished")

    ' flatten the form to remove editting options, set it to false
    ' to leave the form open to subsequent manual edits
    pdfStamper.FormFlattening = False

    ' close the pdf
    pdfStamper.Close()
End Sub

VB项目需要引用itextsharp.dll (在我的例子中是\itextsharp-all-5.3.4\itextsharp.dll),并且在顶部:

导入iTextSharp.text

导入iTextSharp.text.pdf

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

https://stackoverflow.com/questions/16726967

复制
相关文章

相似问题

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