2011-09-02 114 views

回答

1

是的,这是可能的。您需要在表单上提交按钮。在提交按钮的属性中,选择FDF作为数据类型。 PDF文档中的每个字段都会有一个名称。 Textbox1,Textbox2等,您将收到名称 - 值对。有些库可以帮助处理返回的数据。

我在控制器(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); 
    } 
} 

在这种情况下,文件名是位于一个临时区域(ROOTPATH),在那里我有写一个临时文件名访问。另一种解决方案是将文件写入MemoryStream,然后用它发送电子邮件。

+0

谢谢。我会看看。点击PDF上的“提交”按钮后,是否可以直接通过电子邮件发送填好的表单?现在,当我点击“电子邮件表格”提交按钮时,它正在尝试打开Outlook发送电子邮件。我想绕过并直接发送到指定的电子邮件地址。 – nav100

+0

我不认为这是可能的。作为您可以执行的所有操作的属性的最后一个选项卡。我发现唯一可用的是“提交表单”。所以我选择将填好的表格提交到服务器,然后我可以通过电子邮件发送。提交表单操作有几个设置用于接收不同的内容。我使用PDF,但您也可以获得FDF,HTML或XFDF。使用最适合你的那个。 – Leons

+0

Leons,你能解释更多关于提交填充表单到服务器然后发送电子邮件吗?我必须写一些脚本吗? – nav100

1

我会推荐查看一个PDF库,如iTextSharp。 This entry会告诉你如何遍历PDF中的所有表单域。并this entry将告诉你如何获得一个给定的名称字段。

+0

Chris,是否可以通过电子邮件将填好的表格发送到指定的电子邮件地址而无需提示Outlook?谢谢。 – nav100

+0

我猜你只是在谈论Adobe Acrobat和/或Reader,所以答案是否定的电子邮件。每个人都害怕将SMTP引擎整合到他们的程序中,因此他们总是依赖于其他人,这就是Outlook,OE,Entourage等被调用的原因。您可以让该人员手动上传PDF或按照@Leons的说法进行操作。 –

0

您可以使用FDFToolkit.net到PDF表单提交保存到数据库:

http://www.fdftoolkit.net

下面是用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 
+1

请在帖子中提及您推荐自己的产品,否则您的帖子可能会被标记为垃圾邮件。 –

0

要通过电子邮件自动发送填充数据,你可以做到以下几点:

  1. 添加PDF按钮( “提交”)
  2. 右击 - > PDF选项 - >字段属性
  3. 选择 “操作” 选项卡
  4. 选择在网址栏中输入的mailto提交表单类型
  5. [email protected] .COM
  6. 在提交格式选择FDF或格式你想

DONE!

当用户点击它时,它会自动将数据文件附加到电子邮件。它会询问用户是否使用默认电子邮件或网络邮件。

您将收到FDF文件或任何其他格式,必须解析才能提取数据。

我知道这是旧的,但有人可能正在寻找这个答案。