代码之家  ›  专栏  ›  技术社区  ›  ViaTech

如何使用pdf中的javascript识别用户的操作系统

  •  1
  • ViaTech  · 技术社区  · 6 年前

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

    我很难找出我需要使用的js来完成看似简单的任务。我不能使用它,因为它是一个浏览器变量:

    let platform = navigator.platform;
    

    我对Web很熟悉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 回复  |  直到 6 年前
        1
  •  2
  •   Peter B    6 年前

    你可以使用 app.platform :

    平台

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

    麦克
    - UNIX

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