“Chrome Direct Print” is abandoned in favor of “WebApp Hardware Bridge“
Which support all modern browsers (Chrome, Firefox, Edge),
with better compatibility, performance and serial port support.
The most challenging (and missing) part of Web-based applications (especially internal systems) is printing.
Browsers do not allow silent printing and users demand it heavily.
“Chrome Direct Print” bridge the gap between Printer and Web Apps.
** Support Windows, Chrome and PDF only **
“Chrome Direct Print” make use of “Native Messaging API” to communicate with processes (aka host).
The “host” is written in Python, which is responsible for enumerating printers,
download PDF documents, and finally calling embed PDF reader to send PDF to printer.
This project is no longer maintained.
Source code here are for reference and study purpose only.
Chrome Extension: https://github.com/imTigger/chrome-hardware-bridge-app
NSIS Installer: https://github.com/imTigger/chrome-hardware-bridge-installer
Chrome Extension: https://chrome.google.com/webstore/detail/chrome-direct-print/fnfkcaeloalplnglklappfjfjeafakeo
User Manual: https://s3-ap-southeast-1.amazonaws.com/tiger-workshop-public/Chrome+Direct+Print+User+Manual.pdf
Web App Usage: https://blog.tiger-workshop.com/chrome-direct-print-web-app-usage/
This article requires Windows 10 (Build Version 1709 [The Fall Creators Update]) or above to work.
Although WSL exists since Version 1607 [Anniversary Update], it’s harder to setup and more buggy.
In this tutorial we will setup this development environment in WSL (In Part 1)
PHP 7.2 (Run as FPM)
With those tools under Windows 10 (In Part 2)
Bash and Linux CLI tools
Continue reading “[WSL] PHP Development Environment by “Windows Subsystem for Linux” (Part 1)”
Laravel is awesome, but personally I don’t appreciate their documentation as it seems always “beginner orientated”.
They trend make simple things automagically happen, without let you knowing how it works.
They you get into trouble when you need advanced functionality.
Say, you get this boilerplate when typing
php artisan make:job TestJob:
class TestJob implements ShouldQueue
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
* Create a new job instance.
* @return void
public function __construct()
* Execute the job.
* @return void
public function handle()
So, what actually are
Documentation won’t tell you, even if you read the API Reference, you have little idea what they means.
Continue reading “Laravel Queue: Job Class demystified (ShouldQueue, Dispatchable, InteractsWithQueue, Queueable, SerializesModels)”