mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-16 09:37:08 +00:00
4ee393d1fa
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.
59 lines
1.4 KiB
C
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;
|
|
}
|