From 3f0ef57d31d88ef072c9ea24f43cad75443e3e21 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 1 Jan 2017 12:20:30 +0000 Subject: [PATCH] Added wkhtmltopdf support and done some style tweaks Closes #248 --- .gitignore | 1 + app/Services/ExportService.php | 8 +- composer.json | 3 +- composer.lock | 121 +++++++++++++++++++++- config/app.php | 2 + config/snappy.php | 18 ++++ resources/assets/sass/_forms.scss | 5 +- resources/views/pages/revisions.blade.php | 2 +- 8 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 config/snappy.php diff --git a/.gitignore b/.gitignore index 362df57e1..83b754c04 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ _ide_helper.php /storage/debugbar .phpstorm.meta.php yarn.lock +/bin \ No newline at end of file diff --git a/app/Services/ExportService.php b/app/Services/ExportService.php index 14084d320..50ba75c17 100644 --- a/app/Services/ExportService.php +++ b/app/Services/ExportService.php @@ -1,6 +1,5 @@ $page, 'css' => $cssContent])->render(); + $useWKHTML = config('snappy.pdf.binary') !== false; $containedHtml = $this->containHtml($pageHtml); - $pdf = \PDF::loadHTML($containedHtml); + if ($useWKHTML) { + $pdf = \SnappyPDF::loadHTML($containedHtml); + } else { + $pdf = \PDF::loadHTML($containedHtml); + } return $pdf->output(); } diff --git a/composer.json b/composer.json index 7d4b5e62b..5a8fd67ae 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,8 @@ "league/flysystem-aws-s3-v3": "^1.0", "barryvdh/laravel-dompdf": "^0.7", "predis/predis": "^1.1", - "gathercontent/htmldiff": "^0.2.1" + "gathercontent/htmldiff": "^0.2.1", + "barryvdh/laravel-snappy": "^0.3.1" }, "require-dev": { "fzaninotto/faker": "~1.4", diff --git a/composer.lock b/composer.lock index 74a090288..dcde9d9c6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "3124d900cfe857392a94de479f3ff6d4", - "content-hash": "a968767a73f77e66e865c276cf76eedf", + "hash": "2438a2f4a02adbea5f378f9e9408eb29", + "content-hash": "6add8bff71ecc86e0c90858590834a26", "packages": [ { "name": "aws/aws-sdk-php", @@ -255,6 +255,58 @@ ], "time": "2016-07-04 11:52:48" }, + { + "name": "barryvdh/laravel-snappy", + "version": "v0.3.1", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-snappy.git", + "reference": "509a4497be63d8ee7ff464a3daf00d9edde08e21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/509a4497be63d8ee7ff464a3daf00d9edde08e21", + "reference": "509a4497be63d8ee7ff464a3daf00d9edde08e21", + "shasum": "" + }, + "require": { + "illuminate/filesystem": "5.0.x|5.1.x|5.2.x|5.3.x", + "illuminate/support": "5.0.x|5.1.x|5.2.x|5.3.x", + "knplabs/knp-snappy": "*", + "php": ">=5.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3-dev" + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\Snappy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Snappy PDF/Image for Laravel 4", + "keywords": [ + "image", + "laravel", + "pdf", + "snappy", + "wkhtmltoimage", + "wkhtmltopdf" + ], + "time": "2016-08-05 13:08:28" + }, { "name": "barryvdh/reflection-docblock", "version": "v2.0.4", @@ -997,6 +1049,71 @@ ], "time": "2015-12-05 17:17:57" }, + { + "name": "knplabs/knp-snappy", + "version": "0.4.3", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/snappy.git", + "reference": "44f7a9b37d5686fd7db4c1e9569a802a5d16923f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/snappy/zipball/44f7a9b37d5686fd7db4c1e9569a802a5d16923f", + "reference": "44f7a9b37d5686fd7db4c1e9569a802a5d16923f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/process": "~2.3|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.7" + }, + "suggest": { + "h4cc/wkhtmltoimage-amd64": "Provides wkhtmltoimage-amd64 binary for Linux-compatible machines, use version `~0.12` as dependency", + "h4cc/wkhtmltoimage-i386": "Provides wkhtmltoimage-i386 binary for Linux-compatible machines, use version `~0.12` as dependency", + "h4cc/wkhtmltopdf-amd64": "Provides wkhtmltopdf-amd64 binary for Linux-compatible machines, use version `~0.12` as dependency", + "h4cc/wkhtmltopdf-i386": "Provides wkhtmltopdf-i386 binary for Linux-compatible machines, use version `~0.12` as dependency", + "wemersonjanuario/wkhtmltopdf-windows": "Provides wkhtmltopdf executable for Windows, use version `~0.12` as dependency" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Knp\\Snappy": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KNPLabs Team", + "homepage": "http://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "http://github.com/KnpLabs/snappy/contributors" + } + ], + "description": "PHP5 library allowing thumbnail, snapshot or PDF generation from a url or a html page. Wrapper for wkhtmltopdf/wkhtmltoimage.", + "homepage": "http://github.com/KnpLabs/snappy", + "keywords": [ + "knp", + "knplabs", + "pdf", + "snapshot", + "thumbnail", + "wkhtmltopdf" + ], + "time": "2015-11-17 13:16:27" + }, { "name": "laravel/framework", "version": "v5.3.11", diff --git a/config/app.php b/config/app.php index 786f005ac..0c3e1e71c 100644 --- a/config/app.php +++ b/config/app.php @@ -148,6 +148,7 @@ return [ Barryvdh\DomPDF\ServiceProvider::class, Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, Barryvdh\Debugbar\ServiceProvider::class, + Barryvdh\Snappy\ServiceProvider::class, /* @@ -218,6 +219,7 @@ return [ 'ImageTool' => Intervention\Image\Facades\Image::class, 'PDF' => Barryvdh\DomPDF\Facade::class, + 'SnappyPDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, 'Debugbar' => Barryvdh\Debugbar\Facade::class, /** diff --git a/config/snappy.php b/config/snappy.php new file mode 100644 index 000000000..73f21fd30 --- /dev/null +++ b/config/snappy.php @@ -0,0 +1,18 @@ + [ + 'enabled' => true, + 'binary' => file_exists(base_path('wkhtmltopdf')) ? base_path('wkhtmltopdf') : env('WKHTMLTOPDF', false), + 'timeout' => false, + 'options' => [], + 'env' => [], + ], + 'image' => [ + 'enabled' => false, + 'binary' => '/usr/local/bin/wkhtmltoimage', + 'timeout' => false, + 'options' => [], + 'env' => [], + ], +]; diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss index 62a7b4001..7e6b800d2 100644 --- a/resources/assets/sass/_forms.scss +++ b/resources/assets/sass/_forms.scss @@ -33,7 +33,7 @@ position: relative; z-index: 5; textarea { - font-family: 'Roboto Mono'; + font-family: 'Roboto Mono', monospace; font-style: normal; font-weight: 400; padding: $-xs $-m; @@ -55,6 +55,7 @@ display: flex; flex-direction: column; border: 1px solid #DDD; + width: 50%; } .markdown-display { padding: 0 $-m 0; @@ -68,7 +69,7 @@ .editor-toolbar { width: 100%; padding: $-xs $-m; - font-family: 'Roboto Mono'; + font-family: 'Roboto Mono', monospace; font-size: 11px; line-height: 1.6; border-bottom: 1px solid #DDD; diff --git a/resources/views/pages/revisions.blade.php b/resources/views/pages/revisions.blade.php index 3549f5f05..3b9812abd 100644 --- a/resources/views/pages/revisions.blade.php +++ b/resources/views/pages/revisions.blade.php @@ -45,7 +45,7 @@ @else {{ trans('entities.pages_revisions_preview') }}  |  - {{ trans('entities.pages_revisions_restore') }} + {{ trans('entities.pages_revisions_restore') }} @endif