代码之家  ›  专栏  ›  技术社区  ›  jamone

将数字动态附加到PDF或使“提交”按钮基于该数字更改其URL

  •  0
  • jamone  · 技术社区  · 14 年前

    我从一个SQL数据库中提供PDF,并在浏览器中展示它们。我正试图找出一种方法,将数字动态嵌入到PDF中,这样当用户提交XML表单数据时,PDFSSQL记录的recordID对我可用。用户点击表单上的提交按钮,表单将其XML数据提交到我的提交页面。如果有某种方法可以动态更改提交的URL,那么我可以做一个查询字符串来向自己传递recordid。我不是在代码中生成PDF,它是手工创建的,然后上传到我的站点。

    编辑

    给用户一个链接 someServer.com/pdfLink.aspx?formID=5 这些页面从数据库中提取一个PDF并显示出来。这会拉大浏览器中的Acrobat,使我的ASPX页面无法控制提交完成的表单,Acrobat是。用户填写表单并点击表单中的提交按钮。此提交按钮在表单设计时设置为指向另一页 someSite.com/pdfSubmit.aspx 提交按钮将XML数据发布到该页面,我可以处理它。我需要在查询字符串中 somesite.com/pdfsubmit.aspx网站 页。为此,我需要修改pdf,将recordid和查询字符串添加到提交按钮的提交URL,或者将其嵌入到pdf-else软件中。最大的问题是如何在显示PDF之前通过 someserver.com/pdfrink.aspx?FuffID=5 做这两个选择中的任何一个。

    3 回复  |  直到 14 年前
        1
  •  1
  •   plinth    14 年前

    在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”的东西,或者是一些可以很容易识别轨迹的东西。

        2
  •  0
  •   bechbd    14 年前

    querystring是只读的,因此您不能在运行时动态更改它。但是你能:

    1. 在最初呈现提交页时将recordid添加到表单中

    2. 是否可以处理提交表单,然后执行响应。重定向或服务器。将recordid参数添加到querystring中,然后传输到正确的页面

        3
  •  0
  •   jamone    14 年前

    在尝试@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>
    

    注意第二行到最后一行。它自动包含PDF的URL,该URL具有我需要的formid值。所以我所要做的就是从表单中获取xdp而不是纯XML post,它提供了我所需要的一切。