PHPackages                             gyselroth/document-engine-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. gyselroth/document-engine-client

ActiveLibrary[HTTP &amp; Networking](/categories/http)

gyselroth/document-engine-client
================================

PHP client for the document engine web service

0.1.0(8y ago)02.4kproprietaryPHPPHP &gt;=7.1.0

Since May 31Pushed 8y ago1 watchersCompare

[ Source](https://github.com/gyselroth/doc-engine-client)[ Packagist](https://packagist.org/packages/gyselroth/document-engine-client)[ Docs](http://www.gyselroth.com)[ RSS](/packages/gyselroth-document-engine-client/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

gyselroth Document Engine Client
================================

[](#gyselroth-document-engine-client)

Client library for the gyselroth Document Engine webservice

Minimum Requirements
--------------------

[](#minimum-requirements)

- PHP7.1 with extensions: json
- Build-tools: git, composer

Installation
------------

[](#installation)

- Install via composer

```
composer require gyselroth/document-engine-client:dev-trunk
```

Usage
-----

[](#usage)

- Creating a minimal client

```
$client = new Gyselroth\DocumentEngine\Client([
    'baseUrl' => 'https://docengine.example.com'
]);
```

- Creating a client using HTTP basic authentication

```
$client = new Gyselroth\DocumentEngine\Client([
    'baseUrl' => 'https://docengine.example.com',
    'authenticationType' => 'basic',
    'username'    => 'foo',
    'password'    => 'bar'
]);
```

- Creating a client using Bearer authentication (e.g. oauth2, openid connect etc.)

```
$client = new Gyselroth\DocumentEngine\Client([
    'baseUrl' => 'https://docengine.example.com',
    'authenticationType' => 'bearer',
    'token'    => 'aBCdeFGHIJKlmnOpq1RsTu',
    'password'    => 'bar'
]);
```

- The Document Engine Client lets you use own http client implementations. Any chosen implementation must implements the GuzzleHttp\\ClientInterface interface.

```
$client = new Gyselroth\DocumentEngine\Client([
    'baseUrl' => 'https://docengine.example.com'
], new MyHttpClient());
```

### Validate template

[](#validate-template)

```
$template = new \SplFileObject('template.docx');
$validity = $client->validateTemplate($template);
```

### Get merge-fields from template

[](#get-merge-fields-from-template)

```
$template = new \SplFileObject('template.docx');
$mergefields = $client->getMergefields($template);
```

### Generate DOCX or PDF from template with given merge-data in a synchronous manner

[](#generate-docx-or-pdf-from-template-with-given-merge-data-in-a-synchronous-manner)

```
$template = new \SplFileObject('template.docx');
$mergeData = [
        'field1' => 'value1',
        'field2' => 'value2',
];
$docxStream = $client->generateDocx($template, $mergeData);
$pdfStream = $client->generatePdf($template, $mergeData);
```

*Note: The document generation methods return instances of `Psr\Http\Message\StreamInterface`. To read the stream into a file one can use a snippet like:*

```
fwrite(fopen('result.pdf', 'w+'), $pdfStream->read($pdfStream->getSize()));
```

### Generate Docx or PDF from template with given merge-data in an asynchronous manner

[](#generate-docx-or-pdf-from-template-with-given-merge-data-in-an-asynchronous-manner)

```
$template = new \SplFileObject('template.docx');
$mergeData = [
        'field1' => 'value1',
        'field2' => 'value2',
];
$jobId = $client->generateDocxAsync($template, $mergeData);
$jobId = $client->generatePdfAsync($template, $mergeData);
```

#### Check current status of a job

[](#check-current-status-of-a-job)

*Note: Gyselroth\\DocumentEngine\\Client::getJobStatus will - in every case, except for the annotated exceptions - return a string which equals to a constant from Gyselroth\\DocumentEngine\\JobStatus*

```
$jobStatus = $client->getJobStatus($jobId);
```

#### Get an asynchronously generated document

[](#get-an-asynchronously-generated-document)

```
$documentStream = $client->getDocument($jobId);
```

Exceptions
----------

[](#exceptions)

All public methods of the client can throw one of the following exceptions:

- `Gyselroth\DocumentEngine\Client\Auth\AuthException`
    - failed authorization (HTTP 401 Unauthorized), e.g. missing authentication
- `Gyselroth\DocumentEngine\Client\ClientException`
    - client side error (HTTP 4xx, but not HTTP 401 Unauthorized), e.g. HTTP 400 Bad Request
- `Gyselroth\DocumentEngine\Client\ServerException`
    - server side error (HTTP 5xx), e.g. HTTP 500 Internal Server Error
- `Gyselroth\DocumentEngine\Client\ConnectionException`
    - Networking error, e.g. server not reachable

Development Notes
-----------------

[](#development-notes)

### Installation after checkout

[](#installation-after-checkout)

```
composer update
```

Running Tests
-------------

[](#running-tests)

- Unit tests

```
composer unittest
```

- System tests

```
export DOCENG_CLIENT_TEST_BASEURL=http://example.com
export DOCENG_CLIENT_TEST_AUTH_TYPE=basic
export DOCENG_CLIENT_TEST_BASIC_USER=test
export DOCENG_CLIENT_TEST_BASIC_PASSWORD=secret
composer systemtest
```

- All tests

```
export DOCENG_CLIENT_TEST_BASEURL=http://example.com
export DOCENG_CLIENT_TEST_AUTH_TYPE=basic
export DOCENG_CLIENT_TEST_BASIC_USER=test
export DOCENG_CLIENT_TEST_BASIC_PASSWORD=secret
composer test
```

History
-------

[](#history)

See `CHANGELOG.md`

Author and License
------------------

[](#author-and-license)

Copyright 2017-2018 gyselroth™ ()

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

[http://www.apache.org/licenses/LICENSE-2.0":http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0%22:http://www.apache.org/licenses/LICENSE-2.0)

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

### Used Open Source Software

[](#used-open-source-software)

Open source packages used by the gyselroth Document Engine Client are copyright of their vendors, see related licenses within the vendor packages.

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2953d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/48ce42c031ac21568fab6a2297d4687f393d93564415567abb5295706e9222df?d=identicon)[kstenschke](/maintainers/kstenschke)

---

Top Contributors

[![kstenschke](https://avatars.githubusercontent.com/u/1838456?v=4)](https://github.com/kstenschke "kstenschke (10 commits)")

---

Tags

clientrestpsr7servicedocument

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/gyselroth-document-engine-client/health.svg)

```
[![Health](https://phpackages.com/badges/gyselroth-document-engine-client/health.svg)](https://phpackages.com/packages/gyselroth-document-engine-client)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.2k532.1M2.5k](/packages/aws-aws-sdk-php)[neuron-core/neuron-ai

The PHP Agentic Framework.

2.0k656.1k34](/packages/neuron-core-neuron-ai)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)[amphp/http-client

An advanced async HTTP client library for PHP, enabling efficient, non-blocking, and concurrent requests and responses.

7308.5M194](/packages/amphp-http-client)[eightpoints/guzzle-bundle

Integrates Guzzle 6.x, a PHP HTTP Client, into Symfony. Comes with easy and powerful configuration options and optional plugins.

44512.5M57](/packages/eightpoints-guzzle-bundle)[shopify/shopify-api

Shopify API Library for PHP

4655.2M21](/packages/shopify-shopify-api)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
