Co-creating your agency’s project definition & client onboarding toolkit

• Delivery-approach shaping tools
• Risk review & rebalancing process

As an accomplished Agile coach, agency business owner, strategist and developer, I have spent over two decades at the intersection of technology, business, humans, and creative problem-solving. My journey began in the trenches of software development, where I honed my technical skills and developed a passion for building elegant, user-centric solutions. This technical foundation has been crucial in understanding the complexities of product development and delivery.

In founding and leading a digital agency, I navigated the challenges of scaling a service-oriented business, mastering the art of client relations delivering high-quality digital products and transitioning projects to value focused support agreements. This experience taught me the nuances of managing client expectations and the importance of transparent, effective communication in building long-lasting partnerships.

As an agile coach, I’ve guided teams and organisations in adopting agile methodologies, focusing on continuous improvement, flexibility, and delivering value quickly. My approach emphasises collaboration, adaptability, and empowering teams to make decisions that lead to better project outcomes.

In my role as a strategist, I focused on business processes and technological innovation. I help client-facing agencies refine their sales approaches and product delivery methods, ensuring they align with market needs and client expectations. My strategy work is informed by hands-on experience in software development, commercial approaches and product delivery in client-facing agencies.

With a client-centric mindset, I support agencies in crafting compelling value propositions, streamlining operations, and fostering a culture of excellence and innovation. My goal is to help agencies not just survive but thrive in the ever-evolving digital landscape by becoming more resilient, agile, and client-focused.

Get in touch

Yii 1, PHP 7.1, yii-pdf and Mpdf

Mpdf 6.x only supports PHP versions up to 7.0. If you’re upgrading your local machine, or hosting environment to PHP 7.1 or beyond (you should be) then you’ll need to upgrade your Mpdf install to something more recent than 6. That requires a few changes.

Now just to make things complex here, the latest version of Mpdf happens to be version 7.1. From here on I’ll try and prefix any version numbers with either PHP or Mpdf.

Mpdf 7 and greater is composer install only. You could still download and copy the files into place, but I highly recommend using composer to manage your vendor packages in Yii (and Yii 2). It will save you hours and hours over time.

Mpdf 7 has updated it’s class name to be Mpdf with a capital M, and changed it’s construct method to accept a config array instead of separate parameters. Small but significant updates we’ll have to deal with.

If you’re already using composer, then you’ll have a composer.json file in the root of your codebase, and in there you should have a line which starts “mpdf/mpdf”.

That line will probably end something like “^6.0” or “^6.4”

Assuming it’s less than “7.x.x” we’re going to update with composer.

Back up your codebase. I shouldn’t have to mention it, but do it, honest.

Run composer require mpdf/mpdf “^7.0”

That line will install the latest version, Mpdf 7.1, allow anything newer to be installed if you update in the future, and change your composer.json file (and likely your composer.lock file too) to include the newer information.

So we have the latest code, but we need to update Yii to use it.

yii-pdf wraps mpdf and makes it available via Yii->app()->ePdf->mpdf()

The yii-pdf config to get it functioning with Mpdf 7+ will look something like this:

'ePdf' => [
	'class' => 'application.extensions.yii-pdf.EYiiPdf',
	'params' => [
		'mpdf' => [
			'librarySourcePath' => 'vendor.mpdf.mpdf.src.*',
			'constants' => [
				'_MPDF_TEMP_PATH' => Yii::getPathOfAlias('application.runtime'),
			],
			'class'=>'\Mpdf\Mpdf',
			'defaultParams' => [
				'mode' => '',		//  This parameter specifies the mode of the new document.
				'format' => 'A4',	// format A4, A5, ...
			],
		],
	],
],

Note the librarySourcePath and class values. You can add your existing defaultParams and anything else which was in your preferences previously.

The last part is to update all places where you call the mpdf library. Previously it would have looks something like:

$mpdf = Yii::app()->ePdf->mpdf('UTF-8', '', 0, '', 15, 15, 15, 15, 8, 8);

We now convert the config to be an array of values:

$mpdf = Yii::app()->ePdf->mpdf(['UTF-8', '', 0, '', 15, 15, 15, 15, 8, 8]);

And that should be it. Update using composer, update your config, update all locations you instantiate mpdf. Then check your pdf generating code is still functioning.