diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-09-16 23:50:38 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-09-19 22:07:00 +0200 |
| commit | ca96abfcfcbc718dcc6a3d4369e80dd0c59eccb7 (patch) | |
| tree | 4b2df537050aa558a8765458b43326d4f366080d | |
| parent | c47eefbd3eb65215852fa534ff7c16db914c35e5 (diff) | |
Allow saving of verification reports as PDF (#1823).
| -rw-r--r-- | cscript | 27 | ||||
| -rw-r--r-- | platform/osx/make_dmg.sh | 1 | ||||
| -rw-r--r-- | platform/windows/wscript | 1 | ||||
| -rw-r--r-- | src/tools/dcpomatic_verifier.cc | 1 | ||||
| -rw-r--r-- | src/wx/verify_dcp_result_panel.cc | 15 | ||||
| -rw-r--r-- | src/wx/verify_dcp_result_panel.h | 2 | ||||
| -rw-r--r-- | wscript | 2 |
7 files changed, 39 insertions, 10 deletions
@@ -89,7 +89,8 @@ deb_depends['16.04'].extend(['libboost-filesystem1.58.0', 'libcurl3', 'libxerces-c3.1', 'libxmlsec1', - 'libxmlsec1-openssl']) + 'libxmlsec1-openssl', + 'libhpdf-2.2.1']) deb_depends['18.04'] = copy.deepcopy(deb_depends_base) deb_depends['18.04'].extend(['libboost-filesystem1.65.1', @@ -109,7 +110,8 @@ deb_depends['18.04'].extend(['libboost-filesystem1.65.1', 'libxerces-c3.2', 'libnanomsg4', 'libxmlsec1', - 'libxmlsec1-openssl']) + 'libxmlsec1-openssl', + 'libhpdf-2.3.0']) deb_depends['20.04'] = copy.deepcopy(deb_depends_base) deb_depends['20.04'].extend(['libboost-filesystem1.71.0', @@ -130,7 +132,8 @@ deb_depends['20.04'].extend(['libboost-filesystem1.71.0', 'libnanomsg5', 'libfmt-dev', 'libxmlsec1', - 'libxmlsec1-openssl']) + 'libxmlsec1-openssl', + 'libhpdf-2.3.0']) deb_depends['22.04'] = copy.deepcopy(deb_depends_base) deb_depends['22.04'].extend(['libboost-filesystem1.74.0', @@ -152,7 +155,8 @@ deb_depends['22.04'].extend(['libboost-filesystem1.74.0', 'libdav1d5', 'libfmt8', 'libxmlsec1', - 'libxmlsec1-openssl']) + 'libxmlsec1-openssl', + 'libhpdf-2.3.0']) def debs(boost, icu, x264, zip='4', fmt='9', xmlsec=None): output = copy.deepcopy(deb_depends_base) @@ -175,6 +179,7 @@ def debs(boost, icu, x264, zip='4', fmt='9', xmlsec=None): 'libwxgtk3.2-1', 'libwxgtk-gl3.2-1', 'libfmt' + fmt, + 'libhpdf-2.3.0', 'libxmlsec1' + (('-' + xmlsec) if xmlsec else ''), 'libxmlsec1-openssl' + (xmlsec if xmlsec else '')]) return output @@ -202,7 +207,8 @@ deb_depends['11'].extend(['libboost-filesystem1.74.0', 'libxerces-c3.2', 'libnanomsg5', 'libdav1d4', - 'libfmt7']) + 'libfmt7', + 'libhpdf-2.3.0']) deb_depends_gui['11'] = [ 'libxcb-xfixes0', 'libxcb-shape0', @@ -227,7 +233,8 @@ deb_depends['12'].extend(['libboost-filesystem1.74.0', 'libxerces-c3.2', 'libnanomsg5', 'libfmt9', - 'libsqlite3-0']) + 'libsqlite3-0', + 'libhpdf-2.3.0']) deb_depends_gui['12'] = [ 'libxcb-xfixes0', 'libxcb-shape0', @@ -251,7 +258,8 @@ deb_depends['13'].extend(['libboost-filesystem1.83.0', 'libxerces-c3.2', 'libnanomsg5', 'libfmt10', - 'libsqlite3-0']) + 'libsqlite3-0', + 'libhpdf-2.3.0']) deb_depends_gui['13'] = [ 'libxcb-xfixes0', 'libxcb-shape0', @@ -274,7 +282,8 @@ deb_depends['unstable'].extend(['libboost-filesystem1.83.0', 'libcurl4', 'libxerces-c3.2', 'libdav1d7', - 'libfmt10']) + 'libfmt10', + 'libhpdf-2.3.0']) def can_build_disk(target): # We can build dcpomatic2_disk on platforms that have Boost process and can build the lwext4 @@ -489,7 +498,7 @@ def build_with_cpp17(target): def dependencies(target, options): - deps = [('libdcp', 'v1.10.27', {'c++17': build_with_cpp17(target)})] + deps = [('libdcp', 'v1.10.28', {'c++17': build_with_cpp17(target)})] deps.append(('libsub', 'v1.6.53')) deps.append(('leqm-nrt', '30dcaea1373ac62fba050e02ce5b0c1085797a23')) deps.append(('rtaudio', 'f619b76')) diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh index 79232dd31..d85992349 100644 --- a/platform/osx/make_dmg.sh +++ b/platform/osx/make_dmg.sh @@ -222,6 +222,7 @@ function copy_libs { copy_lib_env libdav1d "$dest" copy_lib_env libsqlite "$dest" copy_lib_env libfmt "$dest" + copy_lib_env libhpdf "$dest" } # @param #1 directory to copy to diff --git a/platform/windows/wscript b/platform/windows/wscript index 990414722..5495eb765 100644 --- a/platform/windows/wscript +++ b/platform/windows/wscript @@ -198,6 +198,7 @@ File "%static_deps%/bin/libfribidi-0.dll" File "%static_deps%/bin/libsharpyuv-0.dll" File "%static_deps%/bin/libsqlite3-0.dll" File "%static_deps%/bin/libfmt.dll" +File "%static_deps%/bin/libhpdf.dll" """, file=f) if bits == 32: diff --git a/src/tools/dcpomatic_verifier.cc b/src/tools/dcpomatic_verifier.cc index f53f99e3d..0e5a7d450 100644 --- a/src/tools/dcpomatic_verifier.cc +++ b/src/tools/dcpomatic_verifier.cc @@ -42,6 +42,7 @@ #include "lib/util.h" #include "lib/variant.h" #include <dcp/search.h> +#include <dcp/text_formatter.h> #include <dcp/verify_report.h> LIBDCP_DISABLE_WARNINGS #include <wx/evtloop.h> diff --git a/src/wx/verify_dcp_result_panel.cc b/src/wx/verify_dcp_result_panel.cc index 07ae65e84..d65806cf8 100644 --- a/src/wx/verify_dcp_result_panel.cc +++ b/src/wx/verify_dcp_result_panel.cc @@ -24,6 +24,9 @@ #include "verify_dcp_result_panel.h" #include "wx_util.h" #include "lib/verify_dcp_job.h" +#include <dcp/html_formatter.h> +#include <dcp/text_formatter.h> +#include <dcp/pdf_formatter.h> #include <dcp/verify.h> #include <dcp/verify_report.h> #include <dcp/warnings.h> @@ -77,6 +80,8 @@ VerifyDCPResultPanel::VerifyDCPResultPanel(wxWindow* parent) save_sizer->Add(_save_text_report, 0, wxALL, DCPOMATIC_SIZER_GAP); _save_html_report = new Button(this, _("Save report as HTML...")); save_sizer->Add(_save_html_report, 0, wxALL, DCPOMATIC_SIZER_GAP); + _save_pdf_report = new Button(this, _("Save report as PDF...")); + save_sizer->Add(_save_pdf_report, 0, wxALL, DCPOMATIC_SIZER_GAP); sizer->Add(save_sizer); SetSizer(sizer); @@ -85,9 +90,11 @@ VerifyDCPResultPanel::VerifyDCPResultPanel(wxWindow* parent) _save_text_report->bind(&VerifyDCPResultPanel::save_text_report, this); _save_html_report->bind(&VerifyDCPResultPanel::save_html_report, this); + _save_pdf_report->bind(&VerifyDCPResultPanel::save_pdf_report, this); _save_text_report->Enable(false); _save_html_report->Enable(false); + _save_pdf_report->Enable(false); } @@ -143,6 +150,7 @@ VerifyDCPResultPanel::add(vector<shared_ptr<const VerifyDCPJob>> jobs) _save_text_report->Enable(true); _save_html_report->Enable(true); + _save_pdf_report->Enable(true); for (auto type: _types) { _pages[type]->ExpandAll(); @@ -729,3 +737,10 @@ VerifyDCPResultPanel::save_html_report() { save<dcp::HTMLFormatter>(this, char_to_wx("HTML files (*.htm;*html)|*.htm;*.html"), _jobs); } + + +void +VerifyDCPResultPanel::save_pdf_report() +{ + save<dcp::PDFFormatter>(this, char_to_wx("PDF files (*.pdf)|*.pdf"), _jobs); +} diff --git a/src/wx/verify_dcp_result_panel.h b/src/wx/verify_dcp_result_panel.h index fe75bfe35..ff4f29a1a 100644 --- a/src/wx/verify_dcp_result_panel.h +++ b/src/wx/verify_dcp_result_panel.h @@ -41,11 +41,13 @@ private: std::map<dcp::VerificationNote::Type, int> add(std::shared_ptr<const VerifyDCPJob> job, bool many); void save_text_report(); void save_html_report(); + void save_pdf_report(); wxStaticText* _summary; std::map<dcp::VerificationNote::Type, wxTreeCtrl*> _pages; Button* _save_text_report; Button* _save_html_report; + Button* _save_pdf_report; std::vector<std::shared_ptr<const VerifyDCPJob>> _jobs; @@ -398,7 +398,7 @@ def configure(conf): check_via_pkg_config(conf, 'libdcp-1.0', 'DCP', mandatory=True, static=True, minimum_version=libdcp_version) conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-dcpomatic', 'kumu-dcpomatic', 'openjp2'] - conf.env.LIB_DCP = ['glibmm-' + conf.env.GLIBMM_API, 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c', 'fmt'] + conf.env.LIB_DCP = ['glibmm-' + conf.env.GLIBMM_API, 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c', 'fmt', 'hpdf'] else: check_via_pkg_config(conf, 'libdcp-1.0', 'DCP', mandatory=True, static=False, minimum_version=libdcp_version) conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] |
