我想从面向公众的网站捕获填写的PDF表单数据,并将其保存在服务器上的数据库中。有可能吗?请告诉我。
答案 0 :(得分:1)
我建议您查看其中一个PDF库,例如iTextSharp。 This entry将向您展示如何遍历PDF中的所有表单字段。 this entry将向您展示如何按给定名称获取字段。
答案 1 :(得分:1)
是的,有可能。您需要表单上的提交按钮。在提交按钮的属性中,选择FDF作为数据类型。 PDF文档中的每个字段都有一个名称。 Textbox1,Textbox2等,您将收到名称 - 值对。有些库可以帮助处理返回的数据。
我在Controller(ASP.NET MVC应用程序)中收到了完整的PDF文档,如下所示:
string filename = Path.Combine(Server.MapPath(rootPath), name);
using (FileStream fs = new FileStream(filename, FileMode.CreateNew))
{
byte[] bytes = new byte[8192];
int bytesRead;
while ((bytesRead = Request.InputStream.Read(bytes, 0, bytes.Length)) > 0)
{
fs.Write(bytes, 0, bytesRead);
}
}
在这种情况下,filename是一个临时文件名,位于临时区域(rootPath),我有写访问权限。另一个解决方案是将文件写入MemoryStream,然后使用它发送电子邮件。
答案 2 :(得分:0)
您可以使用FDFToolkit.net将PDF表单提交保存到数据库:
以下是ASP.net(VB.net),ADO.net和SQL的示例:
If Not IsPostBack Then
Dim fdfApp As New FDFApp.FDFApp_Class()
Dim fdfDoc As New FDFApp.FDFDoc_Class()
fdfDoc = fdfApp.FDFOpenFromStream(Request.InputStream, True, True)
Dim dr As DataRow
Dim ds As New DataSet
Dim da As New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM TABLENAME", "CONNECTION STRING")
da.Fill(ds, "TABLENAME")
dr = ds.Tables(0).NewRow
'SET VALUES THAT MATCH NAMES IN TABLE & IN PDF
'fdfDoc.FDFSetDataRowFromValues(dr)
dr("FIELD_NAME1") = fdfDoc.FDFGetValue("PDF_FIELD_NAME1")
dr("FIELD_NAME2") = fdfDoc.FDFGetValue("PDF_FIELD_NAME2")
' DUMP XML FILE TO FIELD
dr("FIELD_DUMP_XML") = fdfDoc.FDFSavetoStr(FDFDoc_Class.FDFType.XML, True)
ds.Tables(0).Rows.Add(dr)
da.Update(ds, "TABLENAME")
fdfDoc.FDFClose()
fdfDoc.Dispose()
End If
答案 3 :(得分:0)
要通过电子邮件自动发送填充数据,您可以执行以下操作:
DONE!
当用户点击它时,它会自动将数据文件附加到电子邮件中。它会询问用户是否使用默认电子邮件或网络邮件。
您需要解析收到的FDF文件或任何其他格式,以便提取数据。
我知道这已经过时了,但有人可能正在寻找这个答案。