mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-10 15:20:54 +00:00
820a3f04fd
The executables that libtool built invoked the underlying binary with an "lt-" prefix. The code contained numerous workarounds for testing, which can now be removed.
117 lines
2.6 KiB
C++
117 lines
2.6 KiB
C++
#include <qpdf/QPDFJob.hh>
|
|
#include <qpdf/QUtil.hh>
|
|
#include <qpdf/QIntC.hh>
|
|
|
|
#include <iostream>
|
|
#include <cstring>
|
|
|
|
// This program is a simple demonstration of different ways to use the
|
|
// QPDFJob API.
|
|
|
|
static char const* whoami = 0;
|
|
|
|
static void usage()
|
|
{
|
|
std::cerr
|
|
<< "Usage: " << whoami << std::endl
|
|
<< "This program linearizes the first page of in.pdf to out1.pdf,"
|
|
<< " out2.pdf, and"
|
|
<< std::endl
|
|
<< " out3.pdf, each demonstrating a different way to use the"
|
|
<< " QPDFJob API"
|
|
<< std::endl;
|
|
exit(2);
|
|
}
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
whoami = QUtil::getWhoami(argv[0]);
|
|
|
|
if (argc != 1)
|
|
{
|
|
usage();
|
|
}
|
|
|
|
// The examples below all catch std::exception. Note that
|
|
// QPDFUsage can be caught separately to report on errors in using
|
|
// the API itself. For CLI, this is command-line usage. For JSON
|
|
// or the API, it would be errors from the equivalent invocation.
|
|
|
|
// Note that staticId is used for testing only.
|
|
|
|
try
|
|
{
|
|
// Use the config API
|
|
QPDFJob j;
|
|
j.config()
|
|
->inputFile("in.pdf")
|
|
->outputFile("out1.pdf")
|
|
->pages()
|
|
->pageSpec(".", "1")
|
|
->endPages()
|
|
->linearize()
|
|
->staticId() // for testing only
|
|
->checkConfiguration();
|
|
j.run();
|
|
std::cout << "out1 status: " << j.getExitCode() << std::endl;
|
|
}
|
|
catch (std::exception& e)
|
|
{
|
|
std::cerr << "exception: " << e.what() << std::endl;
|
|
return 2;
|
|
}
|
|
|
|
try
|
|
{
|
|
char const* new_argv[] = {
|
|
whoami,
|
|
"in.pdf",
|
|
"out2.pdf",
|
|
"--linearize",
|
|
"--pages",
|
|
".",
|
|
"1",
|
|
"--",
|
|
"--static-id",
|
|
nullptr
|
|
};
|
|
QPDFJob j;
|
|
j.initializeFromArgv(new_argv);
|
|
j.run();
|
|
std::cout << "out2 status: " << j.getExitCode() << std::endl;
|
|
}
|
|
catch (std::exception& e)
|
|
{
|
|
std::cerr << "exception: " << e.what() << std::endl;
|
|
return 2;
|
|
}
|
|
|
|
try
|
|
{
|
|
// Use the JSON API
|
|
QPDFJob j;
|
|
j.initializeFromJson(R"({
|
|
"inputFile": "in.pdf",
|
|
"outputFile": "out3.pdf",
|
|
"staticId": "",
|
|
"linearize": "",
|
|
"pages": [
|
|
{
|
|
"file": ".",
|
|
"range": "1"
|
|
}
|
|
]
|
|
}
|
|
)");
|
|
j.run();
|
|
std::cout << "out3 status: " << j.getExitCode() << std::endl;
|
|
}
|
|
catch (std::exception& e)
|
|
{
|
|
std::cerr << "exception: " << e.what() << std::endl;
|
|
return 2;
|
|
}
|
|
|
|
return 0;
|
|
}
|