From 86ac8706f1ec6303db8e2610fac1d3dd075a51aa Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 13 May 2013 10:59:47 +0200 Subject: php-tcpdf: update to 6.0.013, use available system TTF fonts --- php-tcpdf.spec | 68 +++++++++++++++++++++++++++++++++++++---- php-tcpdf_sysfonts.patch | 54 +++++++++++++++++++++++++++++++++ tcpdf_addfont.php | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 6 deletions(-) create mode 100644 php-tcpdf_sysfonts.patch create mode 100644 tcpdf_addfont.php diff --git a/php-tcpdf.spec b/php-tcpdf.spec index b1f9059..a26473e 100644 --- a/php-tcpdf.spec +++ b/php-tcpdf.spec @@ -1,21 +1,40 @@ -%global dl_version 6_0_012 +%global dl_version 6_0_013 %global real_name tcpdf Name: php-tcpdf Summary: PHP class for generating PDF documents -Version: 6.0.012 -Release: 3%{?dist} +Version: 6.0.013 +Release: 1%{?dist} -Source0: http://downloads.sourceforge.net/%{real_name}/%{real_name}_%{dl_version}.zip URL: http://www.tcpdf.org License: LGPLv3+ Group: Development/Libraries -Patch0: php-tcpdf_badpath.patch -Patch1: php-tcpdf_config.patch +Source0: http://downloads.sourceforge.net/%{real_name}/%{real_name}_%{dl_version}.zip +Source1: %{real_name}_addfont.php + +Patch0: %{name}_badpath.patch +Patch1: %{name}_config.patch +# https://sourceforge.net/p/tcpdf/patches/63/ - allow to use system fonts +Patch2: %{name}_sysfonts.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch +BuildRequires: php-cli +BuildRequires: dejavu-lgc-sans-fonts +BuildRequires: dejavu-lgc-sans-mono-fonts +BuildRequires: dejavu-lgc-serif-fonts +BuildRequires: dejavu-sans-fonts +BuildRequires: dejavu-sans-mono-fonts +BuildRequires: dejavu-serif-fonts +%if 0%{?fedora} >= 11 || 0%{?rhel} >= 6 +BuildRequires: gnu-free-mono-fonts +BuildRequires: gnu-free-sans-fonts +BuildRequires: gnu-free-serif-fonts +%else +BuildRequires: freefont +%endif + Requires: php(language) >= 5.2 Requires: php-openssl @@ -33,6 +52,20 @@ Requires: php-pcre Requires: php-posix Requires: php-tidy Requires: php-xml +# System fonts +Requires: dejavu-lgc-sans-fonts +Requires: dejavu-lgc-sans-mono-fonts +Requires: dejavu-lgc-serif-fonts +Requires: dejavu-sans-fonts +Requires: dejavu-sans-mono-fonts +Requires: dejavu-serif-fonts +%if 0%{?fedora} >= 11 || 0%{?rhel} >= 6 +Requires: gnu-free-mono-fonts +Requires: gnu-free-sans-fonts +Requires: gnu-free-serif-fonts +%else +Requires: freefont +%endif %description @@ -82,6 +115,7 @@ solution. You can optionally install php-pecl-imagick; TCPDF will use it. %setup -qn %{real_name} %patch0 -p1 -b .badpath %patch1 -p1 -b .config +%patch2 -p1 -b .sysfonts : globally fix permissions, always broken... find ./ -type d -exec chmod 755 {} \; @@ -163,6 +197,23 @@ cp -a config/*.php $RPM_BUILD_ROOT%{_sysconfdir}/%{name} install -d $RPM_BUILD_ROOT%{_localstatedir}/cache/%{name} install -m 0644 README.cache $RPM_BUILD_ROOT%{_localstatedir}/cache/%{name}/README +# Tools +install -d $RPM_BUILD_ROOT%{_bindir} +install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/%{real_name}_addfont.php +sed -e '/include/s|tcpdf.php|tcpdf/tcpdf.php|' \ + -i $RPM_BUILD_ROOT%{_bindir}/%{real_name}_addfont.php + +# Fonts +php %{SOURCE1} \ + /usr/share/fonts/dejavu/*ttf \ +%if 0%{?fedora} >= 11 || 0%{?rhel} >= 6 + /usr/share/fonts/gnu-free/*ttf \ +%else + /usr/share/fonts/freefont/*ttf \ +%endif + --link \ + --out $RPM_BUILD_ROOT%{_datadir}/php/%{real_name}/fonts + %post # We don't want to require "httpd" in case PHP is used with some other web @@ -191,6 +242,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %doc LICENSE.TXT README.TXT CHANGELOG.TXT doc/* examples +%{_bindir}/%{real_name}_addfont.php %{_datadir}/php/%{real_name} %dir %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/* @@ -198,6 +250,10 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon May 13 2013 Remi Collet - 6.0.013-1 +- update to 6.0.013 +- use available system TTF fonts + * Sun May 10 2013 Johan Cwiklinski - 6.0.012-3 - Fix README.cache file permissions diff --git a/php-tcpdf_sysfonts.patch b/php-tcpdf_sysfonts.patch new file mode 100644 index 0000000..1a847bc --- /dev/null +++ b/php-tcpdf_sysfonts.patch @@ -0,0 +1,54 @@ +--- tcpdf/include/tcpdf_fonts.php.prev 2013-05-13 09:43:35.000000000 +0200 ++++ tcpdf/include/tcpdf_fonts.php 2013-05-13 09:48:19.000000000 +0200 +@@ -57,12 +57,13 @@ + * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1). + * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4. + * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file. ++ * @param $link (boolean) If true link to system font instead of copying the font data (not transportable). + * @return (string) TCPDF font name. + * @author Nicola Asuni + * @since 5.9.123 (2010-09-30) + * @public static + */ +- public static function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false) { ++ public static function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false, $link=false) { + if (!file_exists($fontfile)) { + // Could not find file + return false; +@@ -92,7 +93,7 @@ + // this font already exist (delete it from fonts folder to rebuild it) + return $font_name; + } +- $fmetric['file'] = $font_name.'.z'; ++ $fmetric['file'] = $font_name; + $fmetric['ctg'] = $font_name.'.ctg.z'; + // get font data + $font = file_get_contents($fontfile); +@@ -178,6 +179,7 @@ + $encrypted = substr($font, (12 + $fmetric['size1']), $fmetric['size2']); + $data .= $encrypted; + // store compressed font ++ $fmetric['file'] .= '.z'; + $fp = fopen($outpath.$fmetric['file'], 'wb'); + fwrite($fp, gzcompress($data)); + fclose($fp); +@@ -347,10 +349,15 @@ + } else { + // ---------- TRUE TYPE ---------- + if ($fmetric['type'] != 'cidfont0') { +- // store compressed font +- $fp = fopen($outpath.$fmetric['file'], 'wb'); +- fwrite($fp, gzcompress($font)); +- fclose($fp); ++ if ($link) { ++ symlink($fontfile, $outpath.$fmetric['file']); ++ } else { ++ $fmetric['file'] .= '.z'; ++ // store compressed font ++ $fp = fopen($outpath.$fmetric['file'], 'wb'); ++ fwrite($fp, gzcompress($font)); ++ fclose($fp); ++ } + } + $offset = 0; // offset position of the font data + if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { diff --git a/tcpdf_addfont.php b/tcpdf_addfont.php new file mode 100644 index 0000000..5ea76a5 --- /dev/null +++ b/tcpdf_addfont.php @@ -0,0 +1,78 @@ +#!/usr/bin/php +