在InDesign中使用Porky显示数据集
作为一名多年的程序员,我坚信所有东西都应该一次性编写,并且能够在多个地方使用它。在编码世界中,由于开放的数据格式和广泛支持的api,我们通常可以拥有一组中央内容,并将其用于不同的应用程序和用例,所有这些都很好地同步。
在桌面设计领域,这在传统上是比较困难的,因为内容来源是Word文档、InDesign文件,可能还有一些内容管理系统或电子表格。
想象一下当我偶然发现肥胖的,一个开源的InDesign扩展(好吧,实际上是一个脚本),它可以让你连接你的InDesign文件到各种数据源。
安装
下载脚本的当前版本,将该文件夹解归档并添加到InDesign中脚本/脚本面板文件夹(在我的Mac上,这是在InDesign应用程序包), Porky现在应该显示在InDesign脚本面板中。
Porky需要在本地计算机上安装node.js,完整的说明可以在这里找到.当你安装了它,我们可以安装一些添加到node.js所需的Porky处理连接到它支持的各种服务。通过打开命令行并发出这两个命令来安装它们(这是针对安装了InDesign CC的Mac,路径将根据您的平台和版本而有所不同):
cd/应用程序/Adobe\排版软件名称\CC\2015/脚本/脚本\面板/笨拙的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="";试一试{mySQLResult=connectToDataSource(“SELECT * FROM articles”);mySQLResult=JSON.解析(mySQLResult);警报(mySQLResult);}抓(e){警报(“错误\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”;//在这里用点符号指定路径,或者留下""来请求整个对象varmyJSONResult=connectToDataSource(“data.results”);警报(JSON.解析(myJSONResult));警报(JSON.stringify(myJSONResult));
CSV
使用一个CSV版本的SQL表:
/ / @include . . / bin / porky.jsx;//从特定文件夹读取现有文本文件varmyCSVFileContent=readFile(“articles.csv”);//文件绝对路径如果(myCSVFileContent){警报(读取内容为\n的文件+myCSVFileContent);}其他的{警报(“文件不存在”);}
显示数据
创建文本框
/ / @include . . / bin / porky.jsx;...varmyTextframe=addFrame(50,50,500,250,"");...
这将创建一个新的文本框架,参数(按各自的顺序)等于x和y坐标以及框架的宽度和高度。最后一个参数是内容的字符串或文件,现在我们将其保留为空。
用数据填充帧
这个过程取决于返回数据的结构,对于某些数据返回格式,这个过程比其他格式更容易。我们使用以下函数:
/ / @include . . / bin / porky.jsx;...varmyTable=appendToFrame(myTextframe,myArray);...
的myArray
变量需要一个字符串或二维数组,即行数组,每行包含一组内容值。获取这个数组可能会很复杂。
JSON
JSON可能很难,这取决于返回数据的格式以及它是JSON对象还是数组。在Marvel API的例子中,这段代码部分适用于我:
...varmyArray=新数组(项目.长度);myArray[0]=[“id”,“名称”,“描述”];为(var我=1;我不最整洁的解决方案,您可能会遇到一些问题与转义字符,但作为我说,这这在很大程度上取决于你JSON结果.MySQL输出结果从一个MySQL表类似于JSON作为的MySQL数据集返回作为JSON:[代码的语言=“javascript”]varmyArray=新数组(mySQLResult.长度);myArray[0]=[“id”,“标题”,“通道”,“url”];为(var我=1;我CSVCSV是最简单的:[代码的语言=“javascript”]/ / @include . . / bin / porky.jsx;...varmyArray=csvToTwoDArray(myCSVFileContent,{rSep:' \ n ',fSep:”、“,”:“”,修剪:真正的});varmyTextframe=addFrame(50,50,250,250,"");varmyTable=appendToFrame(myTextframe,myArray);
根据连接和数据集的不同,您应该会看到如下内容。
结论
Porky的主要问题是,它背后的人希望如果你遇到任何问题,你会付给他们咨询费。这并不一定是一个问题,特别是在Adobe生态系统中,但这确实意味着文档经常让人感觉缺乏。
我花了一些时间让上面的简单示例工作,主要原因是缺乏关于JavaScript和ExtendScript之间差异的定义,以及缺乏文档。
这里我还没有介绍其他几个功能,比如创建占位符图像和其他文本框功能,所以如果你愿意挖掘和实验,当你在InDesign中处理大型数据集时,Porky有潜力为你省去大量重复的任务。
然而,胆小的人不适合。