bitandblack/idml-json-converter

将Adobe InDesign标记语言文件(IDML)转换为JSON,或将JSON转换为IDML。

2.0.0 2024-07-23 11:44 UTC

This package is auto-updated.

Last update: 2024-09-23 12:00:08 UTC


README

PHP from Packagist Codacy Badge Total Downloads License

Bit&Black Logo

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找到。