在InDesign中使用Porky显示数据集

克里斯·沃德
分享

作为一名多年的程序员,我坚信所有东西都应该一次性编写,并且能够在多个地方使用它。在编码世界中,由于开放的数据格式和广泛支持的api,我们通常可以拥有一组中央内容,并将其用于不同的应用程序和用例,所有这些都很好地同步。

在桌面设计领域,这在传统上是比较困难的,因为内容来源是Word文档、InDesign文件,可能还有一些内容管理系统或电子表格。

想象一下当我偶然发现肥胖的,一个开源的InDesign扩展(好吧,实际上是一个脚本),它可以让你连接你的InDesign文件到各种数据源。

安装

下载脚本的当前版本,将该文件夹解归档并添加到InDesign中脚本/脚本面板文件夹(在我的Mac上,这是在InDesign应用程序包), Porky现在应该显示在InDesign脚本面板中。

脚本面板

脚本面板

Porky需要在本地计算机上安装node.js,完整的说明可以在这里找到.当你安装了它,我们可以安装一些添加到node.js所需的Porky处理连接到它支持的各种服务。通过打开命令行并发出这两个命令来安装它们(这是针对安装了InDesign CC的Mac,路径将根据您的平台和版本而有所不同):

cd/应用程序/Adobe排版软件名称CC2015/脚本/脚本面板/笨拙的NPM安装

开始肥胖的

双击start-porky-data-source-access.jsx在脚本面板中,这可能会打开一些终端窗口,暂时不要管它们。

开始肥胖的

使用猪肉的

Porky使用Adobe的ExtendScript来创建将InDesign连接到它支持的数据源的脚本。有一些例子猪肉的/ src /例子文件夹,我建议你下载ExtendScript工具包编辑和创建自己的。

我将逐步介绍如何连接和使用Porky支持的数据源的示例,如果您想深入了解,请阅读肥胖的的文档

SQL

我创建了一个基本的SQL表,其中包含一些SitePoint文章,必威西盟体育网页登录你可以在这里找到这个文件

/ / @include . . / bin / porky.jsx;设置数据源类型“MySQL”设置数据源服务器“127.0.0.1”设置数据源的名字“必威西盟体育网页登录SitePoint”设置数据源用户名“根”设置数据源密码""varmySQLResult""试一试mySQLResultconnectToDataSource“SELECT * FROM articles”mySQLResultJSON解析mySQLResult警报mySQLResulte警报“错误\nCheck控制台窗口查看详细信息!”

JSON

与我的所有教程一样,我将使用奇迹的API来展示Porky的JSON特性。

/ / @include . . / bin / porky.jsx;设置数据源类型“JSON”设置数据源的名字“http://gateway.marvel.com/v1/public/characters?ts=1448030805540&apikey=dfa06d77bc9c4f9f0ed01337848247e3&hash=0e54a94548adeb07b97e3e3428c6956f&limit=10”//在这里用点符号指定路径,或者留下""来请求整个对象varmyJSONResultconnectToDataSource“data.results”警报JSON解析myJSONResult警报JSONstringifymyJSONResult

CSV

使用一个CSV版本的SQL表

/ / @include . . / bin / porky.jsx;//从特定文件夹读取现有文本文件varmyCSVFileContentreadFile“articles.csv”//文件绝对路径如果myCSVFileContent警报读取内容为\n的文件+myCSVFileContent其他的警报“文件不存在”

显示数据

创建文本框

/ / @include . . / bin / porky.jsx;...varmyTextframeaddFrame5050500250""...

这将创建一个新的文本框架,参数(按各自的顺序)等于x和y坐标以及框架的宽度和高度。最后一个参数是内容的字符串或文件,现在我们将其保留为空。

用数据填充帧

这个过程取决于返回数据的结构,对于某些数据返回格式,这个过程比其他格式更容易。我们使用以下函数:

/ / @include . . / bin / porky.jsx;...varmyTableappendToFramemyTextframemyArray...

myArray变量需要一个字符串或二维数组,即行数组,每行包含一组内容值。获取这个数组可能会很复杂。

JSON

JSON可能很难,这取决于返回数据的格式以及它是JSON对象还是数组。在Marvel API的例子中,这段代码部分适用于我:

...varmyArray数组项目长度myArray0“id”“名称”“描述”var1最整洁的解决方案,您可能会遇到一些问题转义字符作为这在很大程度上取决于你JSON结果MySQL输出结果一个MySQL表类似于JSON作为MySQL数据返回作为JSON代码的语言“javascript”varmyArray数组mySQLResult长度myArray0“id”“标题”“通道”“url”var1CSVCSV是最简单的代码的语言“javascript”/ / @include . . / bin / porky.jsx;...varmyArraycsvToTwoDArraymyCSVFileContentrSep' \ n 'fSep”、““”修剪真正的varmyTextframeaddFrame5050250250""varmyTableappendToFramemyTextframemyArray

根据连接和数据集的不同,您应该会看到如下内容。

结果表

结论

Porky的主要问题是,它背后的人希望如果你遇到任何问题,你会付给他们咨询费。这并不一定是一个问题,特别是在Adobe生态系统中,但这确实意味着文档经常让人感觉缺乏。

我花了一些时间让上面的简单示例工作,主要原因是缺乏关于JavaScript和ExtendScript之间差异的定义,以及缺乏文档。

这里我还没有介绍其他几个功能,比如创建占位符图像和其他文本框功能,所以如果你愿意挖掘和实验,当你在InDesign中处理大型数据集时,Porky有潜力为你省去大量重复的任务。

然而,胆小的人不适合。

Baidu