diff --git a/CHANGES.md b/CHANGES.md
index c94b516..44aa183 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -12,6 +12,7 @@ v1.6.0 - YYYY-MM-DD
profile (Issue #104)
- Added `pdfioFileAddOutputIntent` function to adding output intent information
to a PDF file (Issue #104)
+- Added explicit support for warning messages (Issue #118)
- Added `pdfioFileCreateFontObjFromData` function for embedding fonts in
memory (Issue #120)
- Added `pdfioFileGetLanguage` and `pdfioFileSetLanguage` functions for getting
diff --git a/doc/pdfio.3 b/doc/pdfio.3
index 9f64cd0..9e158e3 100644
--- a/doc/pdfio.3
+++ b/doc/pdfio.3
@@ -1,4 +1,4 @@
-.TH pdfio 3 "pdf read/write library" "2025-04-23" "pdf read/write library"
+.TH pdfio 3 "pdf read/write library" "2025-08-26" "pdf read/write library"
.SH NAME
pdfio \- pdf read/write library
.SH Introduction
@@ -3914,8 +3914,24 @@ of 8.27x11in (the intersection of US Letter and ISO A4) is used.
.PP
The "error_cb" and "error_cbdata" arguments specify an error handler callback
and its data pointer - if \fBNULL\fR then the default error handler is used that
-writes error messages to \fBstderr\fR. The error handler callback should return
-\fBtrue\fR to continue writing the PDF file or \fBfalse\fR to stop.
+writes error and warning messages to \fBstderr\fR. The error handler callback
+should return \fBtrue\fR to continue writing the PDF file or \fBfalse\fR to stop.
+For example:
+.PP
+.nf
+ bool
+ my_error_cb(pdfio_file_t *pdf, const char *message, void *data)
+ {
+ (void)data; /* Not using data pointer in this callback */
+
+ fprintf(stderr, "%s: %sn", pdfioFileGetName(pdf), message);
+
+ /* Return true to continue on warning messages, false otherwise... */
+ return (!strncmp(message, "WARNING:", 8));
+ }
+
+.fi
+
.SS pdfioFileCreateArrayObj
Create a new object in a PDF file containing an array.
.PP
@@ -4157,9 +4173,24 @@ of 8.27x11in (the intersection of US Letter and ISO A4) is used.
.PP
The "error_cb" and "error_cbdata" arguments specify an error handler callback
and its data pointer - if \fBNULL\fR then the default error handler is used that
-writes error messages to \fBstderr\fR. The error handler callback should return
-\fBtrue\fR to continue writing the PDF file or \fBfalse\fR to stop.
+writes error and warning messages to \fBstderr\fR. The error handler callback
+should return \fBtrue\fR to continue writing the PDF file or \fBfalse\fR to stop.
+For example:
.PP
+.nf
+ bool
+ my_error_cb(pdfio_file_t *pdf, const char *message, void *data)
+ {
+ (void)data; /* Not using data pointer in this callback */
+
+ fprintf(stderr, "%s: %sn", pdfioFileGetName(pdf), message);
+
+ /* Return true to continue on warning messages, false otherwise... */
+ return (!strncmp(message, "WARNING:", 8));
+ }
+
+.fi
+
.IP 5
\fINote\fR: Files created using this API are slightly larger than those
.IP 5
@@ -4398,9 +4429,24 @@ PDF file requires a password, the open will always fail.
.PP
The "error_cb" and "error_cbdata" arguments specify an error handler callback
and its data pointer - if \fBNULL\fR then the default error handler is used that
-writes error messages to \fBstderr\fR. The error handler callback should return
-\fBtrue\fR to continue reading the PDF file or \fBfalse\fR to stop.
+writes error and warning messages to \fBstderr\fR. The error handler callback
+should return \fBtrue\fR to continue reading the PDF file or \fBfalse\fR to stop.
+For example:
.PP
+.nf
+ bool
+ my_error_cb(pdfio_file_t *pdf, const char *message, void *data)
+ {
+ (void)data; /* Not using data pointer in this callback */
+
+ fprintf(stderr, "%s: %sn", pdfioFileGetName(pdf), message);
+
+ /* Return true to continue on warning messages, false otherwise... */
+ return (!strncmp(message, "WARNING:", 8));
+ }
+
+.fi
+
.IP 5
Note: Error messages starting with "WARNING:" are actually warning
.IP 5
diff --git a/doc/pdfio.html b/doc/pdfio.html
index 3285b28..8feec04 100644
--- a/doc/pdfio.html
+++ b/doc/pdfio.html
@@ -4133,8 +4133,23 @@ of 8.27x11in (the intersection of US Letter and ISO A4) is used.
The "error_cb" and "error_cbdata" arguments specify an error handler callback
and its data pointer - if NULL
then the default error handler is used that
-writes error messages to stderr
. The error handler callback should return
-true
to continue writing the PDF file or false
to stop.
stderr
. The error handler callback
+should return true
to continue writing the PDF file or false
to stop.
+For example:
+
++bool +my_error_cb(pdfio_file_t *pdf, const char *message, void *data) +{ + (void)data; /* Not using data pointer in this callback */ + + fprintf(stderr, "%s: %sn", pdfioFileGetName(pdf), message); + + /* Return true to continue on warning messages, false otherwise... */ + return (!strncmp(message, "WARNING:", 8)); +} ++
Create a new object in a PDF file containing an array.
@@ -4439,9 +4454,23 @@ of 8.27x11in (the intersection of US Letter and ISO A4) is used.
The "error_cb" and "error_cbdata" arguments specify an error handler callback
and its data pointer - if NULL
then the default error handler is used that
-writes error messages to stderr
. The error handler callback should return
-true
to continue writing the PDF file or false
to stop.
-
+writes error and warning messages to stderr
. The error handler callback
+should return true
to continue writing the PDF file or false
to stop.
+For example:
+
+
+bool +my_error_cb(pdfio_file_t *pdf, const char *message, void *data) +{ + (void)data; /* Not using data pointer in this callback */ + + fprintf(stderr, "%s: %sn", pdfioFileGetName(pdf), message); + + /* Return true to continue on warning messages, false otherwise... */ + return (!strncmp(message, "WARNING:", 8)); +} ++
Note: Files created using this API are slightly larger than those created using thepdfioFileCreate
function since stream lengths are @@ -4778,9 +4807,23 @@ PDF file requires a password, the open will always fail.
The "error_cb" and "error_cbdata" arguments specify an error handler callback and its data pointer - ifNULL
then the default error handler is used that -writes error messages tostderr
. The error handler callback should return -true
to continue reading the PDF file orfalse
to stop.
-
+writes error and warning messages tostderr
. The error handler callback +should returntrue
to continue reading the PDF file orfalse
to stop. +For example: + ++bool +my_error_cb(pdfio_file_t *pdf, const char *message, void *data) +{ + (void)data; /* Not using data pointer in this callback */ + + fprintf(stderr, "%s: %sn", pdfioFileGetName(pdf), message); + + /* Return true to continue on warning messages, false otherwise... */ + return (!strncmp(message, "WARNING:", 8)); +} ++Note: Error messages starting with "WARNING:" are actually warning messages - the callback should normally returntrue
to allow PDFio to diff --git a/pdfio-file.c b/pdfio-file.c index d4a5b36..0e52124 100644 --- a/pdfio-file.c +++ b/pdfio-file.c @@ -190,8 +190,22 @@ pdfioFileClose(pdfio_file_t *pdf) // I - PDF file // // The "error_cb" and "error_cbdata" arguments specify an error handler callback // and its data pointer - if `NULL` then the default error handler is used that -// writes error messages to `stderr`. The error handler callback should return -// `true` to continue writing the PDF file or `false` to stop. +// writes error and warning messages to `stderr`. The error handler callback +// should return `true` to continue writing the PDF file or `false` to stop. +// For example: +// +// ``` +// bool +// my_error_cb(pdfio_file_t *pdf, const char *message, void *data) +// { +// (void)data; /* Not using data pointer in this callback */ +// +// fprintf(stderr, "%s: %s\n", pdfioFileGetName(pdf), message); +// +// /* Return true to continue on warning messages, false otherwise... */ +// return (!strncmp(message, "WARNING:", 8)); +// } +// ``` // pdfio_file_t * // O - PDF file or `NULL` on error @@ -429,8 +443,22 @@ _pdfioFileCreateObj( // // The "error_cb" and "error_cbdata" arguments specify an error handler callback // and its data pointer - if `NULL` then the default error handler is used that -// writes error messages to `stderr`. The error handler callback should return -// `true` to continue writing the PDF file or `false` to stop. +// writes error and warning messages to `stderr`. The error handler callback +// should return `true` to continue writing the PDF file or `false` to stop. +// For example: +// +// ``` +// bool +// my_error_cb(pdfio_file_t *pdf, const char *message, void *data) +// { +// (void)data; /* Not using data pointer in this callback */ +// +// fprintf(stderr, "%s: %s\n", pdfioFileGetName(pdf), message); +// +// /* Return true to continue on warning messages, false otherwise... */ +// return (!strncmp(message, "WARNING:", 8)); +// } +// ``` // // > *Note*: Files created using this API are slightly larger than those // > created using the @link pdfioFileCreate@ function since stream lengths are @@ -1023,8 +1051,22 @@ pdfioFileGetVersion( // // The "error_cb" and "error_cbdata" arguments specify an error handler callback // and its data pointer - if `NULL` then the default error handler is used that -// writes error messages to `stderr`. The error handler callback should return -// `true` to continue reading the PDF file or `false` to stop. +// writes error and warning messages to `stderr`. The error handler callback +// should return `true` to continue reading the PDF file or `false` to stop. +// For example: +// +// ``` +// bool +// my_error_cb(pdfio_file_t *pdf, const char *message, void *data) +// { +// (void)data; /* Not using data pointer in this callback */ +// +// fprintf(stderr, "%s: %s\n", pdfioFileGetName(pdf), message); +// +// /* Return true to continue on warning messages, false otherwise... */ +// return (!strncmp(message, "WARNING:", 8)); +// } +// ``` // // > Note: Error messages starting with "WARNING:" are actually warning // > messages - the callback should normally return `true` to allow PDFio to