Menu

Tree [e38f3e] main /
 History

HTTPS access


File Date Author Commit
 data 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 doc_man 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 images 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 install 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 test 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 .gitignore 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 CHANGES 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 LICENSE 2026-03-02 TakahashiJunya TakahashiJunya [85ff18] Initial commit
 README.md 2026-03-02 TakahashiJunya TakahashiJunya [e38f3e] Update README.md
 aboutform.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 aboutform.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 accelerators.acc 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 batchcompare.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 batchcompare.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 commandlinemanager.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 commandlinemanager.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 compareresults.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 compareresults.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 compile.cmd 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 compile.sh 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf.pri 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf.pro 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_cz.qm 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_cz.ts 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_de.qm 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_de.ts 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_es.qm 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_es.ts 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_fr.qm 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdf_fr.ts 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 confrontapdfc.pro 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 docinfo.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 docinfo.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 generic.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 generic.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 gpl-2.0.txt 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 help.html 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 helpform.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 helpform.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 label.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 label.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 lineedit.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 lineedit.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 main.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 mainwindow.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 mainwindow.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 optionsform.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 optionsform.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 resources.qrc 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 saveform.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 saveform.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 sequence_matcher.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 sequence_matcher.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 startupparameters.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 startupparameters.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 status.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 status.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 textitem.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 textitem.hpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 utils.cpp 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 utils.h 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...
 win.rc 2026-03-02 Takahashi junya Takahashi junya [ae0436] Ported to Qt 6 and Poppler-Qt6, fixed memory is...

Read Me

ConfrontaPDF

ConfrontaPDF compares two PDF files via GUI or command line.

ConfrontaPDF is based on DiffPDF. The open source DiffPDF was created and maintained by Mark
Summerfield 2008-2013. This is a fork of that project by Junya Takahashi, begun in 2026.

The source for the last release of Mark's open source version is available from:
http://www.qtrac.eu/diffpdf-foss.html. Mark's commercial versions are available from:
http://www.qtrac.eu/diffpdf.html

Command line

ConfrontaPDF can compare two PDF files, writing the result to standard output,
an XML file and generate a PDF document with the differences between the
input documents. It is scriptable, and does not open windows or wait for
user input during the batch operation, making it suitable for automated tests.
ConfrontaPDFc is a version of ConfrontaPDF that always runs in command line mode.
The result is printed on standard output:

  • 0 means that the PDFs are identical
  • any other code means a difference or an error

Output can be:

  • Code only (default)
    sample:

    confrontapdfc -b a.pdf b.pdf
    0

  • Code and description using --outType=1 switch
    sample:

    confrontapdfc -b --outType=1 a.pdf b.pdf
    0|no differences

  • An XML file with a detailed result can be written using --xmlResult=path
    sample:

    confrontapdfc -b --xmlResult=result.xml a.pdf b.pdf
    0

GUI

By default the comparison is of the words on each pair of pages, but
comparing character by character is also supported (e.g., for
logographic languages). And there's also support for comparing the pages
by appearance (for example, if a diagram is changed or if a paragraph is
reformatted, or a font changed). It is also possible to compare
particular pages or page ranges. For example, if there are two versions
of a PDF file, one with pages 1-12 and the other with pages 1-13 because
of an extra page having been added as page 4, they can be compared by
specifying two page ranges, 1-12 for the first and 1-3, 5-13 for the
second. This will make ConfrontaPDF compare pages in the pairs (1, 1), (2,
2), (3, 3), (4, 5), (5, 6), and so on, to (12, 13).

A couple of example PDF files are in the data folder of the sources.

More information is available in the program's tooltips and About box.

Windows Users

Use ConfrontaPDFc for command line only operations.

Compiling and Installing ConfrontaPDF

Prerequisites:

  • C++ compiler
  • Qt 6 or Qt 5 libraries
  • the Poppler libraries (at least 26.01.0)

Qt6 requires the Poppler's Qt 6 headers.
Qt5 requires the Poppler's Qt 5 headers.

Linux and BSD users should be able to get compiling from sources.
For other systems you'll need to get Qt and Poppler separately.

Download the sources from site: git clone https://github.com/lbellonda/ConfrontaPDF
or download a zip.

  1. Change directory to ConfrontaPDF

    $ cd ConfrontaPDF
    
  2. Run lrelease;

    $ lrelease confrontapdf.pro
    
  3. Run qmake on confrontapdf;

    $ qmake confrontapdf.pro
    
  4. Run make

    $ make
    
  5. Run qmake on confrontapdfc

    $ qmake confrontapdfc.pro
    
  6. Run make

    $ make
    
  7. Copy or soft-link the confrontapdf and confrontapdfc executable to somewhere on your PATH

  8. Only the executables are needed; all the files that were unpacked or
    generated can be safely deleted.

Windows users can find an installer script to customize in the install folder.

Two helper files are provided for Windows and Unix-like systems:

  • compile.sh
  • compile.cmd

Running ConfrontaPDF

If you hit a bug, please report it at
https://github.com/lbellonda/ConfrontaPDF/issues.

License

This program was written by Junya Takahashi.
Copyright © 2026 Junya Takahashi. All rights reserved.
Based on DiffPfd by Mark Summerfield.
Copyright © 2008-13 Qtrac Ltd. All rights reserved.

This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 2 of the License, or (at your
option), any later version. This program is distributed in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License (in file gpl-2.0.txt) for more details.

MongoDB Logo MongoDB