iTextSharp按钮字段的多个动作

时间:2014-04-18 20:12:52

标签: pdf-generation itextsharp

在PDF中,我可以设置按钮

  1. 将FDF数据提交至我的RestAPI
  2. 重定向到网页(告诉用户'感谢'),效果很好。
  3. 但我需要使用代码执行此操作...我正在以下列方式使用iTextSharp:

    • pb是我的按钮......
    • sURL是我需要数据的网址...

    这是我的代码:

    PdfFormField pff = pb.Field;
    pff.SetAdditionalActions(PdfName.A, PdfAction.CreateSubmitForm(sURL, null, PdfAction.SUBMIT_XFDF));
    af.ReplacePushbuttonField("submit", pff);
    

    这确实用提交操作替换了按钮。如何保持页面重定向或如何在代码中设置它? 我还根据示例尝试了PdfName.AAPdfName.U,我不确定不同的名称是什么。但没有任何作用。 : - /

    显然,SetAdditionalActions()取代了现有的行动。

    我也尝试过使用注释,只添加一个不存在的按钮。

1 个答案:

答案 0 :(得分:1)

您正在寻找一个名为链式操作的概念,如PrintTimeTable示例所示:

Chunk chunk = new Chunk("print this page");
PdfAction action = PdfAction.javaScript(
    "app.alert('Think before you print!');", stamper.getWriter());
action.next(PdfAction.javaScript(
    "printCurrentPage(this.pageNum);", stamper.getWriter()));
action.next(new PdfAction("http://www.panda.org/savepaper/"));
chunk.setAction(action);

在这种情况下,我们有一个操作,显示警报,打印页面并重定向到URL。这些操作使用next()方法相互链接。

在C#中,这将是:

Chunk chunk = new Chunk("print this page");
PdfAction action = PdfAction.JavaScript("app.alert('Think before you print!');", stamper.Writer);
action.Next(PdfAction.JavaScript("printCurrentPage(this.pageNum);", stamper.Writer));
action.Next(new PdfAction("http://www.panda.org/savepaper/"));
chunk.SetAction(action);

另见the C# port of the book examples