我正在从SQL DB中提供PDF,并在浏览器中呈现它们。我试图弄清楚一种动态嵌入PDF中的数字的方法,以便当用户提交XML表单数据时,我可以使用该PDFS SQL记录的RecordID。用户键入表单上的提交按钮,表单将其XML数据提交到我的提交页面。如果有某种方式可以更改提交URL,那么我可以做一个查询字符串来传递我的recordID。我不是在代码中生成PDF,而是通过手工创建的,然后将其上传到我的网站。

编辑

给出用户一个链接 someServer.com/pdfLink.aspx?formID=5 他们去了那里,页面从DB中取出PDF并显示。这可以在浏览器全尺寸中拉起Acrobat,因此我的ASPX页面不能控制提交完整的表单,Acrobat IS。用户填写表格,并按照表格中的提交按钮命令。此提交按钮是在表格设计时设置的,以指向另一页 someSite.com/pdfSubmit.aspx 提交按钮将XML数据发布到该页面,我可以对其进行处理。我需要在查询字符串中的rectorid someSite.com/pdfSubmit.aspx 页。为此,我需要修改PDF,以将RecordID和查询字符串添加到提交按钮的提交URL中,或将其嵌入PDF其他Ware中。最大的问题是如何在通过显示PDF之前通过 someServer.com/pdfLink.aspx?formID=5 做这两个选项中的任何一个。

有帮助吗?

解决方案 3

在尝试 @plinth的建议时,我意识到我必须从XML提交中更改(因为他的数据直接在PDF上。我提交的表格遇到了这一点。

  <?xml version="1.0" encoding="UTF-8" ?> 
  <?xfa generator="XFA2_4" APIVersion="3.0.8262.0"?> 
  <xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2010-05-04T15:15:00Z" uuid="6d0944c8-1573-442c-9c85-11e372bd38c3">
    <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
      <xfa:data>
         <form1>
           <TextField1>TestMe</TextField1> 
         </form1>
       </xfa:data>
    </xfa:datasets>
    <pdf href="ViewPDF.aspx?formID=10" xmlns="http://ns.adobe.com/xdp/pdf/" /> 
 </xdp:xdp>

注意第二行的第二行。它自动包含具有我需要的formid值的PDF URL。因此,我要做的就是从表格中获取XDP,而不是纯XML帖子,它为我提供了所需的一切。

其他提示

嵌入PDF中的数字并不完全是犹太洁食,但是您可以做一些可以尊重规格的事情。

当前的PDF规格说:“文件的最后一行仅包含文件终止标记

%%EOF

但是有一些摆动室 - 实施细节说,从技术上讲,它不必是文件的最后一行,但只能出现在最后1K中,而且通常不会说,如果您不喜欢事情很多,大多数兼容的读者甚至都不会眨眼。如果我必须这样做,我将倾向于添加一个newline(如果没有),那么一个%(这是PDF评论),一个标记,让我知道它是我的,最后是数字。所以类似:

// assume we already know it ends with %%EOF
void AppendNumberToPdf(Stream stm, int number, bool addNewline)
{
    stm.Seek(0, SeekOrigin.End); // go to EOF
    StreamWriter writer = new StreamWriter(stm, new ASCIIEncoding(), 1024);
    writer.WriteLine(string.Format("{0}% {1} {2}", (addNewLine ? "\n" : ""), kMyMarkerString, number));
    writer.Flush();
}

KmymarkerString应该是“ MyApplicationDocumentIdentifier”之类的东西,或者某些东西可以轻松识别您的曲目。

Querystring仅读取,因此您无法在运行时动态更改它。但是你可以:

  1. 最初渲染提交页面时将记录ID添加到表格中

  2. 您可以处理提交表单,然后执行响应。redirect或server.trans.tranf到正确的页面,并将recordid参数添加到querystring中

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top