Open source PDF editor.
Go to file
Jakub Melka c5ddb521ed Issue #107: Conversion algorithm 2023-11-17 13:45:49 +01:00
.github Funding 2023-10-15 16:19:24 +02:00
3rdparty_licenses Use LF instead of CRLF 2021-09-27 11:14:20 +02:00
CLA Update of readme na CLA 2021-08-28 18:01:15 +02:00
CodeGenerator Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
Desktop Fix of destination of the icons 2023-09-17 17:49:30 +02:00
JBIG2_Viewer Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
Pdf4QtDocDiff Sponsor button 2023-10-22 16:07:55 +02:00
Pdf4QtDocPageOrganizer Sponsor button 2023-10-22 16:07:55 +02:00
Pdf4QtLib Issue #107: Conversion algorithm 2023-11-17 13:45:49 +01:00
Pdf4QtViewer Issue #107: Conversion algorithm 2023-11-17 13:45:49 +01:00
Pdf4QtViewerLite Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
Pdf4QtViewerPlugins Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
Pdf4QtViewerProfi Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
PdfExampleGenerator Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
PdfTool Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
UnitTests Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
VisualStudio Use LF instead of CRLF 2021-09-27 11:14:20 +02:00
WixInstaller Issue #25: PowerShell script to run windows installer 2022-09-01 17:40:54 +02:00
resources Use LF instead of CRLF 2021-09-27 11:14:20 +02:00
xfa XFA: Bugfixing - proper edge and corner drawing 2021-12-08 19:37:18 +01:00
.gitignore Issue #25: Basic build settings 2022-08-14 17:50:52 +02:00
.licensee.yml Issue #104: Try to solve license problem 2023-11-05 14:15:16 +01:00
CMakeLists.txt Issue #94: New directory structure 2023-09-23 18:07:38 +02:00
LICENSE.txt Use LF instead of CRLF 2021-09-27 11:14:20 +02:00
NOTES.txt Public key encryption: authorization, create file encryption key 2022-06-29 17:44:42 +02:00
README.md Sponsor v readme 2023-10-21 16:50:28 +02:00
RELEASES.txt Update of RELEASES.txt 2023-10-18 20:13:55 +02:00
Release_Process.txt Issue #39: Sign binaries with certificate 2023-02-01 19:48:48 +01:00
generated_code_definition.xml Issue #40: Sanitize document 2023-02-19 18:36:46 +01:00
make-package.sh.in Issue #94: Update of deb package file 2023-09-23 19:32:11 +02:00
qt.conf Signatures: line tool 2022-02-13 19:46:09 +01:00
vcpkg.json tbb library included in vcpkg 2023-09-08 16:08:07 +02:00
vcpkg_with_qt.json Issue #68: Add alternative VCPKG file with dependency on Qt 2023-07-28 10:47:45 +02:00

README.md

PDF4QT

(c) Jakub Melka 2018-2023

Mgr.Jakub.Melka@gmail.com

https://jakubmelka.github.io/

This software is consisting of PDF rendering library, and several applications, such as advanced document viewer, command line tool, and document page manipulator application. Software is implementing PDF functionality based on PDF Reference 2.0. It is written and maintained by Jakub Melka.

Software works on Microsoft Windows / Linux.

Software is provided without any warranty of any kind.

Should you find this software beneficial, your support would be greatly appreciated ❤️ Sponsor!

1. ACKNOWLEDGEMENTS

This software is based in part on the work of the Independent JPEG Group.

Portions of this software are copyright © 2019 The FreeType Project (www.freetype.org). All rights reserved.

Both library and viewer uses more benevolent LGPL license, so it is more usable in commercial software, than GPL code only. Please see attached file - LICENSE.txt to see details. This software also uses several third party software, and user of this software must also respect licenses of third party libraries.

3. FEATURES

Software have following features (the list is not complete):

  • multithreading support
  • hardware accelerated rendering
  • encryption
  • color management
  • optional content handling
  • text layout analysis
  • signature validation
  • annotations
  • form filling
  • text to speech capability
  • editation
  • file attachments
  • optimalization (compressing documents)
  • command line tool
  • audio book conversion
  • internal structure inspector
  • compare documents
  • static XFA support (readonly, simple XFA only)
  • electronically/digitally sign documents
  • public key security encryption
  • 3D PDF support (planned in year 2022)
  • create fillable forms (planned in year 2023)
  • watermarks / headers / footers (planned in year 2023)
  • presentation application (planned in year 2023)

4. THIRD PARTY LIBRARIES

Several third-party libraries are used.

  1. libjpeg, see https://www.ijg.org/
  2. FreeType, see https://www.freetype.org/index.html, FTL license used
  3. OpenJPEG, implementing Jpeg2000, see https://www.openjpeg.org/, 2-clause MIT license
  4. Qt, https://www.qt.io/, LGPL license used
  5. OpenSSL, https://www.openssl.org/, Apache 2.0 license
  6. LittleCMS, http://www.littlecms.com/
  7. zlib, https://zlib.net/

5. CONTRIBUTIONS

If you want to contribute to this project, it is required, that you (contributor) fill and digitally sign document Contributor License Agreement, because I want to have a freedom to do whatever I want with my library, without obligation to someone else. But I would strongly prefer, if you want to contribute, to contribute in a form of testing, consultation, giving advices etc. I would like to write this library entirely by myself.

6. INSTALLING

Windows

The Release page lists binaries for Windows, both with and without an installer.

Arch Linux

A pdf4qt-git package is available in the AUR.

7. COMPILING

This software can be compiled on both Windows and Linux. A compiler supporting the C++20 standard is needed.

On Windows, you can use Visual Studio 2022 or MinGW.

On Linux, a GCC version >= 8 should work, altough we tested it with GCC 11.

Compiling from sources

  1. Install vcpkg

     git clone https://github.com/Microsoft/vcpkg.git
     ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
     VCPKG_ROOT=$(pwd)/vcpkg
    

    Check that vcpkg path is correct: $VCPKG_ROOT/vcpkg --version.

  2. Build PDF4QT

    2.1 Clone repo

     git clone https://github.com/JakubMelka/PDF4QT
     cd PDF4QT
    

    2.2 Configure

     cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX='/'
    

    For a debug build, append -DCMAKE_BUILD_TYPE=Debug.

    2.3 Build

     cmake --build build
    

    Use the -j switch to build multiple files in parallel.

    2.4 Install

     sudo cmake --install build
    

    To uninstall, run sudo xargs rm < ./build/install_manifest.txt.

Using Qt Creator (both Windows/Linux)

  1. Download Qt 6.4 or higher, and VCPKG package manager (https://vcpkg.io/en/index.html)
  2. Open Qt Creator and configure the project
  3. Build

CMAKE Compilation Options

Several important compilation options are available and should be set before building. On Windows, CMake can prepare a Wix project to create a *.msi installer package.

Option Platform Description
PDF4QT_INSTALL_MSVC_REDISTRIBUTABLE Windows Includes MSVC redistributable in installation
PDF4QT_INSTALL_PREPARE_WIX_INSTALLER Windows Prepare .msi installator using Wix installer
PDF4QT_INSTALL_DEPENDENCIES Any Install dependent libraries into installation directory
PDF4QT_INSTALL_QT_DEPENDENCIES Any Install Qt dependent libraries into installation directory

Following important variables should be set or checked before any attempt to compile this project:

Variable Platform Description
PDF4QT_QT_ROOT Any Qt installation directory
QT_CREATOR_SKIP_VCPKG_SETUP Any Enable or disable automatic vcpkg setup
CMAKE_PROJECT_INCLUDE_BEFORE Any Should be set to package manager auto setup
CMAKE_TOOLCHAIN_FILE Any Should be set to toolchain
CMAKE_BUILD_TYPE Any Can be Release (default) or Debug

Sample setup on Windows

Following set of variables gives sample setup for MS Windows. It is minimal initial configuration to be able to built Debug build on MS Windows.

Key Value
CMAKE_BUILD_TYPE Debug
CMAKE_CXX_COMPILER %{Compiler:Executable:Cxx}
CMAKE_C_COMPILER %{Compiler:Executable:C}
CMAKE_GENERATOR Ninja
CMAKE_PREFIX_PATH %{Qt:QT_INSTALL_PREFIX}
CMAKE_PROJECT_INCLUDE_BEFORE %{IDE:ResourcePath}/package-manager/auto-setup.cmake
CMAKE_TOOLCHAIN_FILE %{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
PDF4QT_QT_ROOT C:/Programming/Qt/6.4.0/msvc2019_64
QT_QMAKE_EXECUTABLE %{Qt:qmakeExecutable}

Tested Compilers - Windows

  • Visual Studio 2022 (Microsoft Visual C++ Compiler 17.1)
  • MinGW 11.2.0

Tested Compilers - Linux

  • GCC 13.1.1

8. DISCLAIMER

I wrote this project in my free time. I hope you will find it useful!