一个用于创建 JDF 文件并通过 JMF 发送它们的简单包

2.1.0 2020-01-22 11:44 UTC

This package is auto-updated.

Last update: 2024-09-22 22:39:52 UTC


README

这是一个用于创建 JDF 文件并通过 JMF 发送的简单包。

JDF 是一种 XML 标准,用于将文件发送到数字打印机并将工作流程步骤传达给打印机和后加工设备。JMF 是一种通信协议,用于查询 "JMF 管理器"(RIP 计算机、打印服务器等)的作业/队列状态,并将 JDF 文件提交给它们进行处理

此包不实现这些标准的全部内容,它只是允许您创建任意数量文件的 JDF 文件,然后发送这些文件到 JMF 管理器,并查询管理器的作业状态。

安装

composer require joe-pritchard/jdf

配置

要覆盖默认行为,发布并修改配置文件

php artisan vendor:publish --provider=JoePritchard\\JDF\\Providers\\ServiceProvider

以下配置选项可以更改

  • server_url: 我们可以与您的 JMF 控制器通信的 URL
  • server_file_path: 如果您提交相对文件路径,我们将使用此路径作为前缀。在提交打印本地于 JMF 控制器的文件的指令时使用
  • sender_id: 这类似于您的用户代理
  • submit_queue_entry_callback: 当作业成功提交到控制器时调用的监听器。必须实现 handle() 方法
  • failed_queue_entry_callback: 当提交失败时的相同功能
  • enable_return_jmf: 是否请求控制器对您的应用程序进行返回 JMF 调用
  • return_jmf_url: 控制器应将返回的 JMF 消息发送到何处

每个选项的更多描述可以在配置文件本身中找到。

事件

我们将发出以下事件

  • JoePritchard\JDF\Events\JMFEntryFailed:当我们无法将作业提交到控制器时
  • JoePritchard\JDF\Events\JMFEntrySubmitted:当作业成功提交到控制器时
  • JoePritchard\JDF\Events\ReturnJMFReceived:当在我们的返回 JMF 路由上收到帖子时。如果您启用了返回 JMF 但没有指定 URL,则我们将监听 /jmf/return-jmf 并在从控制器收到访问时触发此事件

如果您不希望在配置文件中提供回调监听器,则可以直接在您的应用程序中监听这些事件。

用法

创建一个新的 JDF 文件

// instantiate a JDF object
$jdf = new \JoePritchard\JDF\JDF();
// add a new print file to the JDF
$jdf->addPrintFile('http://absolute/path/to/file.pdf', 1, $item_id);
// add a print file which is accessible locally to the JMF controller
$jdf->addPrintFile('relative/path/to/file.pdf', 1, $item_id);
// save the raw JDF to a file
file_put_contents('filename.jdf', $jdf->getRawMessage());

将 JDF 发送到控制器

到默认控制器(这仅在您已在配置文件中指定 server_url 时有效)

$jdf_manager = new \JoePritchard\JDF\Manager;
$jdf_manager->sendJDFFile('http://absolute/path/to/filename.jdf')->toDestination('workflow name');

到特定控制器(用于覆盖默认设置或如果您未在配置文件中指定 URL)

//This can't currently be done :(

从控制器获取作业状态

$jmf_manager = new \JoePritchard\JDF\Manager;

// get all jobs from the controller
$jobs = $jmf_manager->getJobs();

// get all jobs from the controller on a specific workflow/queue
$jobs = $jmf_manager->getJobs(['device' => 'Workflow Name']);

// get all jobs from the controller with a certain status
$jobs = $jmf_manager->getJobs(['status' => 'Completed/InProgress/Suspended/Aborted']);

// get a specific job from the controller
$job = $jmf_manager->getJobs(['job_id' => '9999']);

getJobs 返回一个包含数组的集合,格式如下

[
    'DeviceID'       => 'Workflow / Queue Name',
    'QueueEntryID'   => 'Job ID on controller',
    'Status'         => 'Job status on the controller',
    'SubmissionTime' => 2018-05-14 00:00:00,
    'StartTime'      => 2018-05-14 00:00:00,
    'EndTime'        => 2018-05-14 00:00:00,
]