Code Monkey home page Code Monkey logo

php-puppeteer's Introduction

PHP Puppeteer

This project provides the ability to generate PDF with Puppeteer in PHP

  • PHP 5 Compatible
  • No Dependent Package
  • Easy to Use

Dependencies

The library is running based on Nodejs(7.6 above) and Puppeteer It is tested under NodeJS 8.

Installation on CentOS 7:

sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum install -y nodejs pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium

Installation on Ubuntu 16.04:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium

Installation

Install its404/php-puppeteer using Composer.

composer require its404/php-puppeteer

Usage

Parameters

The library has set some default parameter values to support basic features, you can set the customized parameters to override the default ones, it supports all parameters of Puppeteer API

Sample parameter array:

$config  = [
    'html' => "<h1>Hello World</h1>",
	'pdf' => [
		'path' => '/tmp/test.pdf',
		'margin' => [
			'top' => '10mm',
			'right' => '10mm',
			'bottom' => '10mm',
			'left' => '10mm',
		]
	]
];

Note:

  1. If both $config['pdf']['html'] and $config['pdf']['url'] are set, html will be picked up.
  2. If $config['pdf']['path'] is not set, will return pdf data

Import

You need to import this namespace at the top of your PHP class

use Its404\PhpPuppeteer\Browser;

PDF by URL

You can generate PDF by URL through pdf function:

public function actionTest1()
{
	$config = [
		"url" => "https://www.highcharts.com/demo/line-basic",
	];
	$browser = new Browser();
	$browser->isDebug = true;
	$content = $browser->pdf($config);
	
	header("Content-type:application/pdf");
	echo $content;
}

You can set any parameter in $config to override the default values

PDF by HTML

You can generate PDF by html code through pdf function:

public function actionTest2()
{
	$config = [
		"html" => "<h1>Hello Wolrd</h1>"
	];
	$browser = new Browser();
	$content = $browser->pdf($config);
	
	header("Content-type:application/pdf");
	echo $content;
}

Debug The class Browser has one parameter $isDebug, it would be debug mode if it's true, detailed error messages would be returned from pdf function if an error happened during Puppeteer running.

PDF to specific path

You can generate PDF to a specific path by setting $config['pdf']['path']

public function actionTest3()
{
	$config = [
		"html" => "<h1>Hello Wolrd</h1>",
		'pdf' => [
			'path' => '/tmp/test.pdf',
		]
	];
	$browser = new Browser();
	$browser->isDebug = true;
	$result = $browser->pdf($params);
	
	if (isset($result['returnVal'])&& $result['returnVal'] == 0) {
		echo "PDF generated successfully";
	} else {
		echo "Failed to generate PDF";
		var_dump($result['output']);
	}
}

Start a new page on PDF

You can add following html code in the html where you'd like to start a new page for PDF.

<div style="page-break-after:always;"></div>

More Examples?

You can find more examples from here

php-puppeteer's People

Contributors

its404 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.