【问题标题】:Automating the download of a directory through FTP通过 FTP 自动下载目录
【发布时间】:2016-08-29 21:02:23
【问题描述】:

我需要通过监视 XML 文件的更改来自动在 InDesign 中创建 PDF,下载 XML 中引用的所有远程图像(因为 InDesign 无法处理远程图像),将 XML 转换为引用下载本地图像路径,加载 InDesign 模板,然后进行 XML 合并并将结果导出为 PDF。

我目前正在监听 XML 文件的更改并使用 PowerShell 启动 InDesign,但我不知道如何获取所需的图像。

我想与其尝试读取 XML 并仅下载引用的图像,不如直接下载整个图像目录。我已经研究过通过 PowerShell 使用 FtpWebRequest 类来执行此操作,但是批处理和 .NET 脚本不是我的强项,我只能找到下载单个文件的示例,或者一个列表基于 CSV 清单的文件。

我是一名 JS 开发人员,因此我使用 gulp 和 ftp 模块等任务运行程序研究了 Node.js 实现,但我不确定这是否是一个好的解决方案,或者它是否可以做到我想要什么。

如果您必须在 Windows 机器上执行此操作,您的工作流程是什么?

【问题讨论】:

  • 使用wgetcurl 还不够吗?有点像此类任务的标准解决方案。还有内置的ftp 实用程序,可用于下载所有远程文件。
  • 我能够通过 HTTP 而不是使用 FTP 来提供图像,这让事情变得更容易一些。我的解决方案是一个完整的 node.js 实现。

标签: xml powershell ftp


【解决方案1】:

我的解决方案是使用 node.js 和 gulp 创建一个监听目录的构建环境(使用 gulp-watch)并在检测到 XML 文件更改时启动构建:

gulp.task('watchXml', function() {
    watch('input/*.xml', batch(function (events, done) {
        gulp.start('build', done);
    }));
});

我使用 npm request 模块通过 HTTP(而不是 FTP)下载图像,并使用 fs 模块将它们流式传输到本地文件系统。下载和 XSLT 完成后,我可以运行 shell 命令以使用 child_process 启动 InDesign:

var exec = require('child_process').exec;

gulp.task('shell', function(done) {
    exec('start "" "C:\\Program Files\\Adobe\\Adobe InDesign CC 2015\\InDesign.exe"', function(err, stdout, stderr) {
        if (err) {
            done();
            return console.log('error:', err);
        }
        console.log('InDesign launched.');
        done();
    });
});

InDesign 启动脚本从那里接管、导入 XML 并创建 PDF。

【讨论】:

  • 请注意,您的解决方案可能只是违反 InDesign EULA,因为存放 xml 的人(或更糟的系统)因此运行自动化可能不是 InDesign 客户端许可证所有者。在此类“服务器”环境中,您需要 InDesign Server 许可证。如果您的许可证所有者存放 xml 文件并运行您的系统,此系统将是合法的。
  • @Loic,感谢您将可能的法律问题提请我注意,但您的示例对我来说并不清楚。我从第 3 方系统 (SAP) 生成 XML,并将文件放在运行 InDesign 和 node.js 应用程序的 Windows VM 上的共享目录中。这是否违反了 EULA?您能否提供有问题的子句,以便我查看语言?
  • 参见 /Legal/en_GB/license.html 中的第 2.1.7.1 和 2.1.7.2 点:img15.hostingpics.net/pics/…
  • 谢谢,@Loic。我想我很清楚,因为该软件没有安装在服务器上。
猜你喜欢
  • 2021-06-23
  • 2012-05-04
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多