0

我正在从 SQL 数据库提供 PDF 并在浏览器中呈现它们。我正在尝试找出一种在 PDF 中动态嵌入数字的方法,以便当用户提交 XML 表单数据时,我可以使用该 PDF SQL 记录的 recordID。用户点击表单上的提交按钮,表单将其 XML 数据提交到我的提交页面。如果有某种方法可以即时更改提交 URL,那么我可以执行一个查询字符串来将 recordID 传递给我自己。我不是在代码中生成 PDF,它是手动创建的,然后上传到我的网站。

编辑

用户会得到一个链接someServer.com/pdfLink.aspx?formID=5,他们会去那里,该页面从数据库中提取 PDF 并显示它。这会在浏览器全尺寸中拉出 acrobat,因此我的 aspx 页面无法控制提交完成的表单,Acrobat 是。用户填写表单并点击表单中的提交按钮。此提交按钮在表单设计时设置为指向另一个页面someSite.com/pdfSubmit.aspx提交按钮将 XML 数据发布到该页面,我可以处理它。我需要someSite.com/pdfSubmit.aspx页面查询字符串中的recordID。为此,我需要修改 PDF 以将 recordID 和查询字符串添加到提交按钮的提交 URL,或者将其嵌入 PDF else ware。最大的问题是如何在通过someServer.com/pdfLink.aspx?formID=5执行这两个选项中的任何一个来显示 PDF 之前修改它。

4

3 回答 3

1

在 PDF 中嵌入数字并不完全符合犹太教规,但您可以做一些事情来遵守规范。

当前的 PDF 规范说“文件的最后一行应仅包含文件结束标记

%%EOF

但是有一些回旋余地 - 实现细节说它在技术上不一定是文件的最后一行,但只需要出现在最后 1K 中,一般来说,如果你不搞砸的话很多,大多数合规的读者甚至不会眨眼。如果我必须这样做,我会倾向于添加一个换行符(如果没有的话),然后是一个 % (这是一个 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:”或一些可以轻松识别您的曲目的东西。

于 2010-05-04T14:44:18.660 回答
0

查询字符串是只读的,因此您不能在运行时动态更改它。但是你可以:

  1. 在提交页面最初呈现时将记录 ID 添加到表单中

  2. 您可以处理提交表单,然后执行 Response.Redirect 或 Server.Transfer 到正确的页面,并将 recordid 参数添加到查询字符串

于 2010-05-04T14:27:40.357 回答
0

在尝试@plinth 的建议时,我意识到我必须从 XML 提交进行更改(因为他的数据直接在 PDF 上。所以我将表单更改为提交为具有 XML 数据 + 嵌入式 PDF 的 XDP。当我这样做并查看原始 XDP提交的表格我遇到了这个。

  <?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 帖子,它为我提供了我需要的一切。

于 2010-05-04T15:20:12.013 回答