bitandblack / idml-json-converter
将Adobe InDesign标记语言文件(IDML)转换为JSON,或将JSON转换为IDML。
Requires
- php: >=8.2
- ext-dom: *
- ext-json: *
- ext-zip: *
- bitandblack/composer-helper: ^1.0
- bitandblack/helpers: ^1.8 || ^2.0
- maennchen/zipstream-php: ^3.0
- symfony/console: ^6.0 || ^7.0
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^11.0
- rector/rector: ^1.0
- symplify/easy-coding-standard: ^12.0
README
Bit&Black IDML-JSON转换器
将Adobe InDesign标记语言文件(IDML)转换为JSON,或将JSON转换为IDML。
动机
使用此转换器可以简化在PHP中处理IDML文件。
- 提取信息很简单,因为您只需遍历一个数组,该数组包含IDML文件的全部内容。
- 操作信息很简单,因为您可以更改所有值以满足您的需求。这允许处理在Adobe InDesign中添加的占位符。
请注意,IDML-JSON转换器不解释IDML内的值。这意味着您需要自行计算元素的位置,例如。
示例
如果您想快速查看JSON的样式,请转到示例文件夹,并获取output.json文件。
安装
此库是用PHP编写的,并专为与Composer一起使用而设计。请确保您系统上已安装这两个。
然后通过运行$ composer require bitandblack/idml-json-converter
将库添加到您的项目中。
使用
从命令行
此库包含两个命令,允许通过CLI将IDML转换为JSON和将JSON转换为IDML。
CLI位于bin/idml-json-converter
下,或者如果您将库作为Composer依赖项安装,则在vendor/bin/idml-json-converter
下。
使用以下命令:
idml:convert:json
将IDML文件转换为JSON。json:convert:idml
将JSON文件转换为IDML。
使用选项-h
获取有关命令使用的更多信息。
自定义
除了使用CLI之外,还可以手动转换内容。
转换IDML文件
使用IDML类,并用IDML的路径进行初始化。调用getContent()
方法将返回其内容作为一个数组。
<?php use BitAndBlack\IdmlJsonConverter\File\IDML; $idml = new IDML('/path/to/file.idml'); $idmlContent = $idml->getContent();
该数组包含每个文件的名字及其内容。例如
[
'mimetype' => 'application/vnd.adobe.indesign-idml-package',
'designmap.xml' => [
'@name' => 'Document',
'@attributes' => [
'DOMVersion' => 18.0,
'Self' => 'd',
'StoryList' => [
0 => 'ufa',
1 => 'u126',
2 => 'u97',
],
'Name' => 'file.indd',
[...]
您可以使用getJSON()
方法返回转换为JSON字符串的内容。
转换JSON内容
使用JSON类,并用您的内容数组进行初始化。该数组需要与上面显示的结构相同。调用getIDML()
方法将返回其内容作为一个字符串,该字符串可以保存为IDML文件(例如,通过使用file_put_contents()
)。
<?php use BitAndBlack\IdmlJsonConverter\File\JSON; $content = [ 'mimetype' => 'application/vnd.adobe.indesign-idml-package', 'designmap.xml' => [ '@name' => 'Document', '@attributes' => [ 'DOMVersion' => 18.0, 'Self' => 'd', 'StoryList' => [ 0 => 'ufa', 1 => 'u126', 2 => 'u97', ], 'Name' => 'file.indd', [...] ]; $json = new JSON($content); $idmlContent = $json->getIDML(); file_put_contents( '/path/to/file.idml', $idmlContent );
其他工具
Bit&Black提供了一些处理IDML文件的工具
- IDML-Creator库,它允许以面向对象的方式在PHP中原生创建IDML内容。(示例在这里。)
- IDML-Writer库,可以将IDML内容写入有效的IDML文件。
- IDML-Validator库允许对Adobe官方模式进行IDML文件验证。
请自由访问www.idml.dev获取更多信息!
帮助
如果您有任何问题,请通过hello@bitandblack.com
联系我们。
更多关于Bit&Black的信息可以在www.bitandblack.com找到。