Jump to content
Jefrey

WKHtmlToX - AutoIt object/class to convert HTML files/pages into PDF and images

Recommended Posts

Jefrey

Hi!

I made this class because many of my AutoIt projects have to generate PDF files (logs, incomes...), and I always have to FileInstall() wkhtmlto*.exe and care about arguments, putting them in temporary folder then deleting it and many other always-the-same boring things.

It's a class/object. It uses AutoItObject (which is already included). The wkhtmltopdf.exe and wkhtmltoimage.exe files are also included. All you must do to start using the class is including just the class file and instancing the class. Here's an example:

#include "class\wkhtmltox.au3"

Local $oObject = WKHtmlToX()

$oObject.Input = "http://microsoft.com/"
$oObject.Output = "microsoft.pdf" ; relative to current working dir

$oObject.Convert()

; Now converting the same page into PNG

$oObject.ToFormat = "png"
$oObject.Output = "microsoft.png"

$oObject.Convert()

Help file included.

Download file is just a redirect link because of the file size (14 MB because of wkhtmlto*.exe). The forum upload seems not to be working.

Download full script (13,7 MB)

AutoIt Forum Files: https://www.autoitscript.com/forum/files/file/343-wkhtmktox/ 

Dropbox: https://www.dropbox.com/s/xzw1l0b0y08mv8z/wkhtmltox.zip?dl=0

 

License info

As wkhtmltopdf is LGPL, you can use it on a proprietary software, since you tell that you're using it (a link to http://wkhtmltopdf.org on the help files and About dialog would be cool...)

Please check AutoItObject and CreateFilesEmbedded licenses: https://www.autoitscript.com/forum/topic/110379-autoitobject-udf/ and https://www.autoitscript.com/forum/topic/132564-createfilesembeddedau3-like-fileinstall/ 

This class is just a wrapper, so you don't need to tell anything about it on your app.

Edited by Jefrey
Added forum files link and license info
  • Like 2

My stuff

Spoiler

My UDFs  _AuThread multithreading emulation for AutoIt · _ExtInputBox an inputbox with multiple inputs and more features · forceUTF8 fix strings encoding without knowing its original charset · JSONgen JSON generator · _TCPServer UDF multi-client and multi-task (run on background) event-based TCP server easy to do · _TCPClient_UDF multi-server and multi-task (runs on background) event-based TCP client easy to do · ParseURL and ParseStr functions ported from PHP · _CmdLine UDF easily parse command line parameters, keys or flags · AutoPHP Create documents (bills, incomes) from HTML by sending variables/arrays from AutoIt to PHP · (Un)Serialize Convert arrays and data into a storable string (PHP compatible) · RTTL Plays and exports to MP3 Nokia-format monophonic ringtones (for very old cellphones) · I18n library Simple and easy to use localization library · Scripting.Dictionary OOP and OOP-like approach · Buffer/stack limit arrays to N items by removing the last one once the limit is reached · NGBioAPI UDF to work with Nitgen fingerprint readers · Serial/Licensing system require license key based on unique machine ID from your users · HTTP a simple WinHTTP library that allows GET, POST and file uploads · Thread true AutoIt threads (under-dev) · RC4 RC4 encryption compatible with PHP and JS ·  storage.au3 localStorage and sessionStorage for AutoIt Classes _WKHtmlToX uses wkhtmlto* to convert HTML files and webpages into PDF or images (jpg, bmp, gif, png...) Snippets _Word_DocFindReplaceByLongText replace strings using Word UDF with strings longer than 255 characters (MSWord limit) rangeparser parser for printing-like pages interval (e.g.: "1,2,3-5") EnvParser parse strings/paths with environment variables and get full path Random stuff Super Mario beep sound your ears will hurt

 

Share this post


Link to post
Share on other sites
mLipok

Can you put this files to:
https://www.autoitscript.com/forum/files/

instead Dropbox ?

please 

 

mLipok

 

edit: as a category you can use "PDF"

 

btw. 

As wkhtmltopdf is GNU is this mean: If I use your code then my program made in AutoIt becomes licensed as GNU ?

 

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library
 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2018-10-31

Share this post


Link to post
Share on other sites
Jefrey

Hi, @mLipok Thanks for your response!

Can you put this files to:
https://www.autoitscript.com/forum/files/

instead Dropbox ?

please 

Although the total file limit in it was also 7.86 MB, I was able to upload :blink:

Well... Here's the link: https://www.autoitscript.com/forum/files/file/343-wkhtmktox/

As wkhtmltopdf is GNU is this mean: If I use your code then my program made in AutoIt becomes licensed as GNU ?

wkhtmlto* is LGPL (v3). AFAIK, it allows us to use the wkhtmlto* binary in our projects, but you must not use the same license (although it would be nice, we know this is a capitalist world). But you must supply some way that the user can have access to the original source code (a link to the project page on the About dialog would be an idea). See this: http://www.gnu.org/licenses/lgpl.html#section4

The first paragraph of [http://www.gnu.org/licenses/why-not-lgpl.html this page] (forum bug? Can't insert links) is also meaningless:

The GNU Project has two principal licenses to use for libraries. One is the GNU Lesser GPL; the other is the ordinary GNU GPL. The choice of license makes a big difference: using the Lesser GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs.

 


My stuff

Spoiler

My UDFs  _AuThread multithreading emulation for AutoIt · _ExtInputBox an inputbox with multiple inputs and more features · forceUTF8 fix strings encoding without knowing its original charset · JSONgen JSON generator · _TCPServer UDF multi-client and multi-task (run on background) event-based TCP server easy to do · _TCPClient_UDF multi-server and multi-task (runs on background) event-based TCP client easy to do · ParseURL and ParseStr functions ported from PHP · _CmdLine UDF easily parse command line parameters, keys or flags · AutoPHP Create documents (bills, incomes) from HTML by sending variables/arrays from AutoIt to PHP · (Un)Serialize Convert arrays and data into a storable string (PHP compatible) · RTTL Plays and exports to MP3 Nokia-format monophonic ringtones (for very old cellphones) · I18n library Simple and easy to use localization library · Scripting.Dictionary OOP and OOP-like approach · Buffer/stack limit arrays to N items by removing the last one once the limit is reached · NGBioAPI UDF to work with Nitgen fingerprint readers · Serial/Licensing system require license key based on unique machine ID from your users · HTTP a simple WinHTTP library that allows GET, POST and file uploads · Thread true AutoIt threads (under-dev) · RC4 RC4 encryption compatible with PHP and JS ·  storage.au3 localStorage and sessionStorage for AutoIt Classes _WKHtmlToX uses wkhtmlto* to convert HTML files and webpages into PDF or images (jpg, bmp, gif, png...) Snippets _Word_DocFindReplaceByLongText replace strings using Word UDF with strings longer than 255 characters (MSWord limit) rangeparser parser for printing-like pages interval (e.g.: "1,2,3-5") EnvParser parse strings/paths with environment variables and get full path Random stuff Super Mario beep sound your ears will hurt

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×