0

SQLデータベースからPDFを提供し、ブラウザーに表示しています。ユーザーがXMLフォームデータを送信したときにそのPDFSQLレコードのrecordIDを利用できるように、PDFに数値を動的に埋め込む方法を見つけようとしています。ユーザーがフォームの送信ボタンを押すと、フォームはXMLデータを送信ページに送信します。送信URLをその場で変更する方法がある場合は、クエリ文字列を実行して自分自身にrecordIDを渡すことができます。PDFをコードで生成していません。手動で作成してから、自分のサイトにアップロードしています。

編集

ユーザーにはそこに移動するリンクが与えられ、someServer.com/pdfLink.aspx?formID=5そのページはDBからPDFを取得して表示します。これにより、ブラウザのフルサイズでacrobatが表示されるため、aspxページは、完成したフォームの送信を制御できません。Acrobatは制御できます。ユーザーはフォームに入力し、フォームの送信ボタンを押します。この送信ボタンは、フォームのデザイン時に別のページを指すように設定されていますsomeSite.com/pdfSubmit.aspx。送信ボタンは、XMLデータをそのページに投稿し、処理できます。ページのクエリ文字列にrecordIDが必要someSite.com/pdfSubmit.aspxです。これを行うには、PDFを変更して、recordIDとクエリ文字列を送信ボタンの送信URLに追加するか、PDFに埋め込む必要があります。someServer.com/pdfLink.aspx?formID=5大きな問題は、これら2つのオプションのいずれかを実行するために、PDFを表示する直前に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. 送信ページが最初にレンダリングされるときに、recordIDをフォームに追加します

  2. 送信フォームを処理してから、クエリ文字列にrecordidパラメーターを追加してResponse.RedirectまたはServer.Transferを正しいページに転送できますか?

于 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>

最後から2番目の行に注意してください。必要なformID値を持つPDFのURLが自動的に含まれます。したがって、私がしなければならなかったのは、フォームから純粋なXML投稿の代わりにXDPを取得することだけで、必要なものがすべて提供されます。

于 2010-05-04T15:20:12.013 に答える