2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-16 00:42:21 +00:00
qpdf/examples/qpdfjob-c.c
Jay Berkenbilt 4ee393d1fa Remove compression from linearization tests where possible
By combining --linearize with --compress-streams=n, we ensure that no
new compressed data will appear in linearized output, which makes the
output independent of zlib's output. There are other tests to ensure
that linearization works correctly with compression. This commit
involves changing some test outputs and test code as well just
updating test suites.
2023-12-20 15:46:20 -05:00

59 lines
1.4 KiB
C

/* This is an example program to linearize a PDF file using the C QPDFJob API. */
#include <qpdf/qpdfjob-c.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char const* whoami = 0;
static void
usage()
{
fprintf(stderr, "Usage: %s infile outfile\n", whoami);
exit(2);
}
int
main(int argc, char* argv[])
{
char* infile = NULL;
char* outfile = NULL;
char const* new_argv[7];
int r = 0;
char* p = 0;
if ((p = strrchr(argv[0], '/')) != NULL) {
whoami = p + 1;
} else if ((p = strrchr(argv[0], '\\')) != NULL) {
whoami = p + 1;
} else {
whoami = argv[0];
}
if (argc != 3) {
usage();
}
infile = argv[1];
outfile = argv[2];
new_argv[0] = "qpdfjob";
new_argv[1] = infile;
new_argv[2] = outfile;
new_argv[3] = "--linearize";
new_argv[4] = "--static-id"; /* for testing only */
new_argv[5] = "--compress-streams=n"; /* avoid dependency on zlib output */
new_argv[6] = NULL;
/* See qpdf-job.cc for a C++ example of using the json interface. To use that from C just like
* the argv one, call qpdfjob_run_from_json instead and pass the json string as a single char
* const* argument.
*
* See qpdfjob-c-save-attachment.c for an example of using the full form of the qpdfjob
* interface with init and cleanup functions.
*/
r = qpdfjob_run_from_argv(new_argv);
return r;
}