aboutsummaryrefslogtreecommitdiffstats
path: root/examples/pdf-linearize.c
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2009-09-27 22:59:16 +0200
committerJay Berkenbilt <ejb@ql.org>2009-09-27 22:59:16 +0200
commitd6d36b6ced682318b47d489bfb7ba56a1db382de (patch)
tree952a6d79697292bf0cd4377f384758cc0984920d /examples/pdf-linearize.c
parent6bdac26369c0d770759c2b6ce24afef608a91ec9 (diff)
downloadqpdf-d6d36b6ced682318b47d489bfb7ba56a1db382de.tar.zst
C linearization example
git-svn-id: svn+q:///qpdf/trunk@739 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'examples/pdf-linearize.c')
-rw-r--r--examples/pdf-linearize.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/examples/pdf-linearize.c b/examples/pdf-linearize.c
new file mode 100644
index 00000000..ca49a4d9
--- /dev/null
+++ b/examples/pdf-linearize.c
@@ -0,0 +1,74 @@
+/*
+ * This is an example program to linearize a PDF file using the C API.
+ */
+
+#include <qpdf/qpdf-c.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static char const* whoami = 0;
+
+static void usage()
+{
+ fprintf(stderr, "Usage: %s infile infile-password outfile\n", whoami);
+ exit(2);
+}
+
+int main(int argc, char* argv[])
+{
+ char* infile = argv[1];
+ char* password = argv[2];
+ char* outfile = argv[3];
+ qpdf_data qpdf = qpdf_init();
+ int warnings = 0;
+ int errors = 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 != 4)
+ {
+ usage();
+ }
+
+ if (((qpdf_read(qpdf, infile, password) & QPDF_ERRORS) == 0) &&
+ ((qpdf_init_write(qpdf, outfile) & QPDF_ERRORS) == 0))
+ {
+ qpdf_set_static_ID(qpdf, QPDF_TRUE);
+ qpdf_set_linearization(qpdf, QPDF_TRUE);
+ qpdf_write(qpdf);
+ }
+ while (qpdf_more_warnings(qpdf))
+ {
+ warnings = 1;
+ printf("warning: %s\n", qpdf_next_warning(qpdf));
+ }
+ while (qpdf_more_errors(qpdf))
+ {
+ errors = 1;
+ printf("error: %s\n", qpdf_next_error(qpdf));
+ }
+ qpdf_cleanup(&qpdf);
+ if (errors)
+ {
+ return 2;
+ }
+ else if (warnings)
+ {
+ return 3;
+ }
+
+ return 0;
+}