{"id":13677402,"url":"https://github.com/JakubMelka/PDF4QT","last_synced_at":"2025-04-29T11:30:50.889Z","repository":{"id":40509896,"uuid":"194901823","full_name":"JakubMelka/PDF4QT","owner":"JakubMelka","description":"Open source PDF editor.","archived":false,"fork":false,"pushed_at":"2024-10-29T19:27:16.000Z","size":12867,"stargazers_count":696,"open_issues_count":34,"forks_count":71,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-10-29T21:36:38.974Z","etag":null,"topics":["pdf","pdf-editor","pdf-viewer"],"latest_commit_sha":null,"homepage":"https://jakubmelka.github.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JakubMelka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"JakubMelka"}},"created_at":"2019-07-02T16:49:39.000Z","updated_at":"2024-10-29T13:59:18.000Z","dependencies_parsed_at":"2023-10-16T06:28:16.821Z","dependency_job_id":"50b0bb61-896e-4eda-bb12-ad76ad435027","html_url":"https://github.com/JakubMelka/PDF4QT","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubMelka%2FPDF4QT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubMelka%2FPDF4QT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubMelka%2FPDF4QT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakubMelka%2FPDF4QT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakubMelka","download_url":"https://codeload.github.com/JakubMelka/PDF4QT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224163567,"owners_count":17266527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pdf","pdf-editor","pdf-viewer"],"created_at":"2024-08-02T13:00:41.597Z","updated_at":"2025-04-29T11:30:50.882Z","avatar_url":"https://github.com/JakubMelka.png","language":"C++","funding_links":["https://github.com/sponsors/JakubMelka","https://github.com/sponsors/JakubMelka)!"],"categories":["C++"],"sub_categories":[],"readme":"[![CI](https://github.com/JakubMelka/PDF4QT/actions/workflows/ci.yml/badge.svg)](https://github.com/JakubMelka/PDF4QT/actions/workflows/ci.yml)\n\n# PDF4QT\n\n**(c) Jakub Melka 2018-2025**\n\n**Mgr.Jakub.Melka@gmail.com**\n\n**https://jakubmelka.github.io/**\n\nThis software is consisting of PDF rendering library, and several\napplications, such as advanced document viewer, command line tool,\nand document page manipulator application. Software is implementing PDF\nfunctionality based on PDF Reference 2.0. It is written and maintained\nby Jakub Melka.\n\n*Software works on Microsoft Windows / Linux.*\n\nSoftware is provided without any warranty of any kind.\n\nShould you find this software beneficial, your support would be greatly appreciated [:heart: Sponsor](https://github.com/sponsors/JakubMelka)!\n\n## 1. ACKNOWLEDGEMENTS\n\nThis software is based in part on the work of the Independent JPEG Group.\n\nPortions of this software are copyright © 2019 The FreeType\nProject (www.freetype.org). All rights reserved.\n\n## 2. LEGAL ISSUES\n\nThis software was originally licensed under the GNU Lesser General Public License version 3 (LGPLv3).\nAs of April 27, 2025, the project has been relicensed under the MIT License by the original author.\nThe change to the MIT License was made to provide greater freedom and flexibility for both open-source and commercial use, reduce legal complexity, and encourage broader adoption and contribution.\n\nPlease see the attached LICENSE.txt file for details.\n\nThis software also uses several third-party libraries, and users must comply with the licenses of those third-party components.\n\n## 3. FEATURES\n\nSoftware have following features (the list is not complete):\n\n- [x] multithreading support\n- [x] encryption\n- [x] color management\n- [x] optional content handling\n- [x] text layout analysis\n- [x] signature validation\n- [x] annotations\n- [x] form filling\n- [x] text to speech capability\n- [x] editation\n- [x] file attachments\n- [x] optimalization (compressing documents)\n- [x] command line tool\n- [x] audio book conversion\n- [x] internal structure inspector\n- [x] compare documents\n- [x] static XFA support (readonly, simple XFA only)\n- [x] electronically/digitally sign documents\n- [x] public key security encryption\n\n## 4. THIRD PARTY LIBRARIES\n\nSeveral third-party libraries are used.\n\n1. libjpeg, see https://www.ijg.org/\n2. FreeType, see https://www.freetype.org/index.html, FTL license used\n3. OpenJPEG, implementing Jpeg2000, see https://www.openjpeg.org/, 2-clause MIT license\n4. Qt, https://www.qt.io/, LGPL license used\n5. OpenSSL, https://www.openssl.org/, Apache 2.0 license\n6. LittleCMS, http://www.littlecms.com/\n7. zlib, https://zlib.net/\n8. Blend2D, https://blend2d.com/\n\n## 5. CONTRIBUTIONS\n\nContributions are welcome!\n\nSince the project is now licensed under the MIT License, contributions can be freely submitted without the need to sign a Contributor License Agreement (CLA).\nHowever, all contributions must be made under the terms of the MIT License to ensure license consistency across the project.\n\nYou are encouraged to contribute by testing, offering feedback, providing advice, or submitting code improvements.\n\n## 6. INSTALLING\n\n### Windows\n\nThe [Release page](https://github.com/JakubMelka/PDF4QT/releases) lists binaries for Windows, both with and without an installer.\n\n### Arch Linux\n\nA [pdf4qt-git](https://aur.archlinux.org/packages/pdf4qt-git) package is available in the AUR.\n\n### Linux - Flatpak/AppImage\n\nFor other Linux distributions, there are two options available. A Flatpak package can be accessed at [Flathub](https://flathub.org/apps/io.github.JakubMelka.Pdf4qt).\nAlternatively, an AppImage is available in the Releases section. The AppImage format is designed to work on nearly all Linux systems.\nHistorically, a .deb package was also offered, but it has been discontinued due to compatibility issues with some Linux distributions.\nThe executable names are: Pdf4QtEditor, Pdf4QtDiff, Pdf4QtLaunchPad, Pdf4QtPageMaster, Pdf4QtViewer, and PdfTool.\n\n## 7. COMPILING\n\nThis software can be compiled on both Windows and Linux. A compiler supporting the C++20 standard is needed.\n\nOn Windows, you can use Visual Studio 2022 or MinGW.\n\nOn Linux, a GCC version \u003e= 8 should work, altough we tested it with GCC 11.\n\n### Compiling from sources\n\n1. Install [vcpkg](https://vcpkg.io/en/getting-started.html)\n\n        git clone https://github.com/Microsoft/vcpkg.git\n        ./vcpkg/bootstrap-vcpkg.sh -disableMetrics\n        VCPKG_ROOT=$(pwd)/vcpkg\n\n    Check that vcpkg path is correct: `$VCPKG_ROOT/vcpkg --version`.\n\n2. Build PDF4QT\n\n    2.1 Clone repo\n\n        git clone https://github.com/JakubMelka/PDF4QT\n        cd PDF4QT\n\n    2.2 Configure\n\n        cmake -B build -S . -DPDF4QT_INSTALL_QT_DEPENDENCIES=0 -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX='/' -DCMAKE_BUILD_TYPE=Release\n\n    For a debug build, append `-DCMAKE_BUILD_TYPE=Debug`.\n\n    It is recommended to set the VCPKG_OVERLAY_PORTS variable to 'PDF4QT/vcpkg/overlays' to prevent crashes due to the incompatible LIBPNG library on some Linux systems.\n\n    2.3 Build\n\n        cmake --build build\n\n    Use the [`-j` switch](https://cmake.org/cmake/help/latest/manual/cmake.1.html#cmdoption-cmake-build-j) to build multiple files in parallel.\n\n    2.4 Install\n\n        sudo cmake --install build\n\n    To uninstall, run `sudo xargs rm \u003c ./build/install_manifest.txt`.\n\n### Using Qt Creator (both Windows/Linux)\n1. Download Qt 6.6 or higher, and VCPKG package manager (https://vcpkg.io/en/index.html)\n2. Open Qt Creator and configure the project\n3. Build\n \n### CMAKE Compilation Options\n\nSeveral important compilation options are available and should be set before building. On Windows,\nCMake can prepare a Wix project to create a *.msi installer package.\n\n|                  Option                | Platform |     Description                                          |\n| ------------------------------------   | ---------|--------------------------------------------------------- |\n| `PDF4QT_INSTALL_MSVC_REDISTRIBUTABLE`  | Windows  |Includes MSVC redistributable in installation             |\n| `PDF4QT_INSTALL_PREPARE_WIX_INSTALLER` | Windows  |Prepare .msi installator using Wix installer              |\n| `PDF4QT_INSTALL_DEPENDENCIES`          | Any      |Install dependent libraries into installation directory   |\n| `PDF4QT_INSTALL_QT_DEPENDENCIES`       | Any      |Install Qt dependent libraries into installation directory|\n| `VCPKG_OVERLAY_PORTS`                  | Linux    |Set it to prevent crashes with incompatible libpng library|\n \nFollowing important variables should be set or checked before any attempt to compile this project:\n\n|                  Variable              | Platform |     Description                                          |\n| ------------------------------------   | ---------|--------------------------------------------------------- |\n| `PDF4QT_QT_ROOT`                       | Any      |Qt installation directory                                 |\n| `QT_CREATOR_SKIP_VCPKG_SETUP`          | Any      |Enable or disable automatic vcpkg setup                   |\n| `CMAKE_PROJECT_INCLUDE_BEFORE`         | Any      |Should be set to package manager auto setup               |\n| `CMAKE_TOOLCHAIN_FILE`                 | Any      |Should be set to toolchain                                |\n| `CMAKE_BUILD_TYPE`                     | Any      |Can be Release (default) or Debug                         |\n\n#### Sample setup on Windows\n\nFollowing set of variables gives sample setup for MS Windows. It is minimal initial configuration\nto be able to built Debug build on MS Windows.\n\n| Key                             | Value                                                        |\n| ------------------------------- | -------------------------------------------------------------|\n| `CMAKE_BUILD_TYPE`              | Debug                                                        |\n| `CMAKE_CXX_COMPILER`            | %{Compiler:Executable:Cxx}                                   |\n| `CMAKE_C_COMPILER`              | %{Compiler:Executable:C}                                     |\n| `CMAKE_GENERATOR`               | Ninja                                                        |\n| `CMAKE_PREFIX_PATH`             | %{Qt:QT_INSTALL_PREFIX}                                      |\n| `CMAKE_PROJECT_INCLUDE_BEFORE`  | %{IDE:ResourcePath}/package-manager/auto-setup.cmake         |\n| `CMAKE_TOOLCHAIN_FILE`          | %{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake     |\n| `PDF4QT_QT_ROOT`                | C:/Programming/Qt/6.4.0/msvc2019_64                          |\n| `QT_QMAKE_EXECUTABLE`           | %{Qt:qmakeExecutable}                                        |\n\n\n### Tested Compilers - Windows\n - Visual Studio 2022 (Microsoft Visual C++ Compiler 17.1)\n - MinGW 11.2.0\n \n### Tested Compilers - Linux\n - GCC 13.1.1\n\n## 8. DISCLAIMER\n\nI wrote this project in my free time. I hope you will find it useful!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJakubMelka%2FPDF4QT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJakubMelka%2FPDF4QT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJakubMelka%2FPDF4QT/lists"}