0

いくつかの入力フィールド(テキストとチェックボックス)があるPDFドキュメントがあります。これらのオブジェクトを参照して、その値を操作し、更新されたPDFをユーザーにプッシュして、目的の場所に保存するにはどうすればよいですか。これを行う方法についての適切なドキュメントが見つかりません。

あなたが私に与えることができるどんな情報でも大いにありがたいです。

現在、次のコードを使用していますが、開いてみると、PDFリーダーに破損または破損していると表示されます。

            String srcPath = Server.MapPath("~/App_Data/w9.pdf");
        String dstPath = Server.MapPath("~/App_Data/w9_" + Session.SessionID + "_updated.pdf");

        if (File.Exists(dstPath)) {
            File.Delete(dstPath);
        }

        File.Copy(srcPath, dstPath);

        PdfReader reader = new PdfReader(dstPath);

        try
        {
            PdfStamper stamper = new PdfStamper(reader, Response.OutputStream);
            stamper.FormFlattening = true;
            stamper.AcroFields.SetField("topmostSubform[0].Page1[0].f1_01_0_[0]", "Homer J Simpson");

            Response.ContentType = "application/pdf";
            Response.BufferOutput = true;
            Response.AppendHeader("Content-Disposition", "attachment; filename=W9_" +Session.SessionID + "_Complete.pdf");

            Response.TransmitFile(dstPath);
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
4

1 に答える 1

0

私は iText ドキュメントの作成者です。静的フォームがある場合は、この章で説明されている方法を使用してフォームに入力できます: http://www.manning.com/lowagie2/samplechapter6.pdf

Open Office で作成されたフォームに入力する方法については、セクション 6.3.5 を参照してください。ただし、Adobe LiveCycle で作成されたフォームを使用しているかのように見えます ( topmostSubform[0].Page1[0].f1_01_0_[0]XFA フォームでは のようなフィールド名が一般的です)。

セクション 6.3.5 は、次のコメントで締めくくられています。

「フォームについてはまだ言いたいことがたくさんありますが、注釈について話すまでは、これ以上詳しく説明することはできません。また、さまざまな種類の PDF フォームについてはまだ何も言っていません。AcroForm 技術に基づくフォームがあります。 (Open Office を使用して作成したフォームのように)、XFA フォーム (Adobe Designer で作成) があります。カバーする PDF 操作クラスのグループがもう 1 つ残っているため、これは第 8 章まで待つ必要があります。

フォームが内部に AcroForm テクノロジを持たない動的な XFA フォームである場合は、それをフラット化するために XFA Worker が必要です。XFA Worker の試用版は、http://itextsupport.com/download/xfaworker.html からダウンロードできます

続行する前に最初に回答しなければならない質問は、「AcroForm または XFA フォームを持っていますか?」です。XFA フォームがある場合、フォームに入力してフラット化するには、Adobe LiveCycle ES または XFA Worker が必要です。どちらもクローズドソース製品です。XFA のフラット化をサポートする無料またはオープン ソースのライブラリを知りません。

PS: 「破損」とは、「このドキュメントは拡張機能を有効にしました... 」というメッセージが表示されることを意味する場合、Reader の有効化を壊しています。このメッセージを回避する方法については、「iText in Action - Second Edition」の第 8 章をお読みください。

于 2013-01-23T09:45:18.100 に答える