mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2025-12-24 05:56:25 +01:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09198056a5 | ||
|
|
1c9e675cf6 | ||
|
|
f16f0c10ed | ||
|
|
019f0e8003 | ||
|
|
d5d089c560 | ||
|
|
23eb44e80b | ||
|
|
7d412cf855 | ||
|
|
597c9f8cda | ||
|
|
789b74af39 | ||
|
|
5032ce926e | ||
|
|
2977b82f35 | ||
|
|
b6008bae76 | ||
|
|
8459d97ff3 |
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PDFio sources
|
- name: Checkout PDFio sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Update Build Environment
|
- name: Update Build Environment
|
||||||
run: sudo apt-get update --fix-missing -y
|
run: sudo apt-get update --fix-missing -y
|
||||||
- name: Install Prerequisites
|
- name: Install Prerequisites
|
||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
- name: Configure PDFio
|
- name: Configure PDFio
|
||||||
run: ./configure --enable-debug --enable-sanitizer --enable-maintainer
|
run: ./configure --enable-debug --enable-sanitizer --enable-maintainer
|
||||||
- name: Build PDFio
|
- name: Build PDFio
|
||||||
run: make "COMMONFLAGS=-g -fsanitize=address"
|
run: make
|
||||||
- name: Test PDFio
|
- name: Test PDFio
|
||||||
env:
|
env:
|
||||||
ASAN_OPTIONS: leak_check_at_exit=false
|
ASAN_OPTIONS: leak_check_at_exit=false
|
||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PDFio sources
|
- name: Checkout PDFio sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Configure PDFio
|
- name: Configure PDFio
|
||||||
run: ./configure --enable-debug --enable-sanitizer --enable-maintainer
|
run: ./configure --enable-debug --enable-sanitizer --enable-maintainer
|
||||||
- name: Build PDFio
|
- name: Build PDFio
|
||||||
@@ -53,9 +53,9 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PDFio sources
|
- name: Checkout PDFio sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Setup MSBuild
|
- name: Setup MSBuild
|
||||||
uses: microsoft/setup-msbuild@v1.0.2
|
uses: microsoft/setup-msbuild@v2
|
||||||
- name: Nuget Restore
|
- name: Nuget Restore
|
||||||
run: nuget restore pdfio.sln
|
run: nuget restore pdfio.sln
|
||||||
- name: Build PDFio
|
- name: Build PDFio
|
||||||
|
|||||||
2
.github/workflows/codeql.yml
vendored
2
.github/workflows/codeql.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PDFio sources
|
- name: Checkout PDFio sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/coverity.yml
vendored
2
.github/workflows/coverity.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
|||||||
environment: Coverity
|
environment: Coverity
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PDFio sources
|
- name: Checkout PDFio sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
- name: Update Build Environment
|
- name: Update Build Environment
|
||||||
run: sudo apt-get update --fix-missing -y
|
run: sudo apt-get update --fix-missing -y
|
||||||
- name: Install Prerequisites
|
- name: Install Prerequisites
|
||||||
|
|||||||
13
CHANGES.md
13
CHANGES.md
@@ -2,6 +2,19 @@ Changes in PDFio
|
|||||||
================
|
================
|
||||||
|
|
||||||
|
|
||||||
|
v1.6.1 - YYYY-MM-DD
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
- Added missing input checking to `pdfioFileCreateFontObjFromBase` function.
|
||||||
|
- Updated support for UTF-16 strings (Issue #141)
|
||||||
|
- Updated Xcode project to use installed PNG library.
|
||||||
|
- Fixed decryption of PDF files using an Encrypt dictionary instead of an
|
||||||
|
indirect reference (Issue #139)
|
||||||
|
- Fixed character range checking in a TTF support function.
|
||||||
|
- Fixed some clang warnings.
|
||||||
|
- Fixed the generated pkg-config file.
|
||||||
|
|
||||||
|
|
||||||
v1.6.0 - 2025-10-06
|
v1.6.0 - 2025-10-06
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
|||||||
78
config.guess
vendored
78
config.guess
vendored
@@ -1,10 +1,10 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Attempt to guess a canonical system name.
|
# Attempt to guess a canonical system name.
|
||||||
# Copyright 1992-2022 Free Software Foundation, Inc.
|
# Copyright 1992-2025 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||||
|
|
||||||
timestamp='2022-09-17'
|
timestamp='2025-07-10'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
@@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
|
|||||||
usage="\
|
usage="\
|
||||||
Usage: $0 [OPTION]
|
Usage: $0 [OPTION]
|
||||||
|
|
||||||
Output the configuration name of the system \`$me' is run on.
|
Output the configuration name of the system '$me' is run on.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-h, --help print this help, then exit
|
-h, --help print this help, then exit
|
||||||
@@ -60,13 +60,13 @@ version="\
|
|||||||
GNU config.guess ($timestamp)
|
GNU config.guess ($timestamp)
|
||||||
|
|
||||||
Originally written by Per Bothner.
|
Originally written by Per Bothner.
|
||||||
Copyright 1992-2022 Free Software Foundation, Inc.
|
Copyright 1992-2025 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
|
|
||||||
help="
|
help="
|
||||||
Try \`$me --help' for more information."
|
Try '$me --help' for more information."
|
||||||
|
|
||||||
# Parse command line
|
# Parse command line
|
||||||
while test $# -gt 0 ; do
|
while test $# -gt 0 ; do
|
||||||
@@ -102,8 +102,8 @@ GUESS=
|
|||||||
# temporary files to be created and, as you can see below, it is a
|
# temporary files to be created and, as you can see below, it is a
|
||||||
# headache to deal with in a portable fashion.
|
# headache to deal with in a portable fashion.
|
||||||
|
|
||||||
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
|
# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
|
||||||
# use `HOST_CC' if defined, but it is deprecated.
|
# use 'HOST_CC' if defined, but it is deprecated.
|
||||||
|
|
||||||
# Portable tmp directory creation inspired by the Autoconf team.
|
# Portable tmp directory creation inspired by the Autoconf team.
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ set_cc_for_build() {
|
|||||||
dummy=$tmp/dummy
|
dummy=$tmp/dummy
|
||||||
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
|
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
|
||||||
,,) echo "int x;" > "$dummy.c"
|
,,) echo "int x;" > "$dummy.c"
|
||||||
for driver in cc gcc c89 c99 ; do
|
for driver in cc gcc c17 c99 c89 ; do
|
||||||
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
|
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
|
||||||
CC_FOR_BUILD=$driver
|
CC_FOR_BUILD=$driver
|
||||||
break
|
break
|
||||||
@@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
|
|||||||
|
|
||||||
set_cc_for_build
|
set_cc_for_build
|
||||||
cat <<-EOF > "$dummy.c"
|
cat <<-EOF > "$dummy.c"
|
||||||
|
#if defined(__ANDROID__)
|
||||||
|
LIBC=android
|
||||||
|
#else
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#if defined(__UCLIBC__)
|
#if defined(__UCLIBC__)
|
||||||
LIBC=uclibc
|
LIBC=uclibc
|
||||||
@@ -162,6 +165,8 @@ Linux|GNU|GNU/*)
|
|||||||
LIBC=dietlibc
|
LIBC=dietlibc
|
||||||
#elif defined(__GLIBC__)
|
#elif defined(__GLIBC__)
|
||||||
LIBC=gnu
|
LIBC=gnu
|
||||||
|
#elif defined(__LLVM_LIBC__)
|
||||||
|
LIBC=llvm
|
||||||
#else
|
#else
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
/* First heuristic to detect musl libc. */
|
/* First heuristic to detect musl libc. */
|
||||||
@@ -169,6 +174,7 @@ Linux|GNU|GNU/*)
|
|||||||
LIBC=musl
|
LIBC=musl
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
EOF
|
EOF
|
||||||
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
|
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
|
||||||
eval "$cc_set_libc"
|
eval "$cc_set_libc"
|
||||||
@@ -459,7 +465,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
|
|||||||
UNAME_RELEASE=`uname -v`
|
UNAME_RELEASE=`uname -v`
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# Japanese Language versions have a version number like `4.1.3-JL'.
|
# Japanese Language versions have a version number like '4.1.3-JL'.
|
||||||
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
|
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
|
||||||
GUESS=sparc-sun-sunos$SUN_REL
|
GUESS=sparc-sun-sunos$SUN_REL
|
||||||
;;
|
;;
|
||||||
@@ -628,7 +634,8 @@ EOF
|
|||||||
sed 's/^ //' << EOF > "$dummy.c"
|
sed 's/^ //' << EOF > "$dummy.c"
|
||||||
#include <sys/systemcfg.h>
|
#include <sys/systemcfg.h>
|
||||||
|
|
||||||
main()
|
int
|
||||||
|
main ()
|
||||||
{
|
{
|
||||||
if (!__power_pc())
|
if (!__power_pc())
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -712,7 +719,8 @@ EOF
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
int main ()
|
int
|
||||||
|
main ()
|
||||||
{
|
{
|
||||||
#if defined(_SC_KERNEL_BITS)
|
#if defined(_SC_KERNEL_BITS)
|
||||||
long bits = sysconf(_SC_KERNEL_BITS);
|
long bits = sysconf(_SC_KERNEL_BITS);
|
||||||
@@ -904,7 +912,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*:FreeBSD:*:*)
|
*:FreeBSD:*:*)
|
||||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
UNAME_PROCESSOR=`uname -p`
|
||||||
case $UNAME_PROCESSOR in
|
case $UNAME_PROCESSOR in
|
||||||
amd64)
|
amd64)
|
||||||
UNAME_PROCESSOR=x86_64 ;;
|
UNAME_PROCESSOR=x86_64 ;;
|
||||||
@@ -976,7 +984,27 @@ EOF
|
|||||||
GUESS=$UNAME_MACHINE-unknown-minix
|
GUESS=$UNAME_MACHINE-unknown-minix
|
||||||
;;
|
;;
|
||||||
aarch64:Linux:*:*)
|
aarch64:Linux:*:*)
|
||||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
set_cc_for_build
|
||||||
|
CPU=$UNAME_MACHINE
|
||||||
|
LIBCABI=$LIBC
|
||||||
|
if test "$CC_FOR_BUILD" != no_compiler_found; then
|
||||||
|
ABI=64
|
||||||
|
sed 's/^ //' << EOF > "$dummy.c"
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
#ifdef __ARM_PCS_VFP
|
||||||
|
ABI=eabihf
|
||||||
|
#else
|
||||||
|
ABI=eabi
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
|
||||||
|
eval "$cc_set_abi"
|
||||||
|
case $ABI in
|
||||||
|
eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
GUESS=$CPU-unknown-linux-$LIBCABI
|
||||||
;;
|
;;
|
||||||
aarch64_be:Linux:*:*)
|
aarch64_be:Linux:*:*)
|
||||||
UNAME_MACHINE=aarch64_be
|
UNAME_MACHINE=aarch64_be
|
||||||
@@ -1042,6 +1070,15 @@ EOF
|
|||||||
k1om:Linux:*:*)
|
k1om:Linux:*:*)
|
||||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||||
;;
|
;;
|
||||||
|
kvx:Linux:*:*)
|
||||||
|
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||||
|
;;
|
||||||
|
kvx:cos:*:*)
|
||||||
|
GUESS=$UNAME_MACHINE-unknown-cos
|
||||||
|
;;
|
||||||
|
kvx:mbr:*:*)
|
||||||
|
GUESS=$UNAME_MACHINE-unknown-mbr
|
||||||
|
;;
|
||||||
loongarch32:Linux:*:* | loongarch64:Linux:*:*)
|
loongarch32:Linux:*:* | loongarch64:Linux:*:*)
|
||||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||||
;;
|
;;
|
||||||
@@ -1197,7 +1234,7 @@ EOF
|
|||||||
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
|
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
|
||||||
;;
|
;;
|
||||||
i*86:OS/2:*:*)
|
i*86:OS/2:*:*)
|
||||||
# If we were able to find `uname', then EMX Unix compatibility
|
# If we were able to find 'uname', then EMX Unix compatibility
|
||||||
# is probably installed.
|
# is probably installed.
|
||||||
GUESS=$UNAME_MACHINE-pc-os2-emx
|
GUESS=$UNAME_MACHINE-pc-os2-emx
|
||||||
;;
|
;;
|
||||||
@@ -1338,7 +1375,7 @@ EOF
|
|||||||
GUESS=ns32k-sni-sysv
|
GUESS=ns32k-sni-sysv
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
|
PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
|
||||||
# says <Richard.M.Bartel@ccMail.Census.GOV>
|
# says <Richard.M.Bartel@ccMail.Census.GOV>
|
||||||
GUESS=i586-unisys-sysv4
|
GUESS=i586-unisys-sysv4
|
||||||
;;
|
;;
|
||||||
@@ -1560,6 +1597,12 @@ EOF
|
|||||||
*:Unleashed:*:*)
|
*:Unleashed:*:*)
|
||||||
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
|
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
|
||||||
;;
|
;;
|
||||||
|
x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*)
|
||||||
|
GUESS=$UNAME_MACHINE-pc-ironclad-mlibc
|
||||||
|
;;
|
||||||
|
*:[Ii]ronclad:*:*)
|
||||||
|
GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Do we have a guess based on uname results?
|
# Do we have a guess based on uname results?
|
||||||
@@ -1583,6 +1626,7 @@ cat > "$dummy.c" <<EOF
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if defined (sony)
|
#if defined (sony)
|
||||||
@@ -1767,8 +1811,8 @@ fi
|
|||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
# eval: (add-hook 'before-save-hook 'time-stamp nil t)
|
||||||
# time-stamp-start: "timestamp='"
|
# time-stamp-start: "timestamp='"
|
||||||
# time-stamp-format: "%:y-%02m-%02d"
|
# time-stamp-format: "%Y-%02m-%02d"
|
||||||
# time-stamp-end: "'"
|
# time-stamp-end: "'"
|
||||||
# End:
|
# End:
|
||||||
|
|||||||
953
config.sub
vendored
953
config.sub
vendored
File diff suppressed because it is too large
Load Diff
49
configure
vendored
49
configure
vendored
@@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.71 for pdfio 1.6.0.
|
# Generated by GNU Autoconf 2.71 for pdfio 1.6.1.
|
||||||
#
|
#
|
||||||
# Report bugs to <https://github.com/michaelrsweet/pdfio/issues>.
|
# Report bugs to <https://github.com/michaelrsweet/pdfio/issues>.
|
||||||
#
|
#
|
||||||
@@ -610,8 +610,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='pdfio'
|
PACKAGE_NAME='pdfio'
|
||||||
PACKAGE_TARNAME='pdfio'
|
PACKAGE_TARNAME='pdfio'
|
||||||
PACKAGE_VERSION='1.6.0'
|
PACKAGE_VERSION='1.6.1'
|
||||||
PACKAGE_STRING='pdfio 1.6.0'
|
PACKAGE_STRING='pdfio 1.6.1'
|
||||||
PACKAGE_BUGREPORT='https://github.com/michaelrsweet/pdfio/issues'
|
PACKAGE_BUGREPORT='https://github.com/michaelrsweet/pdfio/issues'
|
||||||
PACKAGE_URL='https://www.msweet.org/pdfio'
|
PACKAGE_URL='https://www.msweet.org/pdfio'
|
||||||
|
|
||||||
@@ -653,7 +653,7 @@ WARNINGS
|
|||||||
CSFLAGS
|
CSFLAGS
|
||||||
LIBPDFIO_STATIC
|
LIBPDFIO_STATIC
|
||||||
LIBPDFIO
|
LIBPDFIO
|
||||||
PKGCONFIG_LIBPNG
|
PKGCONFIG_REQUIRES_PRIVATE
|
||||||
PKGCONFIG_REQUIRES
|
PKGCONFIG_REQUIRES
|
||||||
PKGCONFIG_LIBS_PRIVATE
|
PKGCONFIG_LIBS_PRIVATE
|
||||||
PKGCONFIG_LIBS
|
PKGCONFIG_LIBS
|
||||||
@@ -1295,7 +1295,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures pdfio 1.6.0 to adapt to many kinds of systems.
|
\`configure' configures pdfio 1.6.1 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@@ -1361,7 +1361,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of pdfio 1.6.0:";;
|
short | recursive ) echo "Configuration of pdfio 1.6.1:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@@ -1460,7 +1460,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
pdfio configure 1.6.0
|
pdfio configure 1.6.1
|
||||||
generated by GNU Autoconf 2.71
|
generated by GNU Autoconf 2.71
|
||||||
|
|
||||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
@@ -1678,7 +1678,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by pdfio $as_me 1.6.0, which was
|
It was created by pdfio $as_me 1.6.1, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
$ $0$ac_configure_args_raw
|
$ $0$ac_configure_args_raw
|
||||||
@@ -2434,9 +2434,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
PDFIO_VERSION="1.6.0"
|
PDFIO_VERSION="1.6.1"
|
||||||
PDFIO_VERSION_MAJOR="`echo 1.6.0 | awk -F. '{print $1}'`"
|
PDFIO_VERSION_MAJOR="`echo 1.6.1 | awk -F. '{print $1}'`"
|
||||||
PDFIO_VERSION_MINOR="`echo 1.6.0 | awk -F. '{printf("%d\n",$2);}'`"
|
PDFIO_VERSION_MINOR="`echo 1.6.1 | awk -F. '{printf("%d\n",$2);}'`"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4138,7 +4138,9 @@ fi
|
|||||||
PKGCONFIG_CFLAGS="-I\${includedir}"
|
PKGCONFIG_CFLAGS="-I\${includedir}"
|
||||||
PKGCONFIG_LIBS="-L\${libdir} -lpdfio"
|
PKGCONFIG_LIBS="-L\${libdir} -lpdfio"
|
||||||
PKGCONFIG_LIBS_PRIVATE="-lm"
|
PKGCONFIG_LIBS_PRIVATE="-lm"
|
||||||
PKGCONFIG_REQUIRES="zlib"
|
PKBCONFIG_REQUIRES=""
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE=""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4154,6 +4156,7 @@ then :
|
|||||||
printf "%s\n" "yes" >&6; }
|
printf "%s\n" "yes" >&6; }
|
||||||
CPPFLAGS="$($PKGCONFIG --cflags zlib) $CPPFLAGS"
|
CPPFLAGS="$($PKGCONFIG --cflags zlib) $CPPFLAGS"
|
||||||
LIBS="$($PKGCONFIG --libs zlib) $LIBS"
|
LIBS="$($PKGCONFIG --libs zlib) $LIBS"
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE="zlib"
|
||||||
|
|
||||||
else $as_nop
|
else $as_nop
|
||||||
|
|
||||||
@@ -4216,7 +4219,6 @@ then :
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PKGCONFIG_REQUIRES=""
|
|
||||||
PKGCONFIG_LIBS_PRIVATE="-lz $PKGCONFIG_LIBS_PRIVATE"
|
PKGCONFIG_LIBS_PRIVATE="-lz $PKGCONFIG_LIBS_PRIVATE"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
@@ -4228,9 +4230,6 @@ then :
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
PKGCONFIG_LIBPNG=""
|
|
||||||
|
|
||||||
|
|
||||||
if test "x$PKGCONFIG" != x -a x$enable_libpng != xno
|
if test "x$PKGCONFIG" != x -a x$enable_libpng != xno
|
||||||
then :
|
then :
|
||||||
|
|
||||||
@@ -4246,8 +4245,16 @@ printf "%s\n" "#define HAVE_LIBPNG 1" >>confdefs.h
|
|||||||
|
|
||||||
CPPFLAGS="$($PKGCONFIG --cflags libpng16) -DHAVE_LIBPNG=1 $CPPFLAGS"
|
CPPFLAGS="$($PKGCONFIG --cflags libpng16) -DHAVE_LIBPNG=1 $CPPFLAGS"
|
||||||
LIBS="$($PKGCONFIG --libs libpng16) -lz $LIBS"
|
LIBS="$($PKGCONFIG --libs libpng16) -lz $LIBS"
|
||||||
PKGCONFIG_LIBS_PRIVATE="$($PKGCONFIG --libs libpng16) $PKGCONFIG_LIBS_PRIVATE"
|
if test "x$PKGCONFIG_REQUIRES_PRIVATE" = x
|
||||||
PKGCONFIG_REQUIRES="libpng >= 1.6,$PKGCONFIG_REQUIRES"
|
then :
|
||||||
|
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE="libpng >= 1.6"
|
||||||
|
|
||||||
|
else $as_nop
|
||||||
|
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE="libpng >= 1.6, $PKGCONFIG_REQUIRES_PRIVATE"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
else $as_nop
|
else $as_nop
|
||||||
|
|
||||||
@@ -4314,6 +4321,8 @@ else $as_nop
|
|||||||
LIBPDFIO_STATIC=""
|
LIBPDFIO_STATIC=""
|
||||||
PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE"
|
PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE"
|
||||||
PKGCONFIG_LIBS_PRIVATE=""
|
PKGCONFIG_LIBS_PRIVATE=""
|
||||||
|
PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES_PRIVATE"
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE=""
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -5106,7 +5115,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by pdfio $as_me 1.6.0, which was
|
This file was extended by pdfio $as_me 1.6.1, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@@ -5162,7 +5171,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config='$ac_cs_config_escaped'
|
ac_cs_config='$ac_cs_config_escaped'
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
pdfio config.status 1.6.0
|
pdfio config.status 1.6.1
|
||||||
configured by $0, generated by GNU Autoconf 2.71,
|
configured by $0, generated by GNU Autoconf 2.71,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
20
configure.ac
20
configure.ac
@@ -21,7 +21,7 @@ AC_PREREQ([2.70])
|
|||||||
|
|
||||||
|
|
||||||
dnl Package name and version...
|
dnl Package name and version...
|
||||||
AC_INIT([pdfio], [1.6.0], [https://github.com/michaelrsweet/pdfio/issues], [pdfio], [https://www.msweet.org/pdfio])
|
AC_INIT([pdfio], [1.6.1], [https://github.com/michaelrsweet/pdfio/issues], [pdfio], [https://www.msweet.org/pdfio])
|
||||||
|
|
||||||
PDFIO_VERSION="AC_PACKAGE_VERSION"
|
PDFIO_VERSION="AC_PACKAGE_VERSION"
|
||||||
PDFIO_VERSION_MAJOR="`echo AC_PACKAGE_VERSION | awk -F. '{print $1}'`"
|
PDFIO_VERSION_MAJOR="`echo AC_PACKAGE_VERSION | awk -F. '{print $1}'`"
|
||||||
@@ -119,11 +119,13 @@ AC_PATH_TOOL([PKGCONFIG], [pkg-config])
|
|||||||
PKGCONFIG_CFLAGS="-I\${includedir}"
|
PKGCONFIG_CFLAGS="-I\${includedir}"
|
||||||
PKGCONFIG_LIBS="-L\${libdir} -lpdfio"
|
PKGCONFIG_LIBS="-L\${libdir} -lpdfio"
|
||||||
PKGCONFIG_LIBS_PRIVATE="-lm"
|
PKGCONFIG_LIBS_PRIVATE="-lm"
|
||||||
PKGCONFIG_REQUIRES="zlib"
|
PKBCONFIG_REQUIRES=""
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE=""
|
||||||
AC_SUBST([PKGCONFIG_CFLAGS])
|
AC_SUBST([PKGCONFIG_CFLAGS])
|
||||||
AC_SUBST([PKGCONFIG_LIBS])
|
AC_SUBST([PKGCONFIG_LIBS])
|
||||||
AC_SUBST([PKGCONFIG_LIBS_PRIVATE])
|
AC_SUBST([PKGCONFIG_LIBS_PRIVATE])
|
||||||
AC_SUBST([PKGCONFIG_REQUIRES])
|
AC_SUBST([PKGCONFIG_REQUIRES])
|
||||||
|
AC_SUBST([PKGCONFIG_REQUIRES_PRIVATE])
|
||||||
|
|
||||||
|
|
||||||
dnl ZLIB
|
dnl ZLIB
|
||||||
@@ -132,6 +134,7 @@ AS_IF([$PKGCONFIG --exists zlib], [
|
|||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
CPPFLAGS="$($PKGCONFIG --cflags zlib) $CPPFLAGS"
|
CPPFLAGS="$($PKGCONFIG --cflags zlib) $CPPFLAGS"
|
||||||
LIBS="$($PKGCONFIG --libs zlib) $LIBS"
|
LIBS="$($PKGCONFIG --libs zlib) $LIBS"
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE="zlib"
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
AC_CHECK_HEADER([zlib.h])
|
AC_CHECK_HEADER([zlib.h])
|
||||||
@@ -141,16 +144,12 @@ AS_IF([$PKGCONFIG --exists zlib], [
|
|||||||
AC_MSG_ERROR([Sorry, this software requires zlib 1.1 or higher.])
|
AC_MSG_ERROR([Sorry, this software requires zlib 1.1 or higher.])
|
||||||
])
|
])
|
||||||
|
|
||||||
PKGCONFIG_REQUIRES=""
|
|
||||||
PKGCONFIG_LIBS_PRIVATE="-lz $PKGCONFIG_LIBS_PRIVATE"
|
PKGCONFIG_LIBS_PRIVATE="-lz $PKGCONFIG_LIBS_PRIVATE"
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl libpng...
|
dnl libpng...
|
||||||
AC_ARG_ENABLE([libpng], AS_HELP_STRING([--enable-libpng], [use libpng for pdfioFileCreateImageObjFromFile, default=auto]))
|
AC_ARG_ENABLE([libpng], AS_HELP_STRING([--enable-libpng], [use libpng for pdfioFileCreateImageObjFromFile, default=auto]))
|
||||||
|
|
||||||
PKGCONFIG_LIBPNG=""
|
|
||||||
AC_SUBST([PKGCONFIG_LIBPNG])
|
|
||||||
|
|
||||||
AS_IF([test "x$PKGCONFIG" != x -a x$enable_libpng != xno], [
|
AS_IF([test "x$PKGCONFIG" != x -a x$enable_libpng != xno], [
|
||||||
AC_MSG_CHECKING([for libpng-1.6.x])
|
AC_MSG_CHECKING([for libpng-1.6.x])
|
||||||
AS_IF([$PKGCONFIG --exists libpng16], [
|
AS_IF([$PKGCONFIG --exists libpng16], [
|
||||||
@@ -158,8 +157,11 @@ AS_IF([test "x$PKGCONFIG" != x -a x$enable_libpng != xno], [
|
|||||||
AC_DEFINE([HAVE_LIBPNG], 1, [Have PNG library?])
|
AC_DEFINE([HAVE_LIBPNG], 1, [Have PNG library?])
|
||||||
CPPFLAGS="$($PKGCONFIG --cflags libpng16) -DHAVE_LIBPNG=1 $CPPFLAGS"
|
CPPFLAGS="$($PKGCONFIG --cflags libpng16) -DHAVE_LIBPNG=1 $CPPFLAGS"
|
||||||
LIBS="$($PKGCONFIG --libs libpng16) -lz $LIBS"
|
LIBS="$($PKGCONFIG --libs libpng16) -lz $LIBS"
|
||||||
PKGCONFIG_LIBS_PRIVATE="$($PKGCONFIG --libs libpng16) $PKGCONFIG_LIBS_PRIVATE"
|
AS_IF([test "x$PKGCONFIG_REQUIRES_PRIVATE" = x], [
|
||||||
PKGCONFIG_REQUIRES="libpng >= 1.6,$PKGCONFIG_REQUIRES"
|
PKGCONFIG_REQUIRES_PRIVATE="libpng >= 1.6"
|
||||||
|
], [
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE="libpng >= 1.6, $PKGCONFIG_REQUIRES_PRIVATE"
|
||||||
|
])
|
||||||
], [
|
], [
|
||||||
AC_MSG_RESULT([no]);
|
AC_MSG_RESULT([no]);
|
||||||
AS_IF([test x$enable_libpng = xyes], [
|
AS_IF([test x$enable_libpng = xyes], [
|
||||||
@@ -192,6 +194,8 @@ AS_IF([test x$enable_shared = xyes], [
|
|||||||
LIBPDFIO_STATIC=""
|
LIBPDFIO_STATIC=""
|
||||||
PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE"
|
PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE"
|
||||||
PKGCONFIG_LIBS_PRIVATE=""
|
PKGCONFIG_LIBS_PRIVATE=""
|
||||||
|
PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES_PRIVATE"
|
||||||
|
PKGCONFIG_REQUIRES_PRIVATE=""
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_SUBST([LIBPDFIO])
|
AC_SUBST([LIBPDFIO])
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
//
|
//
|
||||||
// https://www.msweet.org/mmd
|
// https://www.msweet.org/mmd
|
||||||
//
|
//
|
||||||
// Copyright © 2017-2024 by Michael R Sweet.
|
// Copyright © 2017-2025 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.
|
||||||
@@ -166,7 +166,7 @@ mmdCopyAllText(mmd_t *node) // I - Parent node
|
|||||||
char *all = NULL, // String buffer
|
char *all = NULL, // String buffer
|
||||||
*allptr = NULL, // Pointer into string buffer
|
*allptr = NULL, // Pointer into string buffer
|
||||||
*temp; // Temporary pointer
|
*temp; // Temporary pointer
|
||||||
size_t allsize = 1, // Size of "all" buffer
|
size_t allsize = 0, // Size of "all" buffer
|
||||||
textlen; // Length of "text" string
|
textlen; // Length of "text" string
|
||||||
mmd_t *current, // Current node
|
mmd_t *current, // Current node
|
||||||
*next; // Next node
|
*next; // Next node
|
||||||
@@ -179,6 +179,8 @@ mmdCopyAllText(mmd_t *node) // I - Parent node
|
|||||||
if (current->text)
|
if (current->text)
|
||||||
{
|
{
|
||||||
// Append this node's text to the string...
|
// Append this node's text to the string...
|
||||||
|
long alloff = allptr - all; // Offset within current buffer
|
||||||
|
|
||||||
textlen = strlen(current->text);
|
textlen = strlen(current->text);
|
||||||
allsize += textlen + (size_t)current->whitespace;
|
allsize += textlen + (size_t)current->whitespace;
|
||||||
temp = realloc(all, allsize);
|
temp = realloc(all, allsize);
|
||||||
@@ -189,8 +191,8 @@ mmdCopyAllText(mmd_t *node) // I - Parent node
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
allptr = temp + (allptr - all);
|
|
||||||
all = temp;
|
all = temp;
|
||||||
|
allptr = all + alloff;
|
||||||
|
|
||||||
if (current->whitespace)
|
if (current->whitespace)
|
||||||
*allptr++ = ' ';
|
*allptr++ = ' ';
|
||||||
@@ -1059,6 +1061,8 @@ mmdLoadIO(mmd_t *root, // I - Root node for document or `NULL` for a new d
|
|||||||
break;
|
break;
|
||||||
else if (line[0] == '>' && *ptr == '>')
|
else if (line[0] == '>' && *ptr == '>')
|
||||||
memmove(ptr, ptr + 1, strlen(ptr));
|
memmove(ptr, ptr + 1, strlen(ptr));
|
||||||
|
|
||||||
|
DEBUG2_printf(" line=\"%s\"\n", line);
|
||||||
}
|
}
|
||||||
|
|
||||||
mmd_parse_inline(&doc, block, lineptr);
|
mmd_parse_inline(&doc, block, lineptr);
|
||||||
@@ -1493,7 +1497,7 @@ mmd_parse_inline(_mmd_doc_t *doc, // I - Document
|
|||||||
|
|
||||||
for (text = NULL, type = MMD_TYPE_NORMAL_TEXT; *lineptr; lineptr ++)
|
for (text = NULL, type = MMD_TYPE_NORMAL_TEXT; *lineptr; lineptr ++)
|
||||||
{
|
{
|
||||||
DEBUG2_printf("mmd_parse_inline: lineptr=%p(\"%32.32s...\"), type=%d, text=%p, whitespace=%d\n", lineptr, lineptr, type, text, whitespace);
|
DEBUG2_printf("mmd_parse_inline: lineptr=%p(\"%s\"), type=%d, text=%p, whitespace=%d\n", lineptr, lineptr, type, text, whitespace);
|
||||||
|
|
||||||
if (isspace(*lineptr & 255) && type != MMD_TYPE_CODE_TEXT)
|
if (isspace(*lineptr & 255) && type != MMD_TYPE_CODE_TEXT)
|
||||||
{
|
{
|
||||||
@@ -2090,6 +2094,8 @@ mmd_read_buffer(_mmd_filebuf_t *file) // I - File buffer
|
|||||||
if (file->bufptr && file->bufptr > file->buffer)
|
if (file->bufptr && file->bufptr > file->buffer)
|
||||||
{
|
{
|
||||||
// Discard previous characters in the buffer.
|
// Discard previous characters in the buffer.
|
||||||
|
DEBUG2_printf("mmd_read_buffer: before buffer=\"%s\"\n", file->bufptr);
|
||||||
|
|
||||||
memmove(file->buffer, file->bufptr, file->bufend - file->bufptr);
|
memmove(file->buffer, file->bufptr, file->bufend - file->bufptr);
|
||||||
file->bufend -= (file->bufptr - file->buffer);
|
file->bufend -= (file->bufptr - file->buffer);
|
||||||
}
|
}
|
||||||
@@ -2099,11 +2105,13 @@ mmd_read_buffer(_mmd_filebuf_t *file) // I - File buffer
|
|||||||
file->bufend = file->buffer;
|
file->bufend = file->buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((bytes = (file->cb)(file->cbdata, file->bufend, sizeof(file->buffer) - (size_t)(file->bufend - file->buffer - 1))) > 0)
|
if ((bytes = (file->cb)(file->cbdata, file->bufend, sizeof(file->buffer) - (size_t)(file->bufend - file->buffer) - 1)) > 0)
|
||||||
file->bufend += bytes;
|
file->bufend += bytes;
|
||||||
|
|
||||||
*(file->bufend) = '\0';
|
*(file->bufend) = '\0';
|
||||||
file->bufptr = file->buffer;
|
file->bufptr = file->buffer;
|
||||||
|
|
||||||
|
DEBUG2_printf("mmd_read_buffer: after buffer=\"%s\"\n", file->buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2161,6 +2169,8 @@ mmd_read_line(_mmd_filebuf_t *file, // I - File buffer
|
|||||||
else if (!strchr(file->bufptr, '\n'))
|
else if (!strchr(file->bufptr, '\n'))
|
||||||
mmd_read_buffer(file);
|
mmd_read_buffer(file);
|
||||||
|
|
||||||
|
DEBUG2_printf("mmd_read_line: Returning \"%s\"\n", line);
|
||||||
|
|
||||||
return (line);
|
return (line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1712,12 +1712,23 @@ pdfioFileCreateFontObjFromBase(
|
|||||||
pdfio_obj_t *obj; // Font object
|
pdfio_obj_t *obj; // Font object
|
||||||
|
|
||||||
|
|
||||||
if (pdf && pdf->profile >= _PDFIO_PROFILE_PDFA_1A && pdf->profile <= _PDFIO_PROFILE_PDFA_4)
|
// Range check input...
|
||||||
|
if (!pdf)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
if (!name)
|
||||||
|
{
|
||||||
|
_pdfioFileError(pdf, "No base font name specified.");
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdf->profile >= _PDFIO_PROFILE_PDFA_1A && pdf->profile <= _PDFIO_PROFILE_PDFA_4)
|
||||||
{
|
{
|
||||||
_pdfioFileError(pdf, "Base fonts are not allowed in PDF/A files; use pdfioFileCreateFontObjFromFile to embed a font.");
|
_pdfioFileError(pdf, "Base fonts are not allowed in PDF/A files; use pdfioFileCreateFontObjFromFile to embed a font.");
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create a base font object...
|
||||||
if ((dict = pdfioDictCreate(pdf)) == NULL)
|
if ((dict = pdfioDictCreate(pdf)) == NULL)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
@@ -2691,7 +2702,8 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
png_infop info = NULL; // PNG info pointers
|
png_infop info = NULL; // PNG info pointers
|
||||||
png_bytep *rows = NULL; // PNG row pointers
|
png_bytep *rows = NULL; // PNG row pointers
|
||||||
unsigned char *pixels = NULL; // PNG image data
|
unsigned char *pixels = NULL; // PNG image data
|
||||||
unsigned i, // Looping var
|
int i; // Looping var
|
||||||
|
unsigned y, // Row
|
||||||
color_type, // PNG color mode
|
color_type, // PNG color mode
|
||||||
width, // Width in columns
|
width, // Width in columns
|
||||||
height, // Height in lines
|
height, // Height in lines
|
||||||
@@ -2789,8 +2801,8 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
goto finish_png;
|
goto finish_png;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < height; i ++)
|
for (y = 0; y < height; y ++)
|
||||||
rows[i] = pixels + i * linesize;
|
rows[y] = pixels + y * linesize;
|
||||||
|
|
||||||
// Read the image...
|
// Read the image...
|
||||||
for (i = png_set_interlace_handling(pp); i > 0; i --)
|
for (i = png_set_interlace_handling(pp); i > 0; i --)
|
||||||
@@ -2804,7 +2816,7 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
// Grab any color space/palette information...
|
// Grab any color space/palette information...
|
||||||
if (png_get_PLTE(pp, info, &palette, &num_palette))
|
if (png_get_PLTE(pp, info, &palette, &num_palette))
|
||||||
{
|
{
|
||||||
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromPalette(dict->pdf, num_palette, (unsigned char *)palette));
|
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromPalette(dict->pdf, (size_t)num_palette, (unsigned char *)palette));
|
||||||
}
|
}
|
||||||
else if (png_get_iCCP(pp, info, &icc_name, /*compression_type*/NULL, &icc_data, &icc_datalen))
|
else if (png_get_iCCP(pp, info, &icc_name, /*compression_type*/NULL, &icc_data, &icc_datalen))
|
||||||
{
|
{
|
||||||
@@ -3834,14 +3846,12 @@ png_read_func(png_structp pp, // I - PNG pointer
|
|||||||
png_bytep data, // I - Read buffer
|
png_bytep data, // I - Read buffer
|
||||||
size_t length) // I - Number of bytes to read
|
size_t length) // I - Number of bytes to read
|
||||||
{
|
{
|
||||||
int *fd = (int *)png_get_io_ptr(pp);
|
int *fd = (int *)png_get_io_ptr(pp);// Pointer to file descriptor
|
||||||
// Pointer to file descriptor
|
|
||||||
ssize_t bytes; // Bytes read
|
|
||||||
|
|
||||||
|
|
||||||
PDFIO_DEBUG("png_read_func(pp=%p, data=%p, length=%lu)\n", (void *)pp, (void *)data, (unsigned long)length);
|
PDFIO_DEBUG("png_read_func(pp=%p, data=%p, length=%lu)\n", (void *)pp, (void *)data, (unsigned long)length);
|
||||||
|
|
||||||
if ((bytes = read(*fd, data, length)) < (ssize_t)length)
|
if (read(*fd, data, length) < (ssize_t)length)
|
||||||
png_error(pp, "Unable to read from PNG file.");
|
png_error(pp, "Unable to read from PNG file.");
|
||||||
}
|
}
|
||||||
#endif // HAVE_LIBPNG
|
#endif // HAVE_LIBPNG
|
||||||
|
|||||||
@@ -214,8 +214,9 @@ _pdfioCryptoLock(
|
|||||||
|
|
||||||
pdfioObjClose(pdf->encrypt_obj);
|
pdfioObjClose(pdf->encrypt_obj);
|
||||||
|
|
||||||
pdf->encryption = encryption;
|
pdf->encrypt_dict = dict;
|
||||||
pdf->permissions = permissions;
|
pdf->encryption = encryption;
|
||||||
|
pdf->permissions = permissions;
|
||||||
|
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
@@ -570,7 +571,6 @@ _pdfioCryptoUnlock(
|
|||||||
{
|
{
|
||||||
int tries; // Number of tries
|
int tries; // Number of tries
|
||||||
const char *password = NULL; // Password to try
|
const char *password = NULL; // Password to try
|
||||||
pdfio_dict_t *encrypt_dict; // Encrypt objection dictionary
|
|
||||||
int version, // Version value
|
int version, // Version value
|
||||||
revision, // Revision value
|
revision, // Revision value
|
||||||
length; // Key length value
|
length; // Key length value
|
||||||
@@ -590,20 +590,14 @@ _pdfioCryptoUnlock(
|
|||||||
_pdfio_value_t *value; // Encrypt dictionary value, if any
|
_pdfio_value_t *value; // Encrypt dictionary value, if any
|
||||||
|
|
||||||
|
|
||||||
// See if we support the type of encryption specified by the Encrypt object
|
// See if we support the type of encryption specified by the Encrypt
|
||||||
// dictionary...
|
// dictionary...
|
||||||
if ((encrypt_dict = pdfioObjGetDict(pdf->encrypt_obj)) == NULL)
|
handler = pdfioDictGetName(pdf->encrypt_dict, "Filter");
|
||||||
{
|
version = (int)pdfioDictGetNumber(pdf->encrypt_dict, "V");
|
||||||
_pdfioFileError(pdf, "Unable to get encryption dictionary.");
|
revision = (int)pdfioDictGetNumber(pdf->encrypt_dict, "R");
|
||||||
return (false);
|
length = (int)pdfioDictGetNumber(pdf->encrypt_dict, "Length");
|
||||||
}
|
|
||||||
|
|
||||||
handler = pdfioDictGetName(encrypt_dict, "Filter");
|
if ((value = _pdfioDictGetValue(pdf->encrypt_dict, "EncryptMetadata")) != NULL && value->type == PDFIO_VALTYPE_BOOLEAN)
|
||||||
version = (int)pdfioDictGetNumber(encrypt_dict, "V");
|
|
||||||
revision = (int)pdfioDictGetNumber(encrypt_dict, "R");
|
|
||||||
length = (int)pdfioDictGetNumber(encrypt_dict, "Length");
|
|
||||||
|
|
||||||
if ((value = _pdfioDictGetValue(encrypt_dict, "EncryptMetadata")) != NULL && value->type == PDFIO_VALTYPE_BOOLEAN)
|
|
||||||
pdf->encrypt_metadata = value->value.boolean;
|
pdf->encrypt_metadata = value->value.boolean;
|
||||||
else
|
else
|
||||||
pdf->encrypt_metadata = true;
|
pdf->encrypt_metadata = true;
|
||||||
@@ -622,9 +616,9 @@ _pdfioCryptoUnlock(
|
|||||||
pdfio_dict_t *filter; // Crypt Filter
|
pdfio_dict_t *filter; // Crypt Filter
|
||||||
const char *cfm; // Crypt filter method
|
const char *cfm; // Crypt filter method
|
||||||
|
|
||||||
stream_filter = pdfioDictGetName(encrypt_dict, "StmF");
|
stream_filter = pdfioDictGetName(pdf->encrypt_dict, "StmF");
|
||||||
string_filter = pdfioDictGetName(encrypt_dict, "StrF");
|
string_filter = pdfioDictGetName(pdf->encrypt_dict, "StrF");
|
||||||
cf_dict = pdfioDictGetDict(encrypt_dict, "CF");
|
cf_dict = pdfioDictGetDict(pdf->encrypt_dict, "CF");
|
||||||
|
|
||||||
if (!cf_dict)
|
if (!cf_dict)
|
||||||
{
|
{
|
||||||
@@ -701,7 +695,7 @@ _pdfioCryptoUnlock(
|
|||||||
// Grab the remaining values we need to unlock the PDF...
|
// Grab the remaining values we need to unlock the PDF...
|
||||||
pdf->file_keylen = (size_t)(length / 8);
|
pdf->file_keylen = (size_t)(length / 8);
|
||||||
|
|
||||||
p = pdfioDictGetNumber(encrypt_dict, "P");
|
p = pdfioDictGetNumber(pdf->encrypt_dict, "P");
|
||||||
PDFIO_DEBUG("_pdfioCryptoUnlock: P=%.0f\n", p);
|
PDFIO_DEBUG("_pdfioCryptoUnlock: P=%.0f\n", p);
|
||||||
if (p < 0x7fffffff) // Handle integers > 2^31-1
|
if (p < 0x7fffffff) // Handle integers > 2^31-1
|
||||||
pdf->permissions = (pdfio_permission_t)p;
|
pdf->permissions = (pdfio_permission_t)p;
|
||||||
@@ -709,8 +703,8 @@ _pdfioCryptoUnlock(
|
|||||||
pdf->permissions = (pdfio_permission_t)(p - 4294967296.0);
|
pdf->permissions = (pdfio_permission_t)(p - 4294967296.0);
|
||||||
PDFIO_DEBUG("_pdfioCryptoUnlock: permissions=%d\n", pdf->permissions);
|
PDFIO_DEBUG("_pdfioCryptoUnlock: permissions=%d\n", pdf->permissions);
|
||||||
|
|
||||||
owner_key = pdfioDictGetBinary(encrypt_dict, "O", &owner_keylen);
|
owner_key = pdfioDictGetBinary(pdf->encrypt_dict, "O", &owner_keylen);
|
||||||
user_key = pdfioDictGetBinary(encrypt_dict, "U", &user_keylen);
|
user_key = pdfioDictGetBinary(pdf->encrypt_dict, "U", &user_keylen);
|
||||||
|
|
||||||
if (!owner_key)
|
if (!owner_key)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -464,8 +464,12 @@ pdfioDictGetString(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
_pdfio_value_t *value = _pdfioDictGetValue(dict, key);
|
_pdfio_value_t *value = _pdfioDictGetValue(dict, key);
|
||||||
|
|
||||||
|
|
||||||
|
PDFIO_DEBUG("pdfioDictGetString(dict=%p, key=\"%s\")\n", (void *)dict, key);
|
||||||
|
PDFIO_DEBUG("pdfioDictGetString: value=%p(type=%d)\n", (void *)value, value ? value->type : 0);
|
||||||
|
|
||||||
if (value && value->type == PDFIO_VALTYPE_STRING)
|
if (value && value->type == PDFIO_VALTYPE_STRING)
|
||||||
{
|
{
|
||||||
|
PDFIO_DEBUG("pdfioDictGetString: Returning \"%s\".\n", value->value.string);
|
||||||
return (value->value.string);
|
return (value->value.string);
|
||||||
}
|
}
|
||||||
else if (value && value->type == PDFIO_VALTYPE_BINARY && value->value.binary.datalen < 4096)
|
else if (value && value->type == PDFIO_VALTYPE_BINARY && value->value.binary.datalen < 4096)
|
||||||
@@ -476,6 +480,8 @@ pdfioDictGetString(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
if (!(value->value.binary.datalen & 1) && (!memcmp(value->value.binary.data, "\376\377", 2) || !memcmp(value->value.binary.data, "\377\376", 2)))
|
if (!(value->value.binary.datalen & 1) && (!memcmp(value->value.binary.data, "\376\377", 2) || !memcmp(value->value.binary.data, "\377\376", 2)))
|
||||||
{
|
{
|
||||||
// Copy UTF-16...
|
// Copy UTF-16...
|
||||||
|
PDFIO_DEBUG("pdfioDictGetString: Converting UTF-16 to UTF-8 string.\n");
|
||||||
|
|
||||||
_pdfio_utf16cpy(temp, value->value.binary.data, value->value.binary.datalen, sizeof(temp));
|
_pdfio_utf16cpy(temp, value->value.binary.data, value->value.binary.datalen, sizeof(temp));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -489,10 +495,13 @@ pdfioDictGetString(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
value->type = PDFIO_VALTYPE_STRING;
|
value->type = PDFIO_VALTYPE_STRING;
|
||||||
value->value.string = pdfioStringCreate(dict->pdf, temp);
|
value->value.string = pdfioStringCreate(dict->pdf, temp);
|
||||||
|
|
||||||
|
PDFIO_DEBUG("pdfioDictGetString: Returning \"%s\".\n", value->value.string);
|
||||||
|
|
||||||
return (value->value.string);
|
return (value->value.string);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
PDFIO_DEBUG("pdfioDictGetString: Returning NULL.\n");
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
41
pdfio-file.c
41
pdfio-file.c
@@ -2283,12 +2283,18 @@ load_xref(
|
|||||||
{
|
{
|
||||||
// Save the trailer dictionary and grab the root (catalog) and info
|
// Save the trailer dictionary and grab the root (catalog) and info
|
||||||
// objects...
|
// objects...
|
||||||
|
pdfio_obj_t *encrypt_obj; // Encryption object
|
||||||
|
|
||||||
pdf->trailer_dict = trailer.value.dict;
|
pdf->trailer_dict = trailer.value.dict;
|
||||||
pdf->encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt");
|
|
||||||
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
||||||
|
|
||||||
|
if ((encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt")) != NULL)
|
||||||
|
pdf->encrypt_dict = pdfioObjGetDict(encrypt_obj);
|
||||||
|
else
|
||||||
|
pdf->encrypt_dict = pdfioDictGetDict(pdf->trailer_dict, "Encrypt");
|
||||||
|
|
||||||
// If the trailer contains an Encrypt key, try unlocking the file...
|
// If the trailer contains an Encrypt key, try unlocking the file...
|
||||||
if (pdf->encrypt_obj && !_pdfioCryptoUnlock(pdf, password_cb, password_data))
|
if (pdf->encrypt_dict && !_pdfioCryptoUnlock(pdf, password_cb, password_data))
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2434,12 +2440,18 @@ load_xref(
|
|||||||
{
|
{
|
||||||
// Save the trailer dictionary and grab the root (catalog) and info
|
// Save the trailer dictionary and grab the root (catalog) and info
|
||||||
// objects...
|
// objects...
|
||||||
|
pdfio_obj_t *encrypt_obj; // Encryption object
|
||||||
|
|
||||||
pdf->trailer_dict = trailer.value.dict;
|
pdf->trailer_dict = trailer.value.dict;
|
||||||
pdf->encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt");
|
|
||||||
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
||||||
|
|
||||||
|
if ((encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt")) != NULL)
|
||||||
|
pdf->encrypt_dict = pdfioObjGetDict(encrypt_obj);
|
||||||
|
else
|
||||||
|
pdf->encrypt_dict = pdfioDictGetDict(pdf->trailer_dict, "Encrypt");
|
||||||
|
|
||||||
// If the trailer contains an Encrypt key, try unlocking the file...
|
// If the trailer contains an Encrypt key, try unlocking the file...
|
||||||
if (pdf->encrypt_obj && !_pdfioCryptoUnlock(pdf, password_cb, password_data))
|
if (pdf->encrypt_dict && !_pdfioCryptoUnlock(pdf, password_cb, password_data))
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2529,7 +2541,7 @@ repair_xref(
|
|||||||
pdf->root_obj = NULL;
|
pdf->root_obj = NULL;
|
||||||
pdf->info_obj = NULL;
|
pdf->info_obj = NULL;
|
||||||
pdf->pages_obj = NULL;
|
pdf->pages_obj = NULL;
|
||||||
pdf->encrypt_obj = NULL;
|
pdf->encrypt_dict = NULL;
|
||||||
|
|
||||||
// Read from the beginning of the file, looking for objects...
|
// Read from the beginning of the file, looking for objects...
|
||||||
if ((line_offset = _pdfioFileSeek(pdf, 0, SEEK_SET)) < 0)
|
if ((line_offset = _pdfioFileSeek(pdf, 0, SEEK_SET)) < 0)
|
||||||
@@ -2603,10 +2615,17 @@ repair_xref(
|
|||||||
if (!strcmp(type, "XRef") && !pdf->trailer_dict)
|
if (!strcmp(type, "XRef") && !pdf->trailer_dict)
|
||||||
{
|
{
|
||||||
// Save the trailer dictionary...
|
// Save the trailer dictionary...
|
||||||
|
pdfio_obj_t *encrypt_obj;
|
||||||
|
// Encryption object
|
||||||
|
|
||||||
PDFIO_DEBUG("repair_xref: XRef stream...\n");
|
PDFIO_DEBUG("repair_xref: XRef stream...\n");
|
||||||
pdf->trailer_dict = pdfioObjGetDict(obj);
|
pdf->trailer_dict = pdfioObjGetDict(obj);
|
||||||
pdf->encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt");
|
|
||||||
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
||||||
|
|
||||||
|
if ((encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt")) != NULL)
|
||||||
|
pdf->encrypt_dict = pdfioObjGetDict(encrypt_obj);
|
||||||
|
else
|
||||||
|
pdf->encrypt_dict = pdfioDictGetDict(pdf->trailer_dict, "Encrypt");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (type && !strcmp(line, "endobj"))
|
else if (type && !strcmp(line, "endobj"))
|
||||||
@@ -2660,11 +2679,17 @@ repair_xref(
|
|||||||
{
|
{
|
||||||
// Save the trailer dictionary and grab the root (catalog) and info
|
// Save the trailer dictionary and grab the root (catalog) and info
|
||||||
// objects...
|
// objects...
|
||||||
|
pdfio_obj_t *encrypt_obj; // Encryption object
|
||||||
|
|
||||||
PDFIO_DEBUG("repair_xref: Using this trailer dictionary.\n");
|
PDFIO_DEBUG("repair_xref: Using this trailer dictionary.\n");
|
||||||
|
|
||||||
pdf->trailer_dict = trailer.value.dict;
|
pdf->trailer_dict = trailer.value.dict;
|
||||||
pdf->encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt");
|
|
||||||
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
pdf->id_array = pdfioDictGetArray(pdf->trailer_dict, "ID");
|
||||||
|
|
||||||
|
if ((encrypt_obj = pdfioDictGetObj(pdf->trailer_dict, "Encrypt")) != NULL)
|
||||||
|
pdf->encrypt_dict = pdfioObjGetDict(encrypt_obj);
|
||||||
|
else
|
||||||
|
pdf->encrypt_dict = pdfioDictGetDict(pdf->trailer_dict, "Encrypt");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2678,7 +2703,7 @@ repair_xref(
|
|||||||
pdf->trailer_dict = backup_trailer;
|
pdf->trailer_dict = backup_trailer;
|
||||||
|
|
||||||
// If the trailer contains an Encrypt key, try unlocking the file...
|
// If the trailer contains an Encrypt key, try unlocking the file...
|
||||||
if (pdf->encrypt_obj && !_pdfioCryptoUnlock(pdf, password_cb, password_data))
|
if (pdf->encrypt_dict && !_pdfioCryptoUnlock(pdf, password_cb, password_data))
|
||||||
return (false);
|
return (false);
|
||||||
|
|
||||||
// Load any stream objects...
|
// Load any stream objects...
|
||||||
|
|||||||
@@ -283,7 +283,8 @@ struct _pdfio_file_s // PDF file structure
|
|||||||
pdfio_obj_t *root_obj; // Root object/dictionary
|
pdfio_obj_t *root_obj; // Root object/dictionary
|
||||||
pdfio_obj_t *info_obj; // Information object
|
pdfio_obj_t *info_obj; // Information object
|
||||||
pdfio_obj_t *pages_obj; // Root pages object
|
pdfio_obj_t *pages_obj; // Root pages object
|
||||||
pdfio_obj_t *encrypt_obj; // De/Encryption object/dictionary
|
pdfio_obj_t *encrypt_obj; // Encryption object (not used for reading)
|
||||||
|
pdfio_dict_t *encrypt_dict; // De/Encryption dictionary
|
||||||
pdfio_obj_t *cgats001_obj, // CGATS001 ICC profile object
|
pdfio_obj_t *cgats001_obj, // CGATS001 ICC profile object
|
||||||
*cp1252_obj, // CP1252 font encoding object
|
*cp1252_obj, // CP1252 font encoding object
|
||||||
*unicode_obj; // Unicode font encoding object
|
*unicode_obj; // Unicode font encoding object
|
||||||
|
|||||||
@@ -393,9 +393,18 @@ _pdfioTokenRead(_pdfio_token_t *tb, // I - Token buffer/stack
|
|||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (saw_nul)
|
if ((bufptr - buffer) > 3 && ((bufptr - buffer) & 1) != 0 && (!memcmp(buffer, "(\377\376", 3) || !memcmp(buffer, "(\376\377", 3)))
|
||||||
|
{
|
||||||
|
// UTF-16 string, convert to UTF-8...
|
||||||
|
PDFIO_DEBUG("_pdfioTokenRead: Converting string to UTF-8.\n", stderr);
|
||||||
|
_pdfio_utf16cpy(buffer + 1, (unsigned char *)buffer + 1, bufptr - buffer - 1, bufsize - 1);
|
||||||
|
|
||||||
|
PDFIO_DEBUG("_pdfioTokenRead: Read '%s'.\n", buffer);
|
||||||
|
return (true);
|
||||||
|
}
|
||||||
|
else if (saw_nul)
|
||||||
{
|
{
|
||||||
// Convert to a hex (binary) string...
|
// Contains nul characters, convert to a hex (binary) string...
|
||||||
char *litptr, // Pointer to literal character
|
char *litptr, // Pointer to literal character
|
||||||
*hexptr; // Pointer to hex character
|
*hexptr; // Pointer to hex character
|
||||||
size_t bytes = (size_t)(bufptr - buffer - 1);
|
size_t bytes = (size_t)(bufptr - buffer - 1);
|
||||||
|
|||||||
2
pdfio.h
2
pdfio.h
@@ -23,7 +23,7 @@ extern "C" {
|
|||||||
// Version numbers...
|
// Version numbers...
|
||||||
//
|
//
|
||||||
|
|
||||||
# define PDFIO_VERSION "1.6.0"
|
# define PDFIO_VERSION "1.6.1"
|
||||||
# define PDFIO_VERSION_MAJOR 1
|
# define PDFIO_VERSION_MAJOR 1
|
||||||
# define PDFIO_VERSION_MINOR 6
|
# define PDFIO_VERSION_MINOR 6
|
||||||
|
|
||||||
|
|||||||
@@ -11,3 +11,4 @@ Cflags: @PKGCONFIG_CFLAGS@
|
|||||||
Libs: @PKGCONFIG_LIBS@
|
Libs: @PKGCONFIG_LIBS@
|
||||||
Libs.private: @PKGCONFIG_LIBS_PRIVATE@
|
Libs.private: @PKGCONFIG_LIBS_PRIVATE@
|
||||||
Requires: @PKGCONFIG_REQUIRES@
|
Requires: @PKGCONFIG_REQUIRES@
|
||||||
|
Requires.private: @PKGCONFIG_REQUIRES_PRIVATE@
|
||||||
|
|||||||
@@ -379,7 +379,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.2;
|
CURRENT_PROJECT_VERSION = 1.6.1;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
@@ -390,6 +390,9 @@
|
|||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
|
"HAVE_LIBPNG=1",
|
||||||
|
"HAVE_TM_GMTOFF=1",
|
||||||
|
"HAVE_TIMEGM=1",
|
||||||
);
|
);
|
||||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||||
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
||||||
@@ -409,10 +412,21 @@
|
|||||||
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;
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
/usr/local/include,
|
||||||
|
/opt/local/include,
|
||||||
|
/opt/homebrew/include,
|
||||||
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
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;
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-L/usr/local/lib",
|
||||||
|
"-L/opt/local/lib",
|
||||||
|
"-L/opt/homebrew/lib",
|
||||||
|
"-lpng16",
|
||||||
|
);
|
||||||
RUN_CLANG_STATIC_ANALYZER = YES;
|
RUN_CLANG_STATIC_ANALYZER = YES;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
@@ -465,7 +479,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.2;
|
CURRENT_PROJECT_VERSION = 1.6.1;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
@@ -474,7 +488,12 @@
|
|||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"HAVE_LIBPNG=1",
|
||||||
|
"HAVE_TM_GMTOFF=1",
|
||||||
|
"HAVE_TIMEGM=1",
|
||||||
|
);
|
||||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||||
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
@@ -492,9 +511,20 @@
|
|||||||
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;
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
/usr/local/include,
|
||||||
|
/opt/local/include,
|
||||||
|
/opt/homebrew/include,
|
||||||
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-L/usr/local/lib",
|
||||||
|
"-L/opt/local/lib",
|
||||||
|
"-L/opt/homebrew/lib",
|
||||||
|
"-lpng16",
|
||||||
|
);
|
||||||
RUN_CLANG_STATIC_ANALYZER = YES;
|
RUN_CLANG_STATIC_ANALYZER = YES;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||||
|
|||||||
@@ -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.6.0</version>
|
<version>1.6.1</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-2025 by Michael R Sweet</copyright>
|
<copyright>Copyright © 2019-2025 by Michael R Sweet</copyright>
|
||||||
<tags>pdf file native</tags>
|
<tags>pdf file native</tags>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="pdfio_native.redist" version="1.6.0" />
|
<dependency id="pdfio_native.redist" version="1.6.1" />
|
||||||
<dependency id="libpng_native.redist" version="1.6.30" />
|
<dependency id="libpng_native.redist" version="1.6.30" />
|
||||||
<dependency id="zlib_native.redist" version="1.2.11" />
|
<dependency id="zlib_native.redist" version="1.2.11" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@@ -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.6.0</version>
|
<version>1.6.1</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>
|
||||||
|
|||||||
@@ -3486,7 +3486,7 @@ write_pdfa_file(
|
|||||||
|
|
||||||
// Embed a base font, which are not allowed for PDF/A
|
// Embed a base font, which are not allowed for PDF/A
|
||||||
testBegin("pdfioFileCreateFontObjFromBase(Helvetica)");
|
testBegin("pdfioFileCreateFontObjFromBase(Helvetica)");
|
||||||
if ((font = pdfioFileCreateFontObjFromBase(pdf, "Helvetica")) != NULL)
|
if (pdfioFileCreateFontObjFromBase(pdf, "Helvetica") != NULL)
|
||||||
{
|
{
|
||||||
testEnd(false);
|
testEnd(false);
|
||||||
goto done;
|
goto done;
|
||||||
|
|||||||
Reference in New Issue
Block a user