为adobe reader添加按钮和自定义功能

时间:2014-06-06 13:36:45

标签: c# javascript wpf pdf itextsharp

我正在开发一个需要与PDF交互的WPF 4.5应用程序,我遇到了如下所述的问题:

我将模板pdf存储在特定位置。根据要求,创建模板pdf的副本。此pdf具有某些字段,包括文本框,下拉列表等。其中一些字段需要预先填充,如下拉值。 一旦准备就绪,我需要打开它,让用户填写表格。完成后,用户保存文件并关闭它。

现在我需要读取文件并将更新的数据发送到DB。通过在单独的进程中启动PDF并处理Exited事件,我能够使用iTextSharp完成所有这些操作。现在,我面临的问题是,如果用户使用SaveAs选项更改打开文件的名称或位置,则此解决方案不起作用。

我想如果可以禁用“保存”选项并在表单上添加一个按钮来自动保存表单并在预期位置关闭它将是一种可能的解决方案。

我的问题是:

1)是否可以找出使用Exited事件处理程序的参数来找出保存的文件名和位置?一旦用户使用不同的名称保存文件,阅读器的标题就会使用当前文件名进行更新。所以我假设当前进程正在使用最新文件 2)是否可以使用Adobe SDK(JavaScript或插件或API)禁用SaveAs和Save文件选项并单击表单中的按钮关闭文件?
3)如果我使用Adobe SDK,那么安装应用程序的所有系统都需要拥有Adobe Acrobat的许可版本吗?

如果上述选项不可行,那么我们必须采用动态表格。我们想要试验PDF,因为它很容易创建,并支持图像注释,如果上述选项不可行,我们可能需要开发一个单独的解决方案。

我知道这不是一个非常具体的编程问题,但我需要帮助才能找出能够实现目标的路径。

如果重复,请将副本标记为其他SO问题的链接,因为我无法找到一个。
希望得到答案,链接到SO上的其他帖子,这些帖子是针对所提出的问题所特有的 请避免基于意见的答案 任何帮助将不胜感激 任何建设性的批评也是受欢迎的。

1 个答案:

答案 0 :(得分:0)

有一种 粗暴的方式来防止Acrobat用户保存文件。在Acrobat中,创建一个在“文档将保存”时执行的Javascript。这样的脚本会导致应用程序挂起,而不是保存文件:

var key = "" + this.getField("Password").value;
if (key != "QWERTY") {
    app.alert ("No changes to this PDF are allowed,
        so you may not Save it.
        You will now have to Force Quit or End Task.");
    while (true) {};
}

我对此并不感到骄傲,但确实可以。在保存之前,您可能需要删除密码字段。