mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2025-05-01 21:06:45 +02:00
Compare commits
8 Commits
87ca4db73f
...
b0e4646f9d
Author | SHA1 | Date | |
---|---|---|---|
|
b0e4646f9d | ||
|
12ef2fe2c3 | ||
|
4630060ee7 | ||
|
74a6fb1860 | ||
|
a3ea0a99ff | ||
|
fdfa700442 | ||
|
d759baf11e | ||
|
7f6ffcda22 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -8,6 +8,8 @@
|
|||||||
/doc/pdfio.epub
|
/doc/pdfio.epub
|
||||||
/packages
|
/packages
|
||||||
/pdfio.xcodeproj/xcshareddata
|
/pdfio.xcodeproj/xcshareddata
|
||||||
|
/pdfio-*.tar.gz*
|
||||||
|
/pdfio-*.zip*
|
||||||
/pdfiototext
|
/pdfiototext
|
||||||
/testpdfio
|
/testpdfio
|
||||||
/testpdfio-*.pdf
|
/testpdfio-*.pdf
|
||||||
|
@ -7,6 +7,8 @@ v1.1.2 (TBD)
|
|||||||
|
|
||||||
- Fixed an issue with broken PDF files containing extra CR and/or LF separators
|
- Fixed an issue with broken PDF files containing extra CR and/or LF separators
|
||||||
after the object stream token (Issue #40)
|
after the object stream token (Issue #40)
|
||||||
|
- Fixed an issue with PDF files produced by Microsoft Reporting Services
|
||||||
|
(Issue #46)
|
||||||
|
|
||||||
|
|
||||||
v1.1.1 (March 20, 2023)
|
v1.1.1 (March 20, 2023)
|
||||||
|
@ -118,7 +118,7 @@ the source file and the copyright and licensing notice:
|
|||||||
//
|
//
|
||||||
// Description of file contents.
|
// Description of file contents.
|
||||||
//
|
//
|
||||||
// Copyright YYYY by AUTHOR.
|
// Copyright © YYYY by AUTHOR.
|
||||||
//
|
//
|
||||||
// Licensed under Apache License v2.0. See the file "LICENSE" for more
|
// Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||||
// information.
|
// information.
|
||||||
@ -330,7 +330,7 @@ typedef, for example:
|
|||||||
|
|
||||||
All constant names are uppercase with underscores between words, e.g.,
|
All constant names are uppercase with underscores between words, e.g.,
|
||||||
`PDFIO_THIS_CONSTANT`, `PDFIO_THAT_CONSTANT`, etc. Constants begin with the
|
`PDFIO_THIS_CONSTANT`, `PDFIO_THAT_CONSTANT`, etc. Constants begin with the
|
||||||
"PDFio\_" prefix to avoid conflicts with system constants. Private constants
|
"PDFIO\_" prefix to avoid conflicts with system constants. Private constants
|
||||||
start with an underscore, e.g., `_PDFIO_THIS_CONSTANT`,
|
start with an underscore, e.g., `_PDFIO_THIS_CONSTANT`,
|
||||||
`_PDFIO_THAT_CONSTANT`, etc.
|
`_PDFIO_THAT_CONSTANT`, etc.
|
||||||
|
|
||||||
@ -369,11 +369,12 @@ extensions MUST NOT be used.
|
|||||||
The following variables are defined in the makefile:
|
The following variables are defined in the makefile:
|
||||||
|
|
||||||
- `AR`; the static library archiver command,
|
- `AR`; the static library archiver command,
|
||||||
- `ARFLAGS`; options for the static library archiver command,
|
- `ARFLAGS`; options for the static library archiver,
|
||||||
- `CC`; the C compiler command,
|
- `CC`; the C compiler command,
|
||||||
- `CFLAGS`; options for the C compiler command,
|
- `CFLAGS`; options for the C compiler,
|
||||||
- `CODESIGN_IDENTITY`: the code signing identity,
|
- `CODESIGN_IDENTITY`: the code signing identity,
|
||||||
- `COMMONFLAGS`; common compiler optimization options,
|
- `COMMONFLAGS`; common compiler optimization options,
|
||||||
|
- `CPPFLAGS`; options for the C preprocessor,
|
||||||
- `DESTDIR`/`DSTROOT`: the destination root directory when installing.
|
- `DESTDIR`/`DSTROOT`: the destination root directory when installing.
|
||||||
- `DSO`; the shared library building command,
|
- `DSO`; the shared library building command,
|
||||||
- `DSOFLAGS`; options for the shared library building command,
|
- `DSOFLAGS`; options for the shared library building command,
|
||||||
@ -395,4 +396,5 @@ The following standard targets are defined in the makefile:
|
|||||||
with debug printfs and the clang address sanitizer enabled.
|
with debug printfs and the clang address sanitizer enabled.
|
||||||
- `install`; installs all distribution files in their corresponding locations.
|
- `install`; installs all distribution files in their corresponding locations.
|
||||||
- `install-shared`; same as `install` but also installs the shared library.
|
- `install-shared`; same as `install` but also installs the shared library.
|
||||||
|
- `macos`; same as `all` but creates a Universal Binary (X64 + ARM64).
|
||||||
- `test`; runs the unit test program, building it as needed.
|
- `test`; runs the unit test program, building it as needed.
|
||||||
|
6
Makefile
6
Makefile
@ -21,7 +21,7 @@ CFLAGS =
|
|||||||
CODESIGN_IDENTITY = Developer ID
|
CODESIGN_IDENTITY = Developer ID
|
||||||
COMMONFLAGS = -Os -g
|
COMMONFLAGS = -Os -g
|
||||||
#COMMONFLAGS = -O0 -g -fsanitize=address
|
#COMMONFLAGS = -O0 -g -fsanitize=address
|
||||||
CPPFLAGS = '-DPDFIO_VERSION="$(VERSION)"'
|
CPPFLAGS =
|
||||||
DESTDIR = $(DSTROOT)
|
DESTDIR = $(DSTROOT)
|
||||||
DSO = cc
|
DSO = cc
|
||||||
DSOFLAGS =
|
DSOFLAGS =
|
||||||
@ -89,7 +89,7 @@ debug:
|
|||||||
$(MAKE) -$(MAKEFLAGS) COMMONFLAGS="-g -fsanitize=address -DDEBUG=1" clean all
|
$(MAKE) -$(MAKEFLAGS) COMMONFLAGS="-g -fsanitize=address -DDEBUG=1" clean all
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
$(MAKE) -$(MAKEFLAGS) COMMONFLAGS="-Os -mmacosx-version-min=10.14 -arch x86_64 -arch arm64" clean all
|
$(MAKE) -$(MAKEFLAGS) COMMONFLAGS="-Os -mmacosx-version-min=11 -arch x86_64 -arch arm64" clean all
|
||||||
|
|
||||||
|
|
||||||
# Clean everything
|
# Clean everything
|
||||||
@ -191,7 +191,7 @@ ttf.o: ttf.h
|
|||||||
# Make documentation using Codedoc <https://www.msweet.org/codedoc>
|
# Make documentation using Codedoc <https://www.msweet.org/codedoc>
|
||||||
DOCFLAGS = \
|
DOCFLAGS = \
|
||||||
--author "Michael R Sweet" \
|
--author "Michael R Sweet" \
|
||||||
--copyright "Copyright (c) 2021-2022 by Michael R Sweet" \
|
--copyright "Copyright (c) 2021-2023 by Michael R Sweet" \
|
||||||
--docversion $(VERSION)
|
--docversion $(VERSION)
|
||||||
|
|
||||||
.PHONY: doc
|
.PHONY: doc
|
||||||
|
@ -5,8 +5,6 @@ pdfio - PDF Read/Write Library
|
|||||||

|

|
||||||
[](https://github.com/michaelrsweet/pdfio/actions/workflows/build.yml)
|
[](https://github.com/michaelrsweet/pdfio/actions/workflows/build.yml)
|
||||||
[](https://scan.coverity.com/projects/michaelrsweet-pdfio)
|
[](https://scan.coverity.com/projects/michaelrsweet-pdfio)
|
||||||
[](https://lgtm.com/projects/g/michaelrsweet/pdfio/context:cpp)
|
|
||||||
[](https://lgtm.com/projects/g/michaelrsweet/pdfio/)
|
|
||||||
|
|
||||||
PDFio is a simple C library for reading and writing PDF files. The primary
|
PDFio is a simple C library for reading and writing PDF files. The primary
|
||||||
goals of PDFio are:
|
goals of PDFio are:
|
||||||
|
27
SECURITY.md
27
SECURITY.md
@ -5,6 +5,25 @@ This file describes how security issues are reported and handled, and what the
|
|||||||
expectations are for security issues reported to this project.
|
expectations are for security issues reported to this project.
|
||||||
|
|
||||||
|
|
||||||
|
Reporting a Security Bug
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
For the purposes of this project, a security bug is a software defect that
|
||||||
|
allows a *local or remote user* to gain unauthorized access or privileges on the
|
||||||
|
host computer or to cause the software to crash. Such defects should be
|
||||||
|
reported to the project security advisory page at
|
||||||
|
<https://github.com/michaelrsweet/pdfio/security/advisories>.
|
||||||
|
|
||||||
|
Alternately, security bugs can be reported to "security AT msweet.org" using the
|
||||||
|
PGP public key below. Expect a response within 5 business days. Any proposed
|
||||||
|
embargo date should be at least 30 days and no more than 90 days in the future.
|
||||||
|
|
||||||
|
> *Note:* If you've found a software defect that allows a *program* to gain
|
||||||
|
> unauthorized access or privileges on the host computer or causes the program
|
||||||
|
> to crash, that defect should be reported as an ordinary project issue at
|
||||||
|
> <https://github.com/michaelrsweet/pdfio/issues>.
|
||||||
|
|
||||||
|
|
||||||
Responsible Disclosure
|
Responsible Disclosure
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
@ -50,14 +69,6 @@ example:
|
|||||||
1.0rc1
|
1.0rc1
|
||||||
|
|
||||||
|
|
||||||
Reporting a Vulnerability
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
Report all security issues to "security AT msweet.org". Expect a response
|
|
||||||
within 5 business days. Any proposed embargo date should be at least 30 days
|
|
||||||
and no more than 90 days in the future.
|
|
||||||
|
|
||||||
|
|
||||||
PGP Public Key
|
PGP Public Key
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// Public content header file for PDFio.
|
// Public content header file for PDFio.
|
||||||
//
|
//
|
||||||
// Copyright © 2021 by Michael R Sweet.
|
// Copyright © 2021-2023 by Michael R Sweet.
|
||||||
//
|
//
|
||||||
// Licensed under Apache License v2.0. See the file "LICENSE" for more
|
// Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||||
// information.
|
// information.
|
||||||
@ -9,18 +9,7 @@
|
|||||||
|
|
||||||
#ifndef PDFIO_CONTENT_H
|
#ifndef PDFIO_CONTENT_H
|
||||||
# define PDFIO_CONTENT_H
|
# define PDFIO_CONTENT_H
|
||||||
|
|
||||||
//
|
|
||||||
// Include necessary headers...
|
|
||||||
//
|
|
||||||
|
|
||||||
# include "pdfio.h"
|
# include "pdfio.h"
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// C++ magic...
|
|
||||||
//
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
# endif // __cplusplus
|
# endif // __cplusplus
|
||||||
@ -151,10 +140,6 @@ extern bool pdfioPageDictAddFont(pdfio_dict_t *dict, const char *name, pdfio_ob
|
|||||||
extern bool pdfioPageDictAddImage(pdfio_dict_t *dict, const char *name, pdfio_obj_t *obj) _PDFIO_PUBLIC;
|
extern bool pdfioPageDictAddImage(pdfio_dict_t *dict, const char *name, pdfio_obj_t *obj) _PDFIO_PUBLIC;
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// C++ magic...
|
|
||||||
//
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
}
|
}
|
||||||
# endif // __cplusplus
|
# endif // __cplusplus
|
||||||
|
23
pdfio-file.c
23
pdfio-file.c
@ -1737,6 +1737,10 @@ load_xref(
|
|||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PDFIO_DEBUG("load_xref: tb.bufptr=%p, tb.bufend=%p, tb.bufptr[0]=0x%02x, tb.bufptr[0]=0x%02x\n", tb.bufptr, tb.bufend, tb.bufptr[0], tb.bufptr[1]);
|
||||||
|
if (tb.bufptr && tb.bufptr < tb.bufend && (tb.bufptr[0] == 0x0d || tb.bufptr[0] == 0x0a))
|
||||||
|
tb.bufptr ++; // Skip trailing CR or LF after token
|
||||||
|
|
||||||
_pdfioTokenFlush(&tb);
|
_pdfioTokenFlush(&tb);
|
||||||
|
|
||||||
obj->stream_offset = _pdfioFileTell(pdf);
|
obj->stream_offset = _pdfioFileTell(pdf);
|
||||||
@ -1759,9 +1763,9 @@ load_xref(
|
|||||||
w_2 = w[0];
|
w_2 = w[0];
|
||||||
w_3 = w[0] + w[1];
|
w_3 = w[0] + w[1];
|
||||||
|
|
||||||
if (w[1] == 0 || w[2] > 2 || w[0] > sizeof(buffer) || w[1] > sizeof(buffer) || w[2] > sizeof(buffer) || w_total > sizeof(buffer))
|
if (w[1] == 0 || w[2] > 4 || w[0] > sizeof(buffer) || w[1] > sizeof(buffer) || w[2] > sizeof(buffer) || w_total > sizeof(buffer))
|
||||||
{
|
{
|
||||||
_pdfioFileError(pdf, "Cross-reference stream has invalid W key.");
|
_pdfioFileError(pdf, "Cross-reference stream has invalid W key [%u %u %u].", (unsigned)w[0], (unsigned)w[1], (unsigned)w[2]);
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1801,9 +1805,11 @@ load_xref(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Offset
|
||||||
for (i = 1, offset = buffer[w_2]; i < w[1]; i ++)
|
for (i = 1, offset = buffer[w_2]; i < w[1]; i ++)
|
||||||
offset = (offset << 8) | buffer[w_2 + i];
|
offset = (offset << 8) | buffer[w_2 + i];
|
||||||
|
|
||||||
|
// Generation number
|
||||||
switch (w[2])
|
switch (w[2])
|
||||||
{
|
{
|
||||||
default :
|
default :
|
||||||
@ -1815,6 +1821,19 @@ load_xref(
|
|||||||
case 2 :
|
case 2 :
|
||||||
generation = (buffer[w_3] << 8) | buffer[w_3 + 1];
|
generation = (buffer[w_3] << 8) | buffer[w_3 + 1];
|
||||||
break;
|
break;
|
||||||
|
case 3 :
|
||||||
|
// Issue #46: Stupid Microsoft PDF generator using 3 bytes to
|
||||||
|
// encode 16-bit generation numbers == 0 (probably a lazy coder
|
||||||
|
// stuffing things into an array of 64-bit unsigned integers)
|
||||||
|
generation = (buffer[w_3] << 16) | (buffer[w_3 + 1] << 8) | buffer[w_3 + 2];
|
||||||
|
if (generation > 65535)
|
||||||
|
generation = 65535;
|
||||||
|
break;
|
||||||
|
case 4 : // Even stupider :)
|
||||||
|
generation = (buffer[w_3] << 24) | (buffer[w_3 + 1] << 16) | (buffer[w_3 + 2] << 8) | buffer[w_3 + 3];
|
||||||
|
if (generation > 65535)
|
||||||
|
generation = 65535;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a placeholder for the object in memory...
|
// Create a placeholder for the object in memory...
|
||||||
|
@ -441,7 +441,8 @@ _pdfioObjLoad(pdfio_obj_t *obj) // I - Object
|
|||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb.bufptr && tb.bufptr < tb.bufend && (*(tb.bufptr) == 0x0d || *(tb.bufptr) == 0x0a))
|
PDFIO_DEBUG("_pdfioObjLoad: tb.bufptr=%p, tb.bufend=%p, tb.bufptr[0]=0x%02x, tb.bufptr[0]=0x%02x\n", tb.bufptr, tb.bufend, tb.bufptr[0], tb.bufptr[1]);
|
||||||
|
if (tb.bufptr && tb.bufptr < tb.bufend && (tb.bufptr[0] == 0x0d || tb.bufptr[0] == 0x0a))
|
||||||
tb.bufptr ++; // Skip trailing CR or LF after token
|
tb.bufptr ++; // Skip trailing CR or LF after token
|
||||||
|
|
||||||
_pdfioTokenFlush(&tb);
|
_pdfioTokenFlush(&tb);
|
||||||
|
@ -9,17 +9,14 @@
|
|||||||
|
|
||||||
#ifndef PDFIO_PRIVATE_H
|
#ifndef PDFIO_PRIVATE_H
|
||||||
# define PDFIO_PRIVATE_H
|
# define PDFIO_PRIVATE_H
|
||||||
|
|
||||||
|
|
||||||
# ifdef _WIN32
|
# ifdef _WIN32
|
||||||
# define _CRT_SECURE_NO_WARNINGS // Disable bogus VS warnings/errors...
|
# define _CRT_SECURE_NO_WARNINGS // Disable bogus VS warnings/errors...
|
||||||
# endif // _WIN32
|
# endif // _WIN32
|
||||||
|
|
||||||
|
|
||||||
# include "pdfio.h"
|
# include "pdfio.h"
|
||||||
# include <stdarg.h>
|
# include <stdarg.h>
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
|
# include <ctype.h>
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
# include <inttypes.h>
|
# include <inttypes.h>
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
@ -42,17 +39,15 @@
|
|||||||
# define F_OK 00 // POSIX parameters/flags
|
# define F_OK 00 // POSIX parameters/flags
|
||||||
# define W_OK 02
|
# define W_OK 02
|
||||||
# define R_OK 04
|
# define R_OK 04
|
||||||
# define O_RDONLY _O_RDONLY
|
# define O_RDONLY _O_RDONLY // Map standard POSIX open flags
|
||||||
# define O_WRONLY _O_WRONLY
|
# define O_WRONLY _O_WRONLY
|
||||||
# define O_CREAT _O_CREAT
|
# define O_CREAT _O_CREAT
|
||||||
# define O_TRUNC _O_TRUNC
|
# define O_TRUNC _O_TRUNC
|
||||||
# define O_BINARY _O_BINARY
|
# define O_BINARY _O_BINARY
|
||||||
# else // !_WIN32
|
# else // !_WIN32
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# define O_BINARY 0 // Used on Windows for binary files...
|
# define O_BINARY 0 // Map Windows-specific open flag
|
||||||
# endif // _WIN32
|
# endif // _WIN32
|
||||||
# include <string.h>
|
|
||||||
# include <ctype.h>
|
|
||||||
# include <zlib.h>
|
# include <zlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -579,12 +579,6 @@ _pdfioStreamOpen(pdfio_obj_t *obj, // I - Object
|
|||||||
st->flate.next_in = (Bytef *)st->cbuffer;
|
st->flate.next_in = (Bytef *)st->cbuffer;
|
||||||
st->flate.avail_in = (uInt)rbytes;
|
st->flate.avail_in = (uInt)rbytes;
|
||||||
|
|
||||||
if (st->cbuffer[0] == 0x0a)
|
|
||||||
{
|
|
||||||
st->flate.next_in ++; // Skip newline
|
|
||||||
st->flate.avail_in --;
|
|
||||||
}
|
|
||||||
|
|
||||||
PDFIO_DEBUG("_pdfioStreamOpen: avail_in=%u, cbuffer=<%02X%02X%02X%02X%02X%02X%02X%02X...>\n", st->flate.avail_in, st->cbuffer[0], st->cbuffer[1], st->cbuffer[2], st->cbuffer[3], st->cbuffer[4], st->cbuffer[5], st->cbuffer[6], st->cbuffer[7]);
|
PDFIO_DEBUG("_pdfioStreamOpen: avail_in=%u, cbuffer=<%02X%02X%02X%02X%02X%02X%02X%02X...>\n", st->flate.avail_in, st->cbuffer[0], st->cbuffer[1], st->cbuffer[2], st->cbuffer[3], st->cbuffer[4], st->cbuffer[5], st->cbuffer[6], st->cbuffer[7]);
|
||||||
|
|
||||||
if ((status = inflateInit(&(st->flate))) != Z_OK)
|
if ((status = inflateInit(&(st->flate))) != Z_OK)
|
||||||
|
@ -495,6 +495,13 @@ _pdfioTokenRead(_pdfio_token_t *tb, // I - Token buffer/stack
|
|||||||
*bufptr++ = (char)ch;
|
*bufptr++ = (char)ch;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (ch == '>')
|
||||||
|
{
|
||||||
|
// Issue #46: Empty hex string from Microsoft PDF generator; treat as
|
||||||
|
// empty literal string...
|
||||||
|
*buffer = '(';
|
||||||
|
break;
|
||||||
|
}
|
||||||
else if (!isspace(ch & 255) && !isxdigit(ch & 255))
|
else if (!isspace(ch & 255) && !isxdigit(ch & 255))
|
||||||
{
|
{
|
||||||
_pdfioFileError(tb->pdf, "Syntax error: '<%c'", ch);
|
_pdfioFileError(tb->pdf, "Syntax error: '<%c'", ch);
|
||||||
|
24
pdfio.h
24
pdfio.h
@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// Public header file for PDFio.
|
// Public header file for PDFio.
|
||||||
//
|
//
|
||||||
// Copyright © 2021-2022 by Michael R Sweet.
|
// Copyright © 2021-2023 by Michael R Sweet.
|
||||||
//
|
//
|
||||||
// Licensed under Apache License v2.0. See the file "LICENSE" for more
|
// Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||||||
// information.
|
// information.
|
||||||
@ -9,27 +9,23 @@
|
|||||||
|
|
||||||
#ifndef PDFIO_H
|
#ifndef PDFIO_H
|
||||||
# define PDFIO_H
|
# define PDFIO_H
|
||||||
|
|
||||||
//
|
|
||||||
// Include necessary headers...
|
|
||||||
//
|
|
||||||
|
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# include <stdbool.h>
|
# include <stdbool.h>
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
# include <time.h>
|
# include <time.h>
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// C++ magic...
|
|
||||||
//
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
# endif // __cplusplus
|
# endif // __cplusplus
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Version number...
|
||||||
|
//
|
||||||
|
|
||||||
|
# define PDFIO_VERSION "1.1.2"
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Visibility and other annotations...
|
// Visibility and other annotations...
|
||||||
//
|
//
|
||||||
@ -244,10 +240,6 @@ extern char *pdfioStringCreate(pdfio_file_t *pdf, const char *s) _PDFIO_PUBLIC
|
|||||||
extern char *pdfioStringCreatef(pdfio_file_t *pdf, const char *format, ...) _PDFIO_FORMAT(2,3) _PDFIO_PUBLIC;
|
extern char *pdfioStringCreatef(pdfio_file_t *pdf, const char *format, ...) _PDFIO_FORMAT(2,3) _PDFIO_PUBLIC;
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// C++ magic...
|
|
||||||
//
|
|
||||||
|
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
}
|
}
|
||||||
# endif // __cplusplus
|
# endif // __cplusplus
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>PDFIO_VERSION="1.1.1";WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
@ -101,7 +101,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>PDFIO_VERSION="1.1.1";WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
@ -115,7 +115,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>PDFIO_VERSION="1.1.1";_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>PDFIO_VERSION="1.1.1";NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
@ -372,7 +372,7 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 1.1.1;
|
CURRENT_PROJECT_VERSION = 1.1.2;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
@ -381,7 +381,6 @@
|
|||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
"'PDFIO_VERSION=\"$(CURRENT_PROJECT_VERSION)\"'",
|
|
||||||
);
|
);
|
||||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
@ -397,7 +396,7 @@
|
|||||||
GCC_WARN_UNUSED_LABEL = YES;
|
GCC_WARN_UNUSED_LABEL = YES;
|
||||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
@ -450,7 +449,7 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 1.1;
|
CURRENT_PROJECT_VERSION = 1.1.2;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
@ -459,7 +458,6 @@
|
|||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"'PDFIO_VERSION=\"$(CURRENT_PROJECT_VERSION)\"'",
|
|
||||||
);
|
);
|
||||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
@ -475,7 +473,7 @@
|
|||||||
GCC_WARN_UNUSED_LABEL = YES;
|
GCC_WARN_UNUSED_LABEL = YES;
|
||||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
RUN_CLANG_STATIC_ANALYZER = YES;
|
RUN_CLANG_STATIC_ANALYZER = YES;
|
||||||
@ -515,7 +513,7 @@
|
|||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.msweet.testpdfio;
|
PRODUCT_BUNDLE_IDENTIFIER = org.msweet.testpdfio;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -529,7 +527,7 @@
|
|||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.msweet.testpdfio;
|
PRODUCT_BUNDLE_IDENTIFIER = org.msweet.testpdfio;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<metadata>
|
<metadata>
|
||||||
<id>pdfio_native</id>
|
<id>pdfio_native</id>
|
||||||
<title>PDFio Library for VS2019+</title>
|
<title>PDFio Library for VS2019+</title>
|
||||||
<version>1.1.1</version>
|
<version>1.1.2</version>
|
||||||
<authors>Michael R Sweet</authors>
|
<authors>Michael R Sweet</authors>
|
||||||
<owners>michaelrsweet</owners>
|
<owners>michaelrsweet</owners>
|
||||||
<projectUrl>https://github.com/michaelrsweet/pappl</projectUrl>
|
<projectUrl>https://github.com/michaelrsweet/pappl</projectUrl>
|
||||||
@ -16,7 +16,7 @@
|
|||||||
<copyright>Copyright © 2019-2023 by Michael R Sweet</copyright>
|
<copyright>Copyright © 2019-2023 by Michael R Sweet</copyright>
|
||||||
<tags>pdf file native</tags>
|
<tags>pdf file native</tags>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="pdfio_native.redist" version="1.1.1" />
|
<dependency id="pdfio_native.redist" version="1.1.2" />
|
||||||
<dependency id="zlib_native.redist" version="1.2.11" />
|
<dependency id="zlib_native.redist" version="1.2.11" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<metadata>
|
<metadata>
|
||||||
<id>pdfio_native.redist</id>
|
<id>pdfio_native.redist</id>
|
||||||
<title>PDFio Library for VS2019+</title>
|
<title>PDFio Library for VS2019+</title>
|
||||||
<version>1.1.1</version>
|
<version>1.1.2</version>
|
||||||
<authors>Michael R Sweet</authors>
|
<authors>Michael R Sweet</authors>
|
||||||
<owners>michaelrsweet</owners>
|
<owners>michaelrsweet</owners>
|
||||||
<projectUrl>https://github.com/michaelrsweet/pappl</projectUrl>
|
<projectUrl>https://github.com/michaelrsweet/pappl</projectUrl>
|
||||||
@ -15,6 +15,9 @@
|
|||||||
<summary>PDFio is a simple C library for reading and writing PDF files. This package provides the redistributable content for the PDFio library. PDFio is licensed under the Apache License Version 2.0 with an (optional) exception to allow linking against GNU GPL2-only software.</summary>
|
<summary>PDFio is a simple C library for reading and writing PDF files. This package provides the redistributable content for the PDFio library. PDFio is licensed under the Apache License Version 2.0 with an (optional) exception to allow linking against GNU GPL2-only software.</summary>
|
||||||
<copyright>Copyright © 2019-2023 by Michael R Sweet</copyright>
|
<copyright>Copyright © 2019-2023 by Michael R Sweet</copyright>
|
||||||
<tags>pdf file native</tags>
|
<tags>pdf file native</tags>
|
||||||
|
<dependencies>
|
||||||
|
<dependency id="zlib_native.redist" version="1.2.11" />
|
||||||
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
<file src="doc\pdfio-128.png" target="build\native" />
|
<file src="doc\pdfio-128.png" target="build\native" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user