mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-16 01:27:07 +00:00
68 lines
1.4 KiB
C
68 lines
1.4 KiB
C
|
/*
|
||
|
* This is an example of how to write C++ functions and make them usable with the qpdf C API. It
|
||
|
* consists of three files:
|
||
|
* - extend-c-api.h -- a plain C header file
|
||
|
* - extend-c-api.c -- a C program that calls the function
|
||
|
* - extend-c-api.cc -- a C++ file that implements the function
|
||
|
*/
|
||
|
|
||
|
#include "extend-c-api.h"
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
static char const* whoami = 0;
|
||
|
|
||
|
static void
|
||
|
usage()
|
||
|
{
|
||
|
fprintf(stderr, "Usage: %s infile\n", whoami);
|
||
|
exit(2);
|
||
|
}
|
||
|
|
||
|
int
|
||
|
main(int argc, char* argv[])
|
||
|
{
|
||
|
char* infile = NULL;
|
||
|
qpdf_data qpdf = qpdf_init();
|
||
|
int warnings = 0;
|
||
|
int errors = 0;
|
||
|
char* p = NULL;
|
||
|
|
||
|
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 != 2) {
|
||
|
usage();
|
||
|
}
|
||
|
|
||
|
infile = argv[1];
|
||
|
|
||
|
if ((qpdf_read(qpdf, infile, NULL) & QPDF_ERRORS) == 0) {
|
||
|
int npages;
|
||
|
if ((num_pages(qpdf, &npages) & QPDF_ERRORS) == 0) {
|
||
|
printf("num pages = %d\n", npages);
|
||
|
}
|
||
|
}
|
||
|
if (qpdf_more_warnings(qpdf)) {
|
||
|
warnings = 1;
|
||
|
}
|
||
|
if (qpdf_has_error(qpdf)) {
|
||
|
errors = 1;
|
||
|
printf("error: %s\n", qpdf_get_error_full_text(qpdf, qpdf_get_error(qpdf)));
|
||
|
}
|
||
|
qpdf_cleanup(&qpdf);
|
||
|
if (errors) {
|
||
|
return 2;
|
||
|
} else if (warnings) {
|
||
|
return 3;
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|