如何在PDF中使用JavaScript来识别用户的操作系统

时间:2018-06-08 23:03:15

标签: javascript pdf adobe acrobat

我想构建一个能够检测打开它的用户的操作系统的PDF,从而根据从中访问PDF的操作系统提供不同的信息。

我在搞清楚我需要用来完成看似简单任务的JS时遇到了很多麻烦。我无法使用它,因为它是一个浏览器变量:

let platform = navigator.platform;

我非常了解网络上的JavaScript并且可以解决大多数问题,但我也无法弄清楚如何在JS中使用适当的方法来处理PDF-JS。

所以我的问题,有人可以告诉我使用JavaScript访问PDF中的操作系统信息的正确方法(因为我认为这是唯一可能的方式)?您能否提供一些代码示例,说明如何从文档中包含的代码写入PDF?

例如,用户打开PDF并且它们位于Windows / Mac / Linux设备上,因此它说,"欢迎来自Windows / Mac / Linux"。

更新

这是使用我提出的Adobe API的JS。正如我所问,如何写入正在打开的实际文档,以便我不必打开二级报告?有一个Doc对象,但输出不是简单的文本,它被某种类型的彩色元素包围。

以下是适用的报告版本,但会打开辅助文档:

var rep = new Report();
rep.size = 1.2;
rep.color = color.black;

switch(app.platform.toString()){
    case "WIN":
        rep.writeText("Hello from Windows!");
        break;
    case "MAC":
        rep.writeText("Hello from Mac!");
        break;
    case "UNIX":
        rep.writeText("Hello from Unix!");
        break;
    default:
        rep.writeText("Hello from...maybe solaris?");
        break;
}

// open created report
var docRep = rep.open("welcome.pdf");
docRep.info.Title = "Custom Title";

这是写入页面的版本,但不仅仅是纯文本,而且它是可编辑的,我不想要:

var fieldName = "welcome";
var inch = 100;
var fvalue = this.addField(fieldName, "text", 0, [inch*4,inch*5,inch*2,inch*3]);

switch(app.platform.toString()){
    case "WIN":
        fvalue.value = "Hello from Windows!";
        break;
    case "MAC":
        fvalue.value = "Hello from Mac!";
        break;
    case "UNIX":
        fvalue.value = "Hello from Unix!";
        break;
    default:
        fvalue.value = "Hello from...somewhere else";
        break;
}

1 个答案:

答案 0 :(得分:2)

您可以使用app.platform

  

平台

     

脚本当前正在执行的平台。有三个有效值:
   - 赢    - MAC
   - UNIX

参考:https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf