1. Download the PDFHummus/PDFWriter source code: https://github.com/galkahana/PDF-Writer
This library only has build instructions for MSVC toolchains within Visual Studio 2017/2019.
create folders PDFWriter\dependencies\lib\ and PDFWriter\dependencies\include
2. Use VCPKG to install the following libraries necessary for PDFHummus:
libtiff, libjpeg, libpng, and zlib
3. Download freetype from: git://git.savannah.gnu.org/freetype/freetype2.git
From the freetype2 source code root directory use Msys and run the following commands:
mingw32-make setup mingw32
mingw32-make
cp -r include\* ..\PDFHummus\PDFWriter\dependencies\include\
cp objs\libfreetype.a ..\PDFHummus\PDFWriter\dependencies\lib\
4. The PDFHummus/PDFWriter source code includes a copy of the source code for LibAesgm in a folder with the same name.
Go into this folder and run the following commands to generate the library:
// fpermissive is needed because the author chose to implicitly switch between pointers of uint_8 and char.
g++ -c -fpermissive *.o
ar -cvq aesgm.lib *.o
g++ -I "C:\Users\bad-p\Downloads\PDFHummus-build\PDFHummus\LibAesgm"
5.
Download libtiff from: https://gitlab.com/libtiff/libtiff
After compiling the libtiff library with the Cmake file, all object files are located in C:\Users\bad-p\Downloads\TRASH\libtiff-master\build\libtiff\CMakeFiles\tiff.dir
Download libpng from: https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.xz/download?use_mirror=newcontinuum
After compiling the libpng library with the Cmake file, all object files are located in C:\Users\bad-p\Downloads\TRASH\libpng-1.6.37\build\CMakeFiles\png_static.dir
Download libjpeg from:https://sourceforge.net/projects/libjpeg/files/
After compiling the libjpeg library with the Cmake file, all object files are located in C:\Users\bad-p\Downloads\TRASH\jpeg-6b
Download zlib from: https://www.zlib.net/
After compiling the zlib library with the Cmake file, all object files are located in C:\Users\bad-p\Downloads\TRASH\zlib-1.2.11
For all CMake instructions create a build directory in the source root. CD in to build, run Cmake .. for windows using msys pass the 'Cmake .. -G "MSYS Makefiles"'
build option to generate a makefile appropiate for msys; You can use make afterwards to compile as normal.
After all of the object files are moved into the same folder, generate a library for PDFWriter.
ar -cvq PDFWriter.lib *.o
14 April 2020
Talked about cleaning up the README as well as rebuilding PDFHummus as a statically linked library "on my own". We will try and do this in a couple more sessions, so Wesley
can rest his small brain. :D
19 May 2020
Per Raymond Chen - "UAC Virtualization kicks in for applications which were designed for versions of Windows prior to Windows Vista.
These applications often assume that they are running with administrative privileges, and when they try to write to file or registry locations
that are normally restricted to administrators, they expect them to succeed. So UAC Virtualization lets those writes succeed by secretly redirecting
them to another location inside the user profile. The reverse happens when the application later tries to read the file or registry key: If the file or
key exists in the redirected location, it is used instead of the one in the administrative location." - Msft CTO