Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package poppler for openSUSE:Factory checked in at 2023-02-17 16:43:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/poppler (Old) and /work/SRC/openSUSE:Factory/.poppler.new.22824 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "poppler" Fri Feb 17 16:43:46 2023 rev:191 rq:1066073 version:23.02.0 Changes: -------- --- /work/SRC/openSUSE:Factory/poppler/poppler.changes 2023-01-14 20:31:07.809004646 +0100 +++ /work/SRC/openSUSE:Factory/.poppler.new.22824/poppler.changes 2023-02-17 16:43:49.770465432 +0100 @@ -1,0 +2,12 @@ +Wed Feb 15 22:40:35 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 23.02.0: + + core: + * CairoOutputDev: + . Fix rendering of color type 3 fonts + . Add handling matte entry + * Fix segfault on wrong nssdir + * Fix "NSS could not shutdown" + + utils: pdfsig: Point out supports PKCS#11 URIs as nickname + +------------------------------------------------------------------- Old: ---- poppler-23.01.0.tar.xz poppler-23.01.0.tar.xz.sig New: ---- poppler-23.02.0.tar.xz poppler-23.02.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ poppler.spec ++++++ --- /var/tmp/diff_new_pack.SVWv7z/_old 2023-02-17 16:43:50.434469171 +0100 +++ /var/tmp/diff_new_pack.SVWv7z/_new 2023-02-17 16:43:50.438469193 +0100 @@ -32,7 +32,7 @@ %define poppler_api 0.18 %define poppler_apipkg 0_18 Name: poppler%{?psuffix} -Version: 23.01.0 +Version: 23.02.0 Release: 0 Summary: PDF Rendering Library License: GPL-2.0-only OR GPL-3.0-only ++++++ poppler-23.01.0.tar.xz -> poppler-23.02.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/CMakeLists.txt new/poppler-23.02.0/CMakeLists.txt --- old/poppler-23.01.0/CMakeLists.txt 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/CMakeLists.txt 2023-02-01 17:42:42.000000000 +0100 @@ -40,7 +40,7 @@ endif() set(POPPLER_MAJOR_VERSION "23") -set(POPPLER_MINOR_VERSION_STRING "01") +set(POPPLER_MINOR_VERSION_STRING "02") # We want the string version to have 08 but the integer version can't have a leading 0 since otherwise it's considered octal # So strip a leading 0 if found in POPPLER_MINOR_VERSION_STRING and store the result in POPPLER_MINOR_VERSION string(REGEX REPLACE "^0?(.+)$" "\\1" POPPLER_MINOR_VERSION "${POPPLER_MINOR_VERSION_STRING}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/ChangeLog new/poppler-23.02.0/ChangeLog --- old/poppler-23.01.0/ChangeLog 2023-01-01 13:27:23.000000000 +0100 +++ new/poppler-23.02.0/ChangeLog 2023-02-01 19:51:14.000000000 +0100 @@ -1,3 +1,126 @@ +commit 7673e1fd712416a5d65406d7447a1c3d5ada057b +Author: Albert Astals Cid <aa...@kde.org> +Date: Wed Feb 1 17:42:42 2023 +0100 + + poppler 23.02.0 + + CMakeLists.txt | 2 +- + NEWS | 16 +++++++++++++++- + cpp/Doxyfile | 2 +- + qt5/src/Doxyfile | 2 +- + qt6/src/Doxyfile | 2 +- + 5 files changed, 19 insertions(+), 5 deletions(-) + +commit 06a0e17bd9387da0a9737f6ce945482930d98341 +Author: Albert Astals Cid <aa...@kde.org> +Date: Thu Jan 26 19:07:58 2023 +0100 + + Update (C) + + poppler/CairoOutputDev.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 1327646900994c033155100adf7bbaad7654ff50 +Author: Artemy Gordon <artemy.gor...@gmail.com> +Date: Thu Jan 26 18:01:09 2023 +0000 + + Add handling matte entry in cairo backend + + poppler/CairoOutputDev.cc | 47 + ++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 42 insertions(+), 5 deletions(-) + +commit 5f76a61237db0fe26bb2ac41ac41d20670d985a3 +Author: Albert Astals Cid <aa...@kde.org> +Date: Thu Jan 26 00:27:47 2023 +0100 + + Update (C) + + poppler/CairoFontEngine.cc | 2 +- + poppler/CairoOutputDev.cc | 2 +- + poppler/CairoOutputDev.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 53115a05b7b4480ef06165199c8f1cb3982ab13d +Author: Adrian Johnson <ajohn...@redneon.com> +Date: Tue Jan 3 10:13:52 2023 +1030 + + Fix cairo rendering of color type 3 fonts + + The bug fix in 448f03cf needs to be disabled for color fonts. + + poppler/CairoFontEngine.cc | 2 +- + poppler/CairoOutputDev.cc | 6 +++--- + poppler/CairoOutputDev.h | 12 +++++++++--- + 3 files changed, 13 insertions(+), 7 deletions(-) + +commit da39bd930fee9369071a97b93ffe3ea0987acedc +Author: Tobias Deiminger <tobias.deimin...@posteo.de> +Date: Tue Jan 3 00:25:57 2023 +0100 + + Point out pdfsig supports PKCS#11 URIs as nickname + + NSS "just works" with PKCS#11 URIs since 3.39. See + https://bugzilla.mozilla.org/show_bug.cgi?id=1475274 + for details. + + IMO we should expose that as feature. It's a standardized NSS-agnostic + way to identify certificate objects, and allows to disambiguate + certificates in any case. + + utils/pdfsig.1 | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 63bfacc89576345722cf3cefb962861aa7d159b8 +Author: Tobias Deiminger <tobias.deimin...@posteo.de> +Date: Wed Jan 4 21:26:12 2023 +0100 + + Fix "NSS could not shutdown" + + SignatureHandler never freed it's signing certificate. This left + an internal NSS reference that prevented cleanup of the NSS cache, + causing "NSS could not shutdown". + + NSS maintains an internal in-memory cache, where content is reference + counted. PK11_MakeCertFromHandle increases the issuerAndSn count. + CERT_DestroyCertificate decreases it. NSS tries to destruct the + cache in + NSS_Shutdown, which we've scheduled with atexit. There it detects a + remaining reference. + + Fixes #1326. + + poppler/SignatureHandler.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 924ef4264cdb0eca97185d7fc1791bcf32279933 +Author: Albert Astals Cid <aa...@kde.org> +Date: Mon Jan 9 22:52:01 2023 +0100 + + Update (C) + + poppler/SignatureHandler.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 4f8c8297d7190480500cdafe52c8777202229b30 +Author: Tobias Deiminger <tobias.deimin...@posteo.de> +Date: Mon Jan 9 21:00:06 2023 +0100 + + Fix segfault on wrong nssdir + + If SignatureHandler was used with a custom DB directory, but that + directory didn't exist or contained no valid DB, NSS crashed on + subsequent calls. + + We can prevent crashes by calling NSS_NoDB_Init (as it's already + done in + the default-DB case). + + Fixes #1331. + + poppler/SignatureHandler.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + commit 4259ff0c2067d302f97d87221a442eec8e88d45c Author: Albert Astals Cid <aa...@kde.org> Date: Sun Jan 1 13:24:17 2023 +0100 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/NEWS new/poppler-23.02.0/NEWS --- old/poppler-23.01.0/NEWS 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/NEWS 2023-02-01 17:42:42.000000000 +0100 @@ -1,3 +1,17 @@ +Release 23.02.0: + core: + * CairoOutputDev: Fix rendering of color type 3 fonts + * CairoOutputDev: Add handling matte entry + * Fix segfault on wrong nssdir + * Fix "NSS could not shutdown" + + utils: + * pdfsig: Point out supports PKCS#11 URIs as nickname + + + qt6: + * + Release 23.01.0: core: * PDFDoc::sign: Fix crash if font can't be found @@ -14,7 +28,7 @@ * Improve include path handling qt6: - - Use less deprecated functions + * Use less deprecated functions Release 22.12.0: core: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/cpp/Doxyfile new/poppler-23.02.0/cpp/Doxyfile --- old/poppler-23.01.0/cpp/Doxyfile 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/cpp/Doxyfile 2023-02-01 17:42:42.000000000 +0100 @@ -31,7 +31,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 23.01.0 +PROJECT_NUMBER = 23.02.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/glib/reference/html/PopplerDocument.html new/poppler-23.02.0/glib/reference/html/PopplerDocument.html --- old/poppler-23.01.0/glib/reference/html/PopplerDocument.html 2023-01-01 13:26:20.000000000 +0100 +++ new/poppler-23.02.0/glib/reference/html/PopplerDocument.html 2023-02-01 19:50:14.000000000 +0100 @@ -3115,16 +3115,16 @@ 8 9 10</pre></td> - <td class="listing_code"><pre class="programlisting"><span class="n">font_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_font_info_new</span><span class="w"> </span><span class="p">(</span><span class="n">document</span><span class="p">);</span><span class="w"></span> -<span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_font_info_scan</span><span class="w"> </span><span class="p">(</span><span class="n">font_info</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">fonts_iter</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">fonts_iter</span><span class="p">)</span><span class="w"></span> -<span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span><span class="cm">/* No fonts found in these 20 pages */</span><span class="w"></span> -<span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="cm">/* Do something with font iter */</span><span class="w"></span> -<span class="w"> </span><span class="n">g_print</span><span class="w"> </span><span class="p">(</span><span class="s">"Font Name: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">poppler_fonts_iter_get_name</span><span class="w"> </span><span class="p">(</span><span class="n">fonts_iter</span><span class="p">));</span><span class="w"></span> -<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_fonts_iter_next</span><span class="w"> </span><span class="p">(</span><span class="n">fonts_iter</span><span class="p">));</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_fonts_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">fonts_iter</span><span class="p">);</span><span class="w"></span> -<span class="p">}</span><span class="w"></span></pre></td> + <td class="listing_code"><pre class="programlisting"><span class="n">font_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_font_info_new</span><span class="w"> </span><span class="p">(</span><span class="n">document</span><span class="p">);</span> +<span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_font_info_scan</span><span class="w"> </span><span class="p">(</span><span class="n">font_info</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">fonts_iter</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">fonts_iter</span><span class="p">)</span> +<span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span><span class="cm">/* No fonts found in these 20 pages */</span> +<span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="cm">/* Do something with font iter */</span> +<span class="w"> </span><span class="n">g_print</span><span class="w"> </span><span class="p">(</span><span class="s">"Font Name: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">poppler_fonts_iter_get_name</span><span class="w"> </span><span class="p">(</span><span class="n">fonts_iter</span><span class="p">));</span> +<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_fonts_iter_next</span><span class="w"> </span><span class="p">(</span><span class="n">fonts_iter</span><span class="p">));</span> +<span class="w"> </span><span class="n">poppler_fonts_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">fonts_iter</span><span class="p">);</span> +<span class="p">}</span></pre></td> </tr> </tbody> </table> @@ -3634,25 +3634,25 @@ 17 18 19</pre></td> - <td class="listing_code"><pre class="programlisting"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"></span> -<span class="nf">walk_index</span><span class="w"> </span><span class="p">(</span><span class="n">PopplerIndexIter</span><span class="w"> </span><span class="o">*</span><span class="n">iter</span><span class="p">)</span><span class="w"></span> -<span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="k">do</span><span class="w"></span> -<span class="w"> </span><span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="cm">/* Get the action and do something with it */</span><span class="w"></span> -<span class="w"> </span><span class="n">PopplerIndexIter</span><span class="w"> </span><span class="o">*</span><span class="n">child</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_index_iter_get_child</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">)</span><span class="w"></span> -<span class="w"> </span><span class="n">walk_index</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_index_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="p">}</span><span class="w"></span> -<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_index_iter_next</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">));</span><span class="w"></span> -<span class="p">}</span><span class="w"></span> -<span class="p">...</span><span class="w"></span> -<span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="n">iter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_index_iter_new</span><span class="w"> </span><span class="p">(</span><span class="n">document</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="n">walk_index</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_index_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span><span class="w"></span> -<span class="p">}</span><span class="w"></span></pre></td> + <td class="listing_code"><pre class="programlisting"><span class="k">static</span><span class="w"> </span><span class="kt">void</span> +<span class="nf">walk_index</span><span class="w"> </span><span class="p">(</span><span class="n">PopplerIndexIter</span><span class="w"> </span><span class="o">*</span><span class="n">iter</span><span class="p">)</span> +<span class="p">{</span> +<span class="w"> </span><span class="k">do</span> +<span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="cm">/* Get the action and do something with it */</span> +<span class="w"> </span><span class="n">PopplerIndexIter</span><span class="w"> </span><span class="o">*</span><span class="n">child</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_index_iter_get_child</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">)</span> +<span class="w"> </span><span class="n">walk_index</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span> +<span class="w"> </span><span class="n">poppler_index_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span> +<span class="w"> </span><span class="p">}</span> +<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_index_iter_next</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">));</span> +<span class="p">}</span> +<span class="p">...</span> +<span class="p">{</span> +<span class="w"> </span><span class="n">iter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_index_iter_new</span><span class="w"> </span><span class="p">(</span><span class="n">document</span><span class="p">);</span> +<span class="w"> </span><span class="n">walk_index</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> +<span class="w"> </span><span class="n">poppler_index_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> +<span class="p">}</span></pre></td> </tr> </tbody> </table> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/glib/reference/html/PopplerStructureElement.html new/poppler-23.02.0/glib/reference/html/PopplerStructureElement.html --- old/poppler-23.01.0/glib/reference/html/PopplerStructureElement.html 2023-01-01 13:26:20.000000000 +0100 +++ new/poppler-23.02.0/glib/reference/html/PopplerStructureElement.html 2023-02-01 19:50:14.000000000 +0100 @@ -2186,13 +2186,13 @@ 5 6 7</pre></td> - <td class="listing_code"><pre class="programlisting"><span class="n">guint</span><span class="w"> </span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">n_spans</span><span class="p">;</span><span class="w"></span> -<span class="n">PopplerTextSpan</span><span class="w"> </span><span class="o">**</span><span class="n">text_spans</span><span class="w"> </span><span class="o">=</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_structure_element_get_text_spans</span><span class="w"> </span><span class="p">(</span><span class="n">element</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">n_spans</span><span class="p">);</span><span class="w"></span> -<span class="cm">/* Use the text spans */</span><span class="w"></span> -<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n_spans</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_text_span_free</span><span class="w"> </span><span class="p">(</span><span class="n">text_spans</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span><span class="w"></span> -<span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">text_spans</span><span class="p">);</span><span class="w"></span></pre></td> + <td class="listing_code"><pre class="programlisting"><span class="n">guint</span><span class="w"> </span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">n_spans</span><span class="p">;</span> +<span class="n">PopplerTextSpan</span><span class="w"> </span><span class="o">**</span><span class="n">text_spans</span><span class="w"> </span><span class="o">=</span> +<span class="w"> </span><span class="n">poppler_structure_element_get_text_spans</span><span class="w"> </span><span class="p">(</span><span class="n">element</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">n_spans</span><span class="p">);</span> +<span class="cm">/* Use the text spans */</span> +<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">n_spans</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span> +<span class="w"> </span><span class="n">poppler_text_span_free</span><span class="w"> </span><span class="p">(</span><span class="n">text_spans</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span> +<span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">text_spans</span><span class="p">);</span></pre></td> </tr> </tbody> </table> @@ -2572,23 +2572,23 @@ 15 16 17</pre></td> - <td class="listing_code"><pre class="programlisting"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"></span> -<span class="nf">walk_structure</span><span class="w"> </span><span class="p">(</span><span class="n">PopplerStructureElementIter</span><span class="w"> </span><span class="o">*</span><span class="n">iter</span><span class="p">)</span><span class="w"></span> -<span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="cm">/* Get the element and do something with it */</span><span class="w"></span> -<span class="w"> </span><span class="n">PopplerStructureElementIter</span><span class="w"> </span><span class="o">*</span><span class="n">child</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_structure_element_iter_get_child</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">)</span><span class="w"></span> -<span class="w"> </span><span class="n">walk_structure</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_structure_element_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_structure_element_iter_next</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">));</span><span class="w"></span> -<span class="p">}</span><span class="w"></span> -<span class="p">...</span><span class="w"></span> -<span class="p">{</span><span class="w"></span> -<span class="w"> </span><span class="n">iter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_structure_element_iter_new</span><span class="w"> </span><span class="p">(</span><span class="n">document</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="n">walk_structure</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span><span class="w"></span> -<span class="w"> </span><span class="n">poppler_structure_element_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span><span class="w"></span> -<span class="p">}</span><span class="w"></span></pre></td> + <td class="listing_code"><pre class="programlisting"><span class="k">static</span><span class="w"> </span><span class="kt">void</span> +<span class="nf">walk_structure</span><span class="w"> </span><span class="p">(</span><span class="n">PopplerStructureElementIter</span><span class="w"> </span><span class="o">*</span><span class="n">iter</span><span class="p">)</span> +<span class="p">{</span> +<span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="cm">/* Get the element and do something with it */</span> +<span class="w"> </span><span class="n">PopplerStructureElementIter</span><span class="w"> </span><span class="o">*</span><span class="n">child</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_structure_element_iter_get_child</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">)</span> +<span class="w"> </span><span class="n">walk_structure</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span> +<span class="w"> </span><span class="n">poppler_structure_element_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">child</span><span class="p">);</span> +<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">poppler_structure_element_iter_next</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">));</span> +<span class="p">}</span> +<span class="p">...</span> +<span class="p">{</span> +<span class="w"> </span><span class="n">iter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poppler_structure_element_iter_new</span><span class="w"> </span><span class="p">(</span><span class="n">document</span><span class="p">);</span> +<span class="w"> </span><span class="n">walk_structure</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> +<span class="w"> </span><span class="n">poppler_structure_element_iter_free</span><span class="w"> </span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> +<span class="p">}</span></pre></td> </tr> </tbody> </table> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/glib/reference/html/index.html new/poppler-23.02.0/glib/reference/html/index.html --- old/poppler-23.01.0/glib/reference/html/index.html 2023-01-01 13:26:20.000000000 +0100 +++ new/poppler-23.02.0/glib/reference/html/index.html 2023-02-01 19:50:14.000000000 +0100 @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Poppler Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - for Poppler 23.01.0 + for Poppler 23.02.0 </p></div> </div> <hr> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/glib/reference/html/poppler-Poppler-Features.html new/poppler-23.02.0/glib/reference/html/poppler-Poppler-Features.html --- old/poppler-23.01.0/glib/reference/html/poppler-Poppler-Features.html 2023-01-01 13:26:20.000000000 +0100 +++ new/poppler-23.02.0/glib/reference/html/poppler-Poppler-Features.html 2023-02-01 19:50:14.000000000 +0100 @@ -205,7 +205,7 @@ <hr> <div class="refsect2"> <a name="POPPLER-MINOR-VERSION:CAPS"></a><h3>POPPLER_MINOR_VERSION</h3> -<pre class="programlisting">#define POPPLER_MINOR_VERSION (1) +<pre class="programlisting">#define POPPLER_MINOR_VERSION (2) </pre> <p>The major version number of the poppler header files (e.g. in poppler version 0.1.2 this is 1.)</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/poppler/CairoFontEngine.cc new/poppler-23.02.0/poppler/CairoFontEngine.cc --- old/poppler-23.01.0/poppler/CairoFontEngine.cc 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/poppler/CairoFontEngine.cc 2023-02-01 17:42:42.000000000 +0100 @@ -21,7 +21,7 @@ // Copyright (C) 2006, 2007, 2010, 2011 Carlos Garcia Campos <carlo...@gnome.org> // Copyright (C) 2007 Koji Otani <s...@bbr.jp> // Copyright (C) 2008, 2009 Chris Wilson <ch...@chris-wilson.co.uk> -// Copyright (C) 2008, 2012, 2014, 2016, 2017, 2022 Adrian Johnson <ajohn...@redneon.com> +// Copyright (C) 2008, 2012, 2014, 2016, 2017, 2022, 2023 Adrian Johnson <ajohn...@redneon.com> // Copyright (C) 2009 Darren Kenny <darren.ke...@sun.com> // Copyright (C) 2010 Suzuki Toshiya <mpsuz...@hiroshima-u.ac.jp> // Copyright (C) 2010 Jan Kümmel <jan+freedesk...@snorc.org> @@ -482,7 +482,7 @@ auto gfx = std::make_unique<Gfx>(info->doc, output_dev, resDict, &box, nullptr); output_dev->startDoc(info->doc, info->fontEngine); output_dev->startType3Render(gfx->getState(), gfx->getXRef()); - output_dev->setInType3Char(true); + output_dev->setType3RenderType(color ? CairoOutputDev::Type3RenderColor : CairoOutputDev::Type3RenderMask); charProc = charProcs->getVal(glyph); if (!charProc.isStream()) { return CAIRO_STATUS_USER_FONT_ERROR; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/poppler/CairoOutputDev.cc new/poppler-23.02.0/poppler/CairoOutputDev.cc --- old/poppler-23.01.0/poppler/CairoOutputDev.cc 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/poppler/CairoOutputDev.cc 2023-02-01 17:42:42.000000000 +0100 @@ -20,7 +20,7 @@ // Copyright (C) 2005 Nickolay V. Shmyrev <nshmy...@yandex.ru> // Copyright (C) 2006-2011, 2013, 2014, 2017, 2018 Carlos Garcia Campos <carlo...@gnome.org> // Copyright (C) 2008 Carl Worth <cwo...@cworth.org> -// Copyright (C) 2008-2018, 2021, 2022 Adrian Johnson <ajohn...@redneon.com> +// Copyright (C) 2008-2018, 2021-2023 Adrian Johnson <ajohn...@redneon.com> // Copyright (C) 2008 Michael Vrable <mvra...@cs.ucsd.edu> // Copyright (C) 2008, 2009 Chris Wilson <ch...@chris-wilson.co.uk> // Copyright (C) 2008, 2012 Hib Eris <h...@hiberis.nl> @@ -37,6 +37,7 @@ // Copyright (C) 2021 Uli Schlachter <psyc...@znc.in> // Copyright (C) 2021 Christian Persch <c...@src.gnome.org> // Copyright (C) 2022 Zachary Travis <ztra...@everlaw.com> +// Copyright (C) 2023 Artemy Gordon <artemy.gor...@gmail.com> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -155,7 +156,7 @@ printing = true; use_show_text_glyphs = false; inUncoloredPattern = false; - inType3Char = false; + t3_render_state = Type3RenderNone; t3_glyph_has_bbox = false; t3_glyph_has_color = false; text_matrix_valid = true; @@ -888,7 +889,7 @@ void CairoOutputDev::stroke(GfxState *state) { - if (inType3Char) { + if (t3_render_state == Type3RenderMask) { GfxGray gray; state->getFillGray(&gray); if (colToDbl(gray) > 0.5) { @@ -919,7 +920,7 @@ void CairoOutputDev::fill(GfxState *state) { - if (inType3Char) { + if (t3_render_state == Type3RenderMask) { GfxGray gray; state->getFillGray(&gray); if (colToDbl(gray) > 0.5) { @@ -2763,12 +2764,35 @@ delete imgStr; } +static inline void getMatteColorRgb(GfxImageColorMap *colorMap, const GfxColor *matteColorIn, GfxRGB *matteColorRgb) +{ + colorMap->getColorSpace()->getRGB(matteColorIn, matteColorRgb); + matteColorRgb->r = colToByte(matteColorRgb->r); + matteColorRgb->g = colToByte(matteColorRgb->g); + matteColorRgb->b = colToByte(matteColorRgb->b); +} + +static inline void applyMask(unsigned int *imagePointer, int length, GfxRGB matteColor, unsigned char *alphaPointer) +{ + unsigned char *p, r, g, b; + int i; + + for (i = 0, p = (unsigned char *)imagePointer; i < length; i++, p += 4, alphaPointer++) { + if (*alphaPointer) { + b = std::clamp(matteColor.b + (int)(p[0] - matteColor.b) * 255 / *alphaPointer, 0, 255); + g = std::clamp(matteColor.g + (int)(p[1] - matteColor.g) * 255 / *alphaPointer, 0, 255); + r = std::clamp(matteColor.r + (int)(p[2] - matteColor.r) * 255 / *alphaPointer, 0, 255); + imagePointer[i] = (r << 16) | (g << 8) | (b << 0); + } + } +} + // XXX: is this affect by AIS(alpha is shape)? void CairoOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, bool interpolate, Stream *maskStr, int maskWidth, int maskHeight, GfxImageColorMap *maskColorMap, bool maskInterpolate) { ImageStream *maskImgStr, *imgStr; - ptrdiff_t row_stride; + ptrdiff_t row_stride, mask_row_stride; unsigned char *maskBuffer, *buffer; unsigned char *maskDest; unsigned int *dest; @@ -2779,6 +2803,12 @@ int y; cairo_filter_t filter; cairo_filter_t maskFilter; + GfxRGB matteColorRgb; + + const GfxColor *matteColor = maskColorMap->getMatteColor(); + if (matteColor != nullptr) { + getMatteColorRgb(colorMap, matteColor, &matteColorRgb); + } maskImgStr = new ImageStream(maskStr, maskWidth, maskColorMap->getNumPixelComps(), maskColorMap->getBits()); maskImgStr->reset(); @@ -2791,9 +2821,9 @@ } maskBuffer = cairo_image_surface_get_data(maskImage); - row_stride = cairo_image_surface_get_stride(maskImage); + mask_row_stride = cairo_image_surface_get_stride(maskImage); for (y = 0; y < maskHeight; y++) { - maskDest = (unsigned char *)(maskBuffer + y * row_stride); + maskDest = (unsigned char *)(maskBuffer + y * mask_row_stride); pix = maskImgStr->getLine(); if (likely(pix != nullptr)) { maskColorMap->getGrayLine(pix, maskDest, maskWidth); @@ -2835,14 +2865,22 @@ for (y = 0; y < height; y++) { dest = reinterpret_cast<unsigned int *>(buffer + y * row_stride); pix = imgStr->getLine(); - colorMap->getRGBLine(pix, dest, width); + if (likely(pix != nullptr)) { + colorMap->getRGBLine(pix, dest, width); + if (matteColor != nullptr) { + maskDest = (unsigned char *)(maskBuffer + y * mask_row_stride); + applyMask(dest, width, matteColorRgb, maskDest); + } + } } filter = getFilterForSurface(image, interpolate); cairo_surface_mark_dirty(image); - setMimeData(state, str, ref, colorMap, image, height); + if (matteColor == nullptr) { + setMimeData(state, str, ref, colorMap, image, height); + } pattern = cairo_pattern_create_for_surface(image); cairo_surface_destroy(image); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/poppler/CairoOutputDev.h new/poppler-23.02.0/poppler/CairoOutputDev.h --- old/poppler-23.01.0/poppler/CairoOutputDev.h 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/poppler/CairoOutputDev.h 2023-02-01 17:42:42.000000000 +0100 @@ -18,7 +18,7 @@ // Copyright (C) 2005, 2006 Kristian Høgsberg <k...@redhat.com> // Copyright (C) 2005 Nickolay V. Shmyrev <nshmy...@yandex.ru> // Copyright (C) 2006-2011, 2013 Carlos Garcia Campos <carlo...@gnome.org> -// Copyright (C) 2008, 2009, 2011-2017, 2022 Adrian Johnson <ajohn...@redneon.com> +// Copyright (C) 2008, 2009, 2011-2017, 2022, 2023 Adrian Johnson <ajohn...@redneon.com> // Copyright (C) 2008 Michael Vrable <mvra...@cs.ucsd.edu> // Copyright (C) 2010-2013 Thomas Freitag <thomas.frei...@alfa.de> // Copyright (C) 2015 Suzuki Toshiya <mpsuz...@hiroshima-u.ac.jp> @@ -263,9 +263,15 @@ } void copyAntialias(cairo_t *cr, cairo_t *source_cr); - void setInType3Char(bool inType3CharA) + enum Type3RenderType { - inType3Char = inType3CharA; + Type3RenderNone, + Type3RenderMask, + Type3RenderColor + }; + void setType3RenderType(Type3RenderType state) + { + t3_render_state = state; } void getType3GlyphWidth(double *wx, double *wy) { @@ -348,7 +354,7 @@ int utf8Max; cairo_path_t *textClipPath; bool inUncoloredPattern; // inside a uncolored pattern (PaintType = 2) - bool inType3Char; // inside a Type 3 CharProc + Type3RenderType t3_render_state; double t3_glyph_wx, t3_glyph_wy; bool t3_glyph_has_bbox; bool t3_glyph_has_color; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/poppler/SignatureHandler.cc new/poppler-23.02.0/poppler/SignatureHandler.cc --- old/poppler-23.01.0/poppler/SignatureHandler.cc 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/poppler/SignatureHandler.cc 2023-02-01 17:42:42.000000000 +0100 @@ -17,6 +17,7 @@ // Copyright 2021 Theofilos Intzoglou <int....@gmail.com> // Copyright 2021 Marek Kasik <mka...@redhat.com> // Copyright 2022 Erich E. Hoover <erich.e.hoo...@gmail.com> +// Copyright 2023 Tobias Deiminger <tobias.deimin...@posteo.de> // //======================================================================== @@ -769,15 +770,15 @@ homeNssDb.append("/.pki/nssdb"); initSuccess = (NSS_Init(homeNssDb.c_str()) == SECSuccess); sNssDir = homeNssDb.toStr(); - if (!initSuccess) { - NSS_NoDB_Init(nullptr); - } } } if (initSuccess) { // Make sure NSS root certificates module is loaded SECMOD_AddNewModule("Root Certs", "libnssckbi.so", 0, 0); + } else { + fprintf(stderr, "NSS_Init failed: %s\n", PR_ErrorToString(PORT_GetError(), PR_LANGUAGE_I_DEFAULT)); + NSS_NoDB_Init(nullptr); } } @@ -857,6 +858,10 @@ HASH_Destroy(hash_context); } + if (signing_cert) { + CERT_DestroyCertificate(signing_cert); + } + free(temp_certs); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/qt5/src/Doxyfile new/poppler-23.02.0/qt5/src/Doxyfile --- old/poppler-23.01.0/qt5/src/Doxyfile 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/qt5/src/Doxyfile 2023-02-01 17:42:42.000000000 +0100 @@ -31,7 +31,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 23.01.0 +PROJECT_NUMBER = 23.02.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/qt6/src/Doxyfile new/poppler-23.02.0/qt6/src/Doxyfile --- old/poppler-23.01.0/qt6/src/Doxyfile 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/qt6/src/Doxyfile 2023-02-01 17:42:42.000000000 +0100 @@ -31,7 +31,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 23.01.0 +PROJECT_NUMBER = 23.02.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/poppler-23.01.0/utils/pdfsig.1 new/poppler-23.02.0/utils/pdfsig.1 --- old/poppler-23.01.0/utils/pdfsig.1 2023-01-01 13:24:17.000000000 +0100 +++ new/poppler-23.02.0/utils/pdfsig.1 2023-02-01 17:42:42.000000000 +0100 @@ -62,7 +62,7 @@ Sign the document in the specified signature field present in the document (must be unsigned). Field can be specified by field name (string) or the n-th signature field in the document (integer). .TP .B \-nick " nickname" -Use the certificate with the given nickname for signing. +Use the certificate with the given nickname for signing. If nickname starts with pkcs11:, it's treated as PKCS#11 URI. .TP .B \-kpw " password" Use the given password for the signing key @@ -97,6 +97,9 @@ pdfsig input.pdf output.pdf -add-signature -nss-pwd password -nick my-cert -reason 'for fun!' Creates a new pdf named output.pdf with the contents of input.pdf signed by the 'my-cert' certificate. .TP +pdfsig input.pdf output.pdf -add-signature -nss-pwd password -nick 'pkcs11:token=smartcard0;object=Second%20certificate;type=cert' +Same, but uses a PKCS#11 URI as defined in IETF RFC 7512 to select the certificate to be used for signing. +.TP pdfsig input.pdf output.pdf -sign 0 -nss-pwd password -nick my-cert -reason 'for fun!' Creates a new pdf named output.pdf with the contents of input.pdf signed by the 'my-cert' certificate. input.pdf must have an already existing un-signed signature field. .SH AUTHOR