Livedocx
Usage
The Livedocx class is the entry point of the library.
It serves both as a hub to assign the mergefields with values, and as a factory to create "ready to use" other classes.
If you use the frameworks integrations provided, these are working out of the box, juste fill the config files provided to start using the library.
If you're doing it the good-ol' way here is how you instanciate the class and prepare it for use:
use Awakenweb\Livedocx\Soap;
use Awakenweb\Livedocx\Livedocx;
use Awakenweb\Livedocx\Container;
$client = new Soap\Client(\SoapClient('https://path_to_the_wsdl'));
$client->connect(USERNAME, PASSWORD);
$livedocx = new Livedocx($client, new Container());
You don't have to worry about the Container class, as you will never have to deal directly with it. It just stores the field values, the blocks and the images.
Methods
Unless explicitely stated, all parameters and return values classes are prefixed with the namespace \Awakenweb\Livedocx\
.
Exceptions thrown by the classes are all prefixed by \Awakenweb\Livedocx\Exceptions
__construct($client, $container)
Exceptions: none
- $client: Soap\Client
- $container: Container
Create an instance of the Livedocx class.
assign($key, $value)
Exceptions: ContainerException
- $key: string|Block|array
- $value: string|Image
Assign a value to a mergefield.
This method accepts different type of parameters:
$livedocx->assign('fieldname', 'fieldvalue');
$livedocx->assign(array('fieldname'=>''value', 'otherfield'=>'other value'));
$livedocx->assign(BLOCK);
$livedocx->assign('imagename', IMAGE);
If a different type of value is provided, a ContainerException
will be thrown
createBlock()
Exceptions: none
Create a new Block
instance
createDocument()
Exceptions: none
Create a new Document
instance
createImage()
Exceptions: none
Create a new Image
instance
createLocalTemplate()
Exceptions: none
Create a new Templates\LocalTemplate
instance
createRemoteTemplate()
Exceptions: none
Create a new Templates\RemoteTemplate
instance
prepare()
Exceptions: DeclarationException
Merge all the fields with their real value and return an instance of Document
.
If an error occurs while actually sending the data to the webservice, a DeclarationException
will be thrown.
Templates
Usage
Both local and remote templates are used to manipulate template files. You can upload and download templates to and from Livedocx servers, as well as getting many metadata about them.
Only common methods between the two types of templates will be explained here. For more specific-templates related methods, read the following articles.
A Template
does class exists, but is abstract. You have to instanciate either Templates\LocalTemplate
or Templates\RemoteTemplate
to manipulate templates.
$template = $livedocx->createLocalTemplate();
$template->setName('MyTemplate.docx', '/home/me/myfolder/')
->setAsActive();
Methods
getAcceptedTemplateFormats()
Exceptions: Templates\StatusException
Get a list of all accepted file formats for file uploads.
If an error occurs while obtaning the list, a Templates\StatusException
will be thrown.
getAvailableFonts()
Exceptions: Templates\StatusException
Get a list of all accepted fonts that you can use in your templates.
If an error occurs while obtaning the list, a Templates\StatusException
will be thrown.
ignoreAllSubTemplates($state)
Exceptions: Templates\IgnoreException
Enable or disable the possibility to ignore subtemplates included into your main template.
If an error occurs while sending the data, a Templates\IgnoreException
will be thrown.
ignoreListOfSubTemplates($list)
Exceptions: Templates\InvalidException
, Templates\IgnoreException
Define a list of subtemplates to ignore while generating the final document.
If an error occurs while sending the list a Templates\IgnoreException
will be thrown.
If you don't provide an array as parameter, a Templates\InvalidException
will be thrown.
listAll()
Exceptions: Templates\StatusException
Get a list of all already uploaded templates on Livedocx service
If an error occurs while obtaning the list, a Templates\StatusException
will be thrown.
Local Templates
Usage
Local templates are the files present on your own server. This class is especially useful to upload these files to Livedocx.
$template = $livedocx->createLocalTemplate();
$template->setName('MyTemplate.docx', '/home/me/myfolder/');
->upload();
Methods
getContents()
Exceptions: FileExistsException
Return the contents of the file as a single string
If the file provided does not exist or is not readable, a FileExistsException
will be thrown.
getFormat($fullname)
Exceptions: FileExistsException
Return the format of the file identified by its full name as a string.
If the file provided does not exist or is not readable, a FileExistsException
will be thrown.
getName($full)
Exceptions: none
Return the name of the file as a string.
If the $full argument is provided, the complete path to the file is also returned.
setAsActive()
Exceptions: FileExistsException
, Templates\ActiveException
Set the current file as the active file.
When used on a Local template, the file is actually uploaded temporarily to the Livedocx servers, and deleted from their servers after generating the document.
If an error occurs while uploading the file, a Templates\ActiveException
will be thrown.
If the file provided does not exist or is not readable, a FileExistsException
will be thrown.
setName($name, $path)
Exceptions: none
- $name string
- $path string optional
Define the name of the template file with its path.
upload()
Exceptions: FileExistsException
, Templates\UploadException
Upload the template file to Livedocx server.
If an error occurs while uploading the file, a Templates\UploadException
will be thrown.
If the file provided does not exist or is not readable, a FileExistsException
will be thrown.
Remote Templates
Usage
Remote templates are used to manipulate template files stored on Livedocx servers.
You can download them, delete them, check if the template you ask for exists (so you can upload it if it's not the case) or get a list of all fields that exist in the active template.
$remote = $livedocx->createRemoteTemplate();
$remote->setName('MyTemplate.docx');
if($remote->exists()) // this line is not necessary as setAsActive calls it behind the scene.
$remote->setAsActive();
file_put_contents(__DIR__ . '/' . $remote->getName(), $remote->download());
Methods
delete()
Exceptions Templates\DeleteException
Delete a template from Livedocx servers. If the file does not exist, nothing happens.
If an error occurs while deleting the file, a Templates\DeleteException
will be thrown.
download()
Exceptions Templates\DonwloadException
, FileExistException
Get the contents of a template uploaded to Livedocx servers as a single string.
If the template does not exist on Livedocx, a FileExistsException
will be thrown.
If an error occurs while downloading the file, a Templates\DonwloadException
will be thrown.
exist()
Exceptions Templates\StatusException
Verify if the template file has been uploaded to Livedocx servers. Returns a boolean.
If an error occurs during the verification, a Templates\StatusException
will be thrown.
getFieldNames()
Exceptions Templates\StatusException
, Templates\NonActiveException
Get the list of all the available fields present on the template file. Returns an array.
If the template is not the active template, a Templates\NonActiveException
will be thrown.
If an error occurs while getting the fields list, a Templates\StatusException
will be thrown.
getName()
Exceptions: none
Get the name of the template file as a string.
setAsActive()
Exceptions Templates\ActiveException
, FileExistException
When used on a Remote template, the method first verify if the file has been uploaded on Livedocx servers, then set the file as active.
If the template does not exist on Livedocx, a FileExistsException
will be thrown.
If an error occurs while setting the file as active, a Templates\ActiveException
will be thrown.
setName($name)
Exceptions: none
Define the name of the template file.
Document
Usage
Documents are the files you generate when merging the fields with their value.
There are 2 ways of creating an instance of this class:
- You can use the
createDocument()
method of the Livedocx class that will return an empty document
- Or call the
prepare()
method of the Livedocx class that will also send the values you want to merge to the templates.
You can retrieve them either as document format:
pdf
doc
docx
rtf
* ...
or as images:
bitmaps files
bmp
jpg
png
tiff
...
* Microsoft Office Metafiles
Images allow you to get only specific page range of the document (i.e. from page 2 to page 7).
You can define a password for the document, or restrict some actions with a set of permissions before creating it. These passwords and permissions are only available when retrieving the document as a pdf file.
$document = $livedocx->prepare();
$document->setPassword('S3CR3T');
->create();
$images = $document->getAsBitmaps(1, 'jpg', 2, 7); // zoom, format, from page, to page
foreach($images as $pagenumber => $data)
{
$filename = __DIR__ . '/' . 'image_'. $pagenumber . '.jpg';
file_put_contents( $filename , $data);
}
file_put_contents(__DIR__ . '/' . 'myDocument.pdf', $document->retrieve('pdf'));
Methods
create()
Exceptions: Document\CreateException
Generate the document by merging the fields with their values
If an error occurs while generating the document, a Document\CreateException
will be thrown.
getAccessOptions()
Exceptions: Document\PermissionsException
Get a list of defined permissions for the generated document.
If an error occurs while getting the list, a Document\PermissionsException
will be thrown.
getAsBitmaps($zoomFactor, $format, $from, $to)
Exceptions: Document\BitmapsException
, Document\InvalidException
- $zoomFactor: int
- $format: string
- $from: int optional
- $to: int optional
Retrieve the generated document as a set of Bitmaps. Return a array where the array key is the page number and the value is a binary string you can use directly or save on your server.
You can provide a start page and an end page if you want only some specific pages as bitmaps.
$images = $document->getAsBitmaps(1, 'jpg');
foreach($images as $pagenumber => $data)
{
$filename = __DIR__ . '/' . 'image_'. $pagenumber . '.jpg';
file_put_contents( $filename , $data);
}
If you don't provide correct parameters, a Document\InvalidException
will be thrown.
If an error occurs while getting the bitmaps, a Document\BitmapsException
will be thrown.
getAvailableFormats()
Exceptions: Document\StatusException
Return a list of all available document formats you can retrieve your document as. Return an array.
If an error occurs while getting the list, a Document\StatusException
will be thrown.
getFormat()
Exceptions: none
Return the default format you set using setFormat() Return a string or null.
getMetaFiles($from, $to)
Exceptions: Document\InvalidException
, Document\MetafilesException
- $from: int optional
- $to: int optional
Retrieve the generated document as a set of Microsoft Office Metafiles Return a array where the array key is the page number and the value is a binary string you can use directly or save on your server.
You can provide a start page and an end page if you want only some specific pages as metafiles.
$images = $document->getMetaFiles();
foreach($images as $pagenumber => $data)
{
$filename = __DIR__ . '/' . 'metafile_'. $pagenumber . '.wmf';
file_put_contents( $filename , $data);
}
If you don't provide valid parameters, a Document\InvalidException
will be thrown.
If an error occurs while getting the metafiles, a Document\MetafilesException
will be thrown.
retrive($format)
Exceptions: Document\InvalidException
Retrieve the document as a binary string in the specified format.
If you don't provide a format, the default format set with setFormat()
will be used.
If no format at all is provided, a Document\InvalidException
will be thrown.
If an error occurs while retrieving the document, a Document\RetrieveException
will be thrown.
setFormat($format)
Exceptions: none
Define a default format to use when retrieving the document
setPassword($password)
Exceptions: Document\PasswordException
Set a password required to open the generated document.
If an error occurs while setting the password, a Document\PasswordException
will be thrown.
setPermissions($permissions, $password)
Exceptions: Document\PermissionsException
, Document\InvalidException
- $permissions: array
- $password: string
Set a list of restricted permissions and a master password to unlock them.
If you don't provide valid parameters, a Document\InvalidException
will be thrown.
If an error occurs while setting the password and permissions, a Document\PermissionsException
will be thrown.
Image
Usage
Allow you to manage images to be included in your documents.
You can upload files to Livedocx, download them, delete them, get a list of all images already uploaded or check the image formats supported by Livedocx.
$image = $livedocx->createImage();
$image->setFilename('myImage.jpg', __DIR__ );
$image->upload();
$list = $image->listAll();
foreach($list as $image)
{
var_dump($image['filename']);
}
Methods
delete()
Exceptions Image\DeleteException
Delete the image file from Livedocx servers
If an error occurs while deleting the file, a Image\DeleteException
will be thrown.
download()
Exceptions: Image\DownloadException
Download the image from Livedocx server. Return a string
If an error occurs while downloading the file, a Image\DownloadException
will be thrown.
exists()
Exceptions: Image\StatusException
Verify the existence of a file on Livedocx server. Return a boolean
If an error occurs while verifying the file, a Image\StatusException
will be thrown.
getAcceptedFormats()
Exceptions: Image\StatusException
Get the list of all accepted image formats for upload Return an array
If an error occurs while obtaining the list, a Image\StatusException
will be thrown.
getAvailableReturnFormats()
Exceptions: Image\StatusException
Get the list of all available image formats for document generation Return an array
If an error occurs while obtaining the list, a Image\StatusException
will be thrown.
getName($full)
Exceptions: none
Get the name of the image file Return a string
If the $full parameter is set, the path is also returned.
listAll()
Exceptions: Image\StatusException
Get a list of all images already uploaded to Livedocx servers Return an array
If an error occurs while obtaining the list, a Image\StatusException
will be thrown.
setFilename($filename, $path)
Exceptions: none
- $filename: string
- $path: string optional
Define the name of the image file.
upload()
Exceptions: FileExistException
, Image\UploadException
Upload the image to Livedocx servers
If the file provided does not exist, a FileExistException
will be thrown.
If an error occurs while uploading the file, a Image\UploadException
will be thrown.
Blocks
Usage
Block are sets of values in a repeated structure.
You define them by providing a set of fieldname => value bindings.
$block = $livedocx->createBlock();
$block->setName('attendees');
$block->bind(['firstname' => 'John', 'lastname' => 'Doe']);
$livedocx->assign($block);
Methods
bind($values)
Exceptions: Block\InvalidException
Add one or multiple lines of values to a block This method is chainable.
When binding a set of values to a block, you can either do it line by line, or multiple lines at the same time.
$block->bind(['firstname' => 'Arnold', 'lastname' => 'Schwarzenegger'])
->bind(['firstname' => 'Chuck', 'lastname' => 'Norris'])
->bind(['firstname' => 'Jean-Claude', 'lastname' => 'Van Damme']);
// has exactly the same result as
$block->bind([
['firstname' => 'Arnold', 'lastname' => 'Schwarzenegger'],
['firstname' => 'Chuck', 'lastname' => 'Norris'],
['firstname' => 'Jean-Claude', 'lastname' => 'Van Damme']
]);
When you try to bind a value that is not contained in an array, a Block\InvalidException
will be thrown.
getAllBlockNames()
Exceptions: Block\StatusException
Return the name of all blocks contained in the active template file. Return an array.
If an error occurs while obtaining the list, or no template has been set as active, a Block\StatusException
will be thrown.
getFieldNames()
Exceptions: Block\StatusException
, Block\NameException
Return the name of all fields contained in the block. Return an array.
If an error occurs while obtaining the list, or no template has been set as active, a Block\StatusException
will be thrown.
If you call this method before giving the block a valid name, a Block\NameException
will be thrown.
getFieldNames()
Exceptions: Block\StatusException
, Block\NameException
Return the name of all fields contained in the block. Return an array.
If an error occurs while obtaining the list, or no template has been set as active, a Block\StatusException
will be thrown.
If you call this method before giving the block a valid name, a Block\NameException
will be thrown. (see getName()
method)
getName()
Exceptions: Block\NameException
Return the name of the block if it has been set.
If no name has been set for the block, a Block\NameException
will be thrown.
setName($name)
Exceptions: Block\NameException
Define the name of the block.
If the provided name is not a valid string, a Block\NameException
will be thrown.
Soap Client
Usage
The SOAP Client is heavilly used behind the scene, and you only have to manipulate a few of its methods. Constructor and connect are the only methods you will have to deal with.
The constructor takes a ext-soap \SoapClient
as parameter, as you can see in the example below.
<?php
use Awakenweb\Livedocx\Soap\Client;
use Awakenweb\Livedocx\Livedocx;
use Awakenweb\Livedocx\Container;
// for free accounts:
$wsdl = 'https://api.livedocx.com/2.1/mailmerge.asmx?wsdl';
// for premium:
$wsdl = "https://premium01.livedocx.com/REPLACE_THIS_BY_YOUR_USERNAME/mailmerge.asmx?WSDL"
// for fully licensed: only you may know
$soap = new Client(new \SoapClient($wsdl));
$soap->connect(USERNAME, PASSWORD);
if($soap->isConnected()) {
$Livedocx = new Livedocx($soap, new Container());
} else {
throw new \Exception('WTF (What a Terrible Failure)');
}
// your code goes here
Methods
connect($username, $password)
Exceptions: Soap\ConnectException
- $username: string
- $password: string
Authenticate the user to the Livedocx webservice. This method is absolutely mandatory, as no API call can be done if this method has not been called before.
If an error occurs when authenticating, a Soap\ConnectException
will be thrown.
isConnected()
Exceptions: none
Verify if the connect(...) method has been called. Returns a boolean.
__call($name, $arguments)
Exceptions: Soap\ConnectException
, SoapException
This method acts as a proxy for any API call method. Returns the result of the API call.
If an API call is made before the connect(...) method has been called, a Soap\ConnectException
will be thrown.
If an error occurs while making the actual API call, a SoapException
will be thrown.