From 99231c437860d3b07d99ff12e41529492419f6a7 Mon Sep 17 00:00:00 2001 From: m-holger Date: Sun, 5 Mar 2023 15:13:34 +0000 Subject: Add example qpdfjob-remove-annotations --- examples/qpdfjob-remove-annotations.cc | 78 ++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 examples/qpdfjob-remove-annotations.cc (limited to 'examples/qpdfjob-remove-annotations.cc') diff --git a/examples/qpdfjob-remove-annotations.cc b/examples/qpdfjob-remove-annotations.cc new file mode 100644 index 00000000..dfab3f7b --- /dev/null +++ b/examples/qpdfjob-remove-annotations.cc @@ -0,0 +1,78 @@ +#include +#include +#include + +#include +#include +#include +#include + +// This example demonstrates how we can use the QPDFJob createQPDF and writeQPDF +// methods to add custom transformations to the output produced by QPDFJob runs. +// The example is a full copy of the qpdf program modified to allways remove all +// annotations from the final output. + +static char const* whoami = 0; + +static void +usageExit(std::string const& msg) +{ + std::cerr << std::endl + << whoami << ": " << msg << std::endl + << std::endl + << "For help:" << std::endl + << " " << whoami << " --help=usage usage information" + << std::endl + << " " << whoami << " --help=topic help on a topic" + << std::endl + << " " << whoami << " --help=--option help on an option" + << std::endl + << " " << whoami + << " --help general help and a topic list" + << std::endl + << std::endl; + exit(QPDFJob::EXIT_ERROR); +} + +int +realmain(int argc, char* argv[]) +{ + whoami = QUtil::getWhoami(argv[0]); + QUtil::setLineBuf(stdout); + + QPDFJob j; + try { + // See "HOW TO ADD A COMMAND-LINE ARGUMENT" in README-maintainer. + j.initializeFromArgv(argv); + auto qpdf_sp = j.createQPDF(); + auto& pdf = *qpdf_sp; + for (auto page: pdf.getAllPages()) { + page.replaceKey("/Annots", "null"_qpdf); + } + j.writeQPDF(pdf); + } catch (QPDFUsage& e) { + usageExit(e.what()); + } catch (std::exception& e) { + std::cerr << whoami << ": " << e.what() << std::endl; + return QPDFJob::EXIT_ERROR; + } + return j.getExitCode(); +} + +#ifdef WINDOWS_WMAIN + +extern "C" int +wmain(int argc, wchar_t* argv[]) +{ + return QUtil::call_main_from_wmain(argc, argv, realmain); +} + +#else + +int +main(int argc, char* argv[]) +{ + return realmain(argc, argv); +} + +#endif -- cgit v1.2.3-70-g09d2