All-in-one library and application for processing and rendering PDF documents.

Overview

PDF4QT

(c) Jakub Melka 2018-2021

[email protected]

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 only on Microsoft Windows.

Software is provided without any warranty of any kind

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.

2. LEGAL ISSUES

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
  • XFA support (planned in year 2021)
  • create fillable forms (planned in year 2022)
  • electronically/digitally sign documents (planned in year 2022)
  • 3D PDF support (planned in year 2023)
  • watermarks / headers / footers (planned in year 2023)
  • presentation application (planned in year 2023)
  • public key security encryption (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. COMPILING

To compile this project, Visual Studio 2019 is needed. Only Microsoft Windows is supported at this time. You must also have all of above libraries in order to compile the project. Software uses Qt 5.14.2.

Compilation instructions:

  1. Download Qt 5.14.2
  2. Download precompiled libraries, or compile them yourself. Libraries must be in same root directory as this project, so root folder of this project will have a sibling folder with these libraries
  3. Open Qt Creator and root project Pdf4Qt.pro
  4. Create target for Microsoft Visual Studio 2019 and compile the project

7. DISCLAIMER

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

Comments
  • Can you consider switching from qmake/qbs to cmake or meson? Or making it an option in addition to qmake/qbs?

    Can you consider switching from qmake/qbs to cmake or meson? Or making it an option in addition to qmake/qbs?

    It's right now a major pain trying to get qbs dependencies sorted out on flatpak and qmake is deprecated as of qt6. It would make things easier if you switched to cmake or meson which is what qt6 wants you to use (cmake) and meson is just one or two files rather than scattered across subdirectories. Could you please consider adding in cmake or meson? Or fully switching to one of them. Thank you.

    https://mesonbuild.com/ https://cmake.org/documentation/

    Also, another major pain is conan + conan dependencies. I think you can do cmake/meson without them. What do you think?

    opened by jointri 30
  • Can this program have redaction and sanitization capabilities?

    Can this program have redaction and sanitization capabilities?

    I feel like something that's missing from this program is ability to redact (permanently remove and cover with black) images and/or text along with ability to sanitize the document for anything personal. Adobe Acrobat will remove ALL annotations along with any potential personal info and strip out any javascript making it safe to share with someone else when sanitizing a PDF. Could you consider implementing that? Thanks. Also, I'm very pleased to witness that your PDF reader actually removes annotations rather than keeping them in like poppler and mupdf do. I'll definitely recommend this program if anyone talks about PDF readers.

    opened by jointri 6
  • Feature requests: Reset Option

    Feature requests: Reset Option

    Can you please implement "Reset option" (to default)?

    I tried to play with speech settings (PDF4QT - 1.3.0 Winter Release, Windows 10 64bit) and Pdf4QtViewerProfi/Pdf4QtViewerLite now crash when I hit CTRL+K, so even I do not see setting widget.

    If it helps: As far as I remember I changed engine from sapi to winrt and then it crashed (first time).

    opened by zdenop 5
  • Compilation errors with recent OpenSSL versions

    Compilation errors with recent OpenSSL versions

    Hi, I've been trying to build this library on Windows 11. I'm using CMake and vcpkg to manage the dependencies. When I tried to compile the library using MSVC 2019, I get the following compilation error:

    sources\pdfsignaturehandler.cpp(1462,41): error C2440: 'initializing': cannot convert from 'const rsa_st *' to 'RSA *'

    I think this is caused by a change in recent versions of OpenSSL 3 (I think this one), that EVP_PKEY_get0* functions have a const return type.

    opened by daljit97 4
  • Conan

    Conan

    I use conan to get all the packages (except Qt). Works the same on linux/windows. I still have an issue on windows: the SPF_PARSE_SAPI is not found. There mush be an issue with the windowskit. Which one are you using? And how do we select which one to use (I am not an expert on windows)?

    opened by raphaelcotty 3
  • I need a new stable release.

    I need a new stable release.

    I want to resume doing the flatpak build (Sorry for taking so long, life was really chaotic for me at the time). But I want to use a more recent release with the port from qbs to CMake. Thank you.

    opened by jointri 2
  • Table selection tool

    Table selection tool

    Create table selection tool which will automatically determine rows and columns of the table. Table rows/columns should be editable by the user (insert rows/columns, delete them and move them). Then, table content is copied into the clipboard.

    • Automatic table structure recognition
    • Insert/Remove/Move rows and columns
    • Copy to clipboard via CSV
    • Export to CSV
    • Export to MS Excel [Optional]
    enhancement 
    opened by JakubMelka 1
  • Public key security handler

    Public key security handler

    Implement public key security handler acc. to. section 7.6.5 of PDF 2.0 specification. Both encryption/decryption must be implemented, and also certificate manager to provide a way to the user to create it's own certificates.

    • encryption
    • decryption
    • certificate manager
    enhancement 
    opened by JakubMelka 1
  • Create *.msi installation package

    Create *.msi installation package

    Use Wix Installer toolset to create *.msi install package instead of Qt installer framework. This enables to publish this software on Microsoft Store and also other advanced features (such as repairing the installation etc.).

    opened by JakubMelka 1
  • Incorrect text drawing for vertical writing systems

    Incorrect text drawing for vertical writing systems

    For vertical writing system, writing mode must be read from cmap from entry WMode. Now, it is not respected and writing mode is being read from the font itself. This affects, for example, chinese characters.

    bug 
    opened by JakubMelka 1
  • Rework of page rendering and thumbnails handling

    Rework of page rendering and thumbnails handling

    Rework of page rendering / thumbnail images should be done.

    • Do not spawn specific thread for each page to be rendered
    • Remove too old pages from the cache
    • Cancel page rendering when needed (do not wait until whole page is rendered)
    • Improve thumbnail drawing

    These issues are performance issues directly affecting the user. When specific thread is spawn for each page to be rendered, it can exhaust the computer when many pages are rendered (user navigates quickly trough document). Too old pages should be removed because otherwise they will be in the cache forever (or until limit is reached). And when complex page is being rendered, and user wants to perform action which should react immediately (closing the document, or some other action), the rendering engine will wait when a whole page is being rendered. It should break immediately.

    bug 
    opened by JakubMelka 1
  • Add pictures in PDF files

    Add pictures in PDF files

    Hi,

    It would be really nice to have the opportunity to add pictures (.jpg, .png, etc.) to pdf files. Do you think it could be added to your software in the future?

    Thanks anyway for the useful software!

    opened by WttBe 2
  • Can this program be submitted to flathub for flatpak?

    Can this program be submitted to flathub for flatpak?

    Having your program on flatpak via flathub will give it enormous exposure and it would be great to be able to seamlessly set it up using a program that me and others are already familiar with.

    You can find info on submitting application here: https://github.com/flathub/flathub/wiki/App-Submission

    If you don't wish to do the submission yourself, may I have your permission to pack this up for flathub and flatpak?

    opened by jointri 10
  • Performance optimization - OutputPreview Renderer

    Performance optimization - OutputPreview Renderer

    Performance optimization of software renderer for Output Preview is needed, it is now too slow to be useable. These issues needs to be solved:

    • sparse bitmaps to improve memory and speed
    • use Qt's renderer for glyph shape painting
    • maybe use QRegion
    enhancement 
    opened by JakubMelka 0
Releases(v1.3.1)
  • v1.3.1(Dec 28, 2022)

    Patched version of the winter release 1.3.0, containing two important issues. There is also probably bug in Qt 6.4, which causes winrt speech engine to crash, when selected in settings. If this happens, you can reset settings via "Reset to Factory Settings" menu item in menu Tools.

    Important issues:

    • Issue #35: Window state is not remembered for viewers
    • Issue #34: Reset Option

    Release contains two attachments:

    • PDF4QT.msi (Windows installer)PDF4QT.msi (Windows installer)
    • PDF4QT.zip (archive, use software without installation anywhere)

    Software does not need MS Visual Studio 2022 Redistributable Package installed - it is shipped with the installation.

    Full Changelog: https://github.com/JakubMelka/PDF4QT/compare/v1.3.0...v1.3.1

    Source code(tar.gz)
    Source code(zip)
    PDF4QT.msi(22.29 MB)
    pdf4qt.zip(20.61 MB)
  • v1.3.0(Dec 25, 2022)

    Winter release of updated version of the PDF4QT software.

    Important issues:

    • Issue #21: Table selection tool
    • Issue #22: Solve compilation warnings
    • Issue #24: Text selection and table selection algorithm improvement
    • Issue #25: Move Qt 6.4, change build system to CMake and VCPKG
    • Issue #28: Add multiple PDF files at once for merging
    • Issue #33: ToUnicode for simple fonts not used
    • Issue #32: I need a new stable release.
    • Issue #31: OpenSSL had dependency on MSVC 2010 redistributable package

    Release contains two attachments:

    PDF4QT.msi (Windows installer) PDF4QT.zip (archive, use software without installation anywhere) Software also needs MS Visual Studio 2022 Redistributable Package installed.

    Full Changelog: https://github.com/JakubMelka/PDF4QT/compare/v1.2.1...v1.3.0

    Source code(tar.gz)
    Source code(zip)
    PDF4QT.msi(22.28 MB)
    pdf4qt.zip(20.59 MB)
  • v1.2.1(Jun 30, 2022)

    Patch release which solves two issues:

    • Issue #17 - public key security handler
    • Issue #19 - remove dependency on MS Visual Studio 2022 redistributable package

    Release contains two attachments:

    PDF4QT.msi (Windows installer)
    PDF4QT.zip (archive, use software without installation anywhere)
    

    No additional libraries are needed - Visual Studio Redistributable Package is included in the installation folder.

    Full Changelog: https://github.com/JakubMelka/PDF4QT/compare/v1.2.0...v1.2.1

    Source code(tar.gz)
    Source code(zip)
    PDF4QT.msi(18.07 MB)
    pdf4qt.zip(16.48 MB)
  • v1.2.0(Jun 5, 2022)

    Summer release of updated version of the PDF4QT software.

    Important issues:

    • [x] Issue #15 - create *.msi installer
    • [x] Issue #14 - fixed drawing of vertical text (asian characters)
    • [x] Performance optimization
    • [x] static XFA support (for viewing only, noneditable)
    • [x] Plugin for digital signatures

    Release contains two attachments:

    • PDF4QT.msi (Windows installer)
    • PDF4QT.zip (archive, use software without installation anywhere)

    Software also needs MS Visual Studio 2022 Redistributable Package installed.

    Full Changelog: https://github.com/JakubMelka/PDF4QT/compare/v1.1.0...v1.2.0

    Source code(tar.gz)
    Source code(zip)
    PDF4QT.msi(17.46 MB)
    PDF4QT.zip(15.89 MB)
  • v1.1.0(Dec 19, 2021)

    Winter release of updated version of the PDF4QT software.

    Important issues:

    • [x] New application PDF4QTDocDiff for comparing of similar PDF documents
    • [x] Linux port
    • [x] New icon set

    Release contains two attachments:

    • instpdf4qt.exe (installer for MS Windows)
    • PDF4QT.zip (archive, use software without installation anywhere)

    Software also needs MS Visual Studio 2019 Redistributable Package installed. It can be installed from Microsoft pages here: https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0

    Full Changelog: https://github.com/JakubMelka/PDF4QT/compare/v1.0.0-beta...v1.1.0

    Source code(tar.gz)
    Source code(zip)
    instpdf4qt.exe(34.03 MB)
    PDF4QT.zip(16.36 MB)
  • v1.0.0-beta(Sep 19, 2021)

    Initial beta release of PDF4QT for public testing. Contains two files:

    • instpdf4qt.exe (installer for MS Windows)
    • PDF4QT.zip (archive, use software without installation anywhere)

    Software also needs MS Visual Studio 2019 Redistributable Package installed. It can be installed from Microsoft pages here: https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0

    Source code(tar.gz)
    Source code(zip)
    instpdf4qt.exe(33.78 MB)
    PDF4QT.zip(16.11 MB)
Owner
Jakub Melka
Jakub Melka
libharu - free PDF library

# # URL http://libharu.org/ # # Copyright 2000-2006 (c) Takeshi Kanno # Copyright 2007-2009 (c) Antony Dovgal et al. # See INSTALL for instruction

libharu 1.4k Jan 8, 2023
Sioyek is a PDF viewer designed for reading research papers and technical books.

Sioyek is a PDF viewer designed for reading research papers and technical books.

null 4.4k Jan 3, 2023
Convert HTML to PDF using Webkit (QtWebKit)

wkhtmltopdf and wkhtmltoimage wkhtmltopdf and wkhtmltoimage are command line tools to render HTML into PDF and various image formats using the QT Webk

wkhtmltopdf 12.9k Dec 30, 2022
OpenScan is an open-source document scanner app that enables users to scan hard copies of documents or notes and convert it into a PDF file. No ads. No data collection. We respect your privacy.

OpenScan An open source app that enables users to scan hardcopies of documents or notes and convert it to a PDF file. No ads. No data collection. We r

Ethereal Developers Inc 1.2k Jan 4, 2023
A kernel designed to run one and only one application in a virtualized environment

A kernel designed to run one and only one application in a virtualized environment

NanoVMs 2k Jan 7, 2023
Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content.

This project is a Vulkan Video Sample Application demonstrating an end-to-end, all-Vulkan, processing of h.264/5 compressed video content. The application decodes the h.264/5 compressed content using an HW accelerated decoder, the decoded YCbCr frames are processed with Vulkan Graphics and then presented via the Vulkan WSI.

NVIDIA DesignWorks Samples 132 Dec 15, 2022
A Haskell library for fast decoding of JSON documents using the simdjson C++ library

hermes A Haskell interface over the simdjson C++ library for decoding JSON documents. Hermes, messenger of the gods, was the maternal great-grandfathe

Josh Miller 36 Dec 5, 2022
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.

?? ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.

ArangoDB 12.8k Jan 9, 2023
A simple YAML parser which produces a Node Tree Object representation of YAML Documents

A simple YAML parser which produces a Node Tree Object representation of YAML Documents and includes a find method to locate individual Nodes within the parsed Node Tree.

Timothy Rule 2 Sep 18, 2022
Extract image files from Microsoft Word documents!

docimg Extract image files from Microsoft Word documents! Build This project depends on libzip. You will need to link the library yourself. On Linux,

null 3 Nov 16, 2022
Detects the rotation of scanned documents.

Angle rotation detection on scanned documents Detects the rotation of scanned documents. Uses libleptonica Designed for embedding in systems using tes

Valeriy Dmitriev 4 Nov 8, 2022
Legion Low Level Rendering Interface provides a graphics API agnostic rendering interface with minimal CPU overhead and low level access to verbose GPU operations.

Legion-LLRI Legion-LLRI, or “Legion Low Level Rendering Interface” is a rendering API that aims to provide a graphics API agnostic approach to graphic

Rythe Interactive 25 Dec 6, 2022
ORE (OpenGL Rendering Engine) is a rendering engine developed for my college minor project assessment.

ORE (OPENGL RENDERING ENGINE) What is ORE? ORE(OpenGL Rendering Engine) is a rendering engine with great and easy to use UI that allows the user to lo

HARSHIT BARGUJAR 3 Sep 23, 2022
VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization

Introduction VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization. VTK includes many advanced a

Kitware, Inc. 2k Dec 30, 2022
ADOP: Approximate Differentiable One-Pixel Point Rendering

ADOP: Approximate Differentiable One-Pixel Point Rendering

Darius Rückert 1.9k Dec 28, 2022
PDFio is a simple C library for reading and writing PDF files

pdfio - PDF Read/Write Library PDFio is a simple C library for reading and writing PDF files. The primary goals of PDFio are: Read and write any versi

Michael R Sweet 64 Dec 17, 2022
High performance library for creating, modiyfing and parsing PDF files in C++

Welcome to PDF-Writer. A Fast and Free C++ Library for Creating, Parsing an Manipulating PDF Files and Streams. Documentation is available here. Proje

gal kahana 674 Dec 30, 2022
libharu - free PDF library

# # URL http://libharu.org/ # # Copyright 2000-2006 (c) Takeshi Kanno # Copyright 2007-2009 (c) Antony Dovgal et al. # See INSTALL for instruction

libharu 1.4k Jan 8, 2023