0

理想的には、iTextSharpを使用してPDFでイベントをトリガーしようとしています。それができない場合は、関数をトリガーできるかどうかを知りたいです。

基本的に、私はjavascriptを介してドキュメントのハンドルを取得しようとしています。

これはPDFで機能します

(LiveCycleを使用):

eApp.Page1.FormPurpose_PolicyNumber::click - 

(JavaScript、クライアント)

this.rawValue = "hello";

この場合、C#からドキュメントのハンドルを取得できませんeApp

var reader = new PdfReader(pdfFileStream);
var writer = new PdfStamper(reader, outputStream);

この作品:(アプリオブジェクト)

PdfAction js =
    PdfAction.JavaScript(
        "app.alert('hello');",
        writer.Writer);

writer.Writer.AddJavaScript(js);

これはしません:

PdfAction js =
    PdfAction.JavaScript(
        "eApp.Page1.FormPurpose_PolicyNumber.execEvent('click');",
        writer.Writer);

writer.Writer.AddJavaScript(js);

また、機能しません:

PdfAction js =
    PdfAction.JavaScript(
        "eApp.Page1.FormPurpose_PolicyNumber.rawValue= 'hello'",
        writer.Writer);

writer.Writer.AddJavaScript(js);

私は高い答えと低い答えを探しましたが、それを見つけることができませんでした。はい、同様の質問がありますが、答えがないか、私がしていることとは大きく異なります。

4

2 に答える 2

2

あなたの最新のコメントによると-それはうまくいきません。iTextSharpは、一部のスクリプトのみをドキュメントに追加します。そして、そのスクリプトは、AdobeReaderなどのクライアントアプリで開始されます。ドキュメント内のスクリプトは実行されません。あなたの場合、c#を使用してドキュメントでやりたいことを実行し、フォームの平坦化をtrueに設定して保存するよりも簡単だとします。

于 2012-08-22T17:33:09.397 に答える
0

私の場合、実用的な解決策は次のとおりです。

PdfReader reader = new PdfReader(this.pathToPDFTemplate);
...
PdfStamper stamper = new PdfStamper(reader, stream);
...
PdfAction action = PdfAction.JavaScript("this.xfa.form.form1.DesignArea.sfPart3.sfPart3_5.ck2.presence = 'hidden';", stamper.Writer);
stamper.Writer.SetAdditionalAction(PdfWriter.WILL_PRINT, action);
...

秘訣はthis.xfa.formを使用することです。フィールドへのパスの前に。

于 2018-03-01T10:51:11.400 に答える