summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--samples/pdfium_test.cc41
-rw-r--r--testing/resources/pixel/bug_492.pdf520
-rw-r--r--testing/resources/pixel/bug_492.pdf.0.pngbin0 -> 182787 bytes
3 files changed, 555 insertions, 6 deletions
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index da2d1f6977..421df39bf3 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -7,6 +7,7 @@
#include <stdlib.h>
#include <string.h>
+#include <map>
#include <sstream>
#include <string>
#include <utility>
@@ -53,6 +54,14 @@ enum OutputFormat {
#endif
};
+// Hold a map of the currently loaded pages in order to avoid them
+// to get loaded twice.
+std::map<int, FPDF_PAGE> g_loadedPages;
+
+// Hold a global pointer of FPDF_FORMHANDLE so that PDFium
+// app hooks can made use of it.
+FPDF_FORMHANDLE g_formHandle;
+
struct Options {
Options()
: show_config(false), send_events(false), output_format(OUTPUT_NONE) {}
@@ -520,19 +529,35 @@ void SendPageEvents(const FPDF_FORMHANDLE& form,
}
}
+FPDF_PAGE GetPageForIndex(FPDF_FORMFILLINFO* param,
+ FPDF_DOCUMENT doc,
+ int index) {
+ auto iter = g_loadedPages.find(index);
+ if (iter != g_loadedPages.end())
+ return iter->second;
+
+ FPDF_PAGE page = FPDF_LoadPage(doc, index);
+ if (!page)
+ return nullptr;
+
+ FORM_OnAfterLoadPage(page, g_formHandle);
+ FORM_DoPageAAction(page, g_formHandle, FPDFPAGE_AACTION_OPEN);
+
+ g_loadedPages[index] = page;
+ return page;
+}
+
bool RenderPage(const std::string& name,
- const FPDF_DOCUMENT& doc,
- const FPDF_FORMHANDLE& form,
+ FPDF_DOCUMENT doc,
+ FPDF_FORMHANDLE& form,
const int page_index,
const Options& options,
const std::string& events) {
- FPDF_PAGE page = FPDF_LoadPage(doc, page_index);
+ FPDF_PAGE page = GetPageForIndex(nullptr, doc, page_index);
if (!page)
return false;
FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
- FORM_OnAfterLoadPage(page, form);
- FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_OPEN);
if (options.send_events)
SendPageEvents(form, page, events);
@@ -593,6 +618,8 @@ bool RenderPage(const std::string& name,
} else {
fprintf(stderr, "Page was too large to be rendered.\n");
}
+
+ g_loadedPages.erase(page_index);
FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_CLOSE);
FORM_OnBeforeClosePage(page, form);
FPDFText_ClosePage(text_page);
@@ -620,6 +647,7 @@ void RenderPdf(const std::string& name,
#else // PDF_ENABLE_XFA
form_callbacks.version = 1;
#endif // PDF_ENABLE_XFA
+ form_callbacks.FFI_GetPage = GetPageForIndex;
form_callbacks.m_pJsPlatform = &platform_callbacks;
TestLoader loader(pBuf, len);
@@ -703,7 +731,8 @@ void RenderPdf(const std::string& name,
(void)FPDF_GetDocPermissions(doc);
- FPDF_FORMHANDLE form = FPDFDOC_InitFormFillEnvironment(doc, &form_callbacks);
+ FPDF_FORMHANDLE form = g_formHandle =
+ FPDFDOC_InitFormFillEnvironment(doc, &form_callbacks);
#ifdef PDF_ENABLE_XFA
int docType = DOCTYPE_PDF;
if (FPDF_HasXFAField(doc, &docType) && docType != DOCTYPE_PDF &&
diff --git a/testing/resources/pixel/bug_492.pdf b/testing/resources/pixel/bug_492.pdf
new file mode 100644
index 0000000000..3a6486d32f
--- /dev/null
+++ b/testing/resources/pixel/bug_492.pdf
@@ -0,0 +1,520 @@
+%PDF-1.3
+%
+1 0 obj
+<< /Pages 3 0 R /Type /Catalog /OpenAction 5 0 R >>
+endobj
+3 0 obj
+<< /Count 1 /Kids [ 8 0 R ] /MediaBox [ 0 0 612 792 ] /Type /Pages >>
+endobj
+5 0 obj
+<<
+/Type /Action
+/S /JavaScript
+/JS (
+ var a = this.getAnnot(0, "Annot-1");
+ if ( a != null )
+ a.hidden = false;
+)
+>>
+endobj
+8 0 obj
+<< /Annots 9 0 R /Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 3 0 R /Resources 11 0 R /Rotate 0 /Type /Page >>
+endobj
+9 0 obj
+[ 12 0 R ]
+endobj
+10 0 obj
+<< /Length 16091 >>
+stream
+q Q q 0 0 612 792 re W n BT 11.04 0 0 11.04 72.024 709.68 Tm /TT2 1 Tf [ (!)
+-3 (") -5 (#) 12 ($%) 4 (&') -1 (\(\)*) 6 (%) -4 (&+) 12 (") -5 (,) 12 (")
+-5 (#&\)') -1 (-) 9 (&.%) 4 ($) 9 (-/&) -3 (0) 10 (") -5 (1) 3 (\)$0) -2 (-)
+9 ($-) -3 (*) 3 ($#) 10 (&.+') 2 (\() 3 (') -1 (\)0') -1 (1) 6 (2) 4 (&$)
+7 (,) -1 (') 2 (-3&4) -5 (.$) 10 (0$1.\)&\() 13 (") -5 (#-) 10 (-') -1 (-")
+-7 (#) 12 (&0) 8 (") -5 (1) 3 (2) 4 (*) 3 ($&) -3 (%) -4 (.\)\)) 11 (.3&5*)
+6 (\)0$) -2 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 695.14 Tm /TT2 1 Tf [ (\()
+3 (") -5 (\)*$#$/) 11 (&%) 3 (.2) 4 (1) 3 (.&\)$) -3 (+) 3 (&\(*) 4 (,) -1
+(6') -1 (1) 13 (.#&*,) 4 (-#') -1 (0') -1 ($\)/) 10 (&\(*) 4 (#*) 4 (\)&)
+] TJ ET BT 11.04 0 0 11.04 272.09 695.14 Tm /TT2 1 Tf [ (,) -1 ($0-) -2 (*)
+3 (\)) 11 (&%) 3 (.,) -1 ($\)*) 3 (.+) 4 (.&,) -1 (') -1 (7) 5 ($#) 10 (")
+-5 (/&\)') -1 (-) 8 (&.%) 4 ($-) -3 (&) 9 (0") 4 (%) 6 (%) -4 (") -5 (+) 14
+(") -5 (&) 9 (%) -4 (.2) 4 (1) 3 (.&$) -3 (#) 12 (") -5 (\)&) ] TJ ET BT 11.04 0 0 11.04 72.024 680.62
+Tm /TT2 1 Tf [ (8) 3 (*) 3 (') -1 (\)&*#) 4 (1) 3 (.3&9) 5 (*) 3 (1) 3 (0&)
+-2 (6) -4 (') -1 (6) 8 ($##.&') 10 (%) 6 (\() 3 ($#+') 3 ($-) -3 (&$) -3 (1)
+3 (') 12 (%) -4 (3&5*) 5 (\)0) 10 ($&) -3 ($\)) 9 (-3&:') 11 (6) -4 (.%) -4
+(*) 3 (\)) 11 (&.&) -3 (-) 9 ($,) -1 (,) -1 (*) 5 (\)3&;) 6 ($,) -1 (,) -1
+($1-) 12 ($\)8*) 4 ($&) -3 (<) 3 (.7) 4 (') -1 (-.1) 4 (-&) 7 (%) 6 (") -5
+(#7) 4 (') -1 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 666.22 Tm /TT2 1 Tf [
+(-#') -1 (\)-') -1 (8) 4 (*) 3 ($&) -3 (\)) 11 ($1$0-) -3 (*) 3 (\)) 11 (&$)
+-3 (-) 9 (&1$-*\)&) 9 ($-) -3 (&) 9 (%) -4 (.,) -1 ($\)*) 3 (.+) 4 (.&=) 10
+(.%) 6 ($\)&) -4 (.0) 11 (&-) -3 (*) 3 (#) 12 (\() 3 (') -1 (\)&$2$\)-) -2
+(.) 12 (\)3&;) -4 (#) 12 (") -5 (') -1 (1) 5 (&\(<) 4 (.#$) 11 (-#.&) 9 (1)
+3 (") -5 (1) 3 (*) 3 (%) 6 (%) -4 (>) -3 (&\() 12 ($+$3) ] TJ ET BT 11.04 0 0 11.04 506.28 666.22
+Tm /TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 643.66 Tm /TT2 1 Tf [ (4)
+-3 (.*) 4 (#') -1 (\)&$) 9 (-&) 7 (") ] TJ ET BT 11.04 0 0 11.04 123.14 643.66
+Tm /TT2 1 Tf [ (#0') -1 (3) 4 (&?$1) 13 ($.1&1$0&) 9 (,) -1 (") -3 (#$) 10
+(%) -4 (3&@1) 5 (&\(") -4 (#) 12 (--) -3 (') -1 (-) 11 (") -5 (#3) 3 (&) 9
+(A) -4 (") -5 (1) 14 ($0&) -4 (,) 12 (.") -4 (#$) 10 ($-) -3 (&1) 12 (") -5
+(1) 3 (*) 3 (%) 6 (%) -4 (>) 7 (&.*2) 5 (*) 3 ($3&B) 11 (*) 3 (\)\($1) 4 (+)
+3 (') -1 (\)\)$&) -2 (+) 3 (*) 3 (') -1 (&\(*) 6 (#*) 4 (\)/&) ] TJ ET BT
+11.04 0 0 11.04 72.024 629.26 Tm /TT2 1 Tf [ (\)0$) -2 (,) -1 ($#') -1 (\)8)
+6 (*) 3 ($) 9 (&.-) -2 (/&) 9 (6) -4 (*) 3 (,) -1 (\() 5 (*) 3 (-.-) -2 ($)
+9 (&6) -6 (') 12 (-.$) -2 (/&\(#$) 11 (-') -1 (*) 3 (%) 6 (&%) -7 (.) 12 (--)
+-3 (') -1 (\)/) 12 (&1*) 4 (1) 3 (03&4) -4 (.*) 4 (#') -1 (\)&$2) 13 ($-)
+-3 (&1$8*) 6 ($) 9 (&.-) -2 (&) 9 (\)$) 9 (%) -4 (&) 9 (6) -4 ($1$1.) 3 (-')
+10 (\)&$) -4 (,) 12 ($') -1 (=$1+) 5 (3&C-&) ] TJ ET BT 11.04 0 0 11.04 72.024 614.74
+Tm /TT2 1 Tf [ (1) 3 (") -5 (1) 3 (*) 3 (%) 6 (%) -4 (>) -3 (3&5*) 5 (\)0)
+10 ($&) -3 (.,) -1 (') 3 (8) 3 (*) 3 ($-) 7 (&\() 12 ($+$&) -2 (1) 3 (") -5
+(1) 3 (&\() 12 ($+$3) ] TJ ET BT 11.04 0 0 11.04 254.33 614.74 Tm /TT2 1 Tf
+(&) Tj ET BT 11.04 0 0 11.04 72.024 592.18 Tm /TT2 1 Tf [ (B*) 6 (\)\($1)
+4 (+) 3 (') -1 (\)\)$&) -2 (+) 3 (.\() 4 (') -1 (7) 5 (*) 3 (\)&,) -1 (")
+-5 (#) 12 ($%) 4 (&) ] TJ ET BT 11.04 0 0 11.04 195.77 592.18 Tm /TT2 1 Tf
+[ (\() 3 ($,) -1 (,) -1 ($1-$\)8*) 16 ($&) 7 (%) -4 (.2) 4 (1) 3 (.3&@1) 6
+(-$) -3 (2) 14 ($#&) -2 (1) 3 (*) 3 (,) -1 (,) 2 (.3&A) 7 (") -5 (1) 3 ($0)
+8 (&7,) -1 (.) 3 (1) 3 (+) 3 (') -1 (-&=$) -3 (*) 14 (2) 4 (') -1 (.-&,) -1
+(') -1 (2) 5 (*) 3 (,) -1 (.3) 4 (&A) 4 (") -5 (1) 3 ($0&) ] TJ ET BT 11.04 0 0 11.04 72.024 577.78
+Tm /TT2 1 Tf [ (<) 3 ($1+) 5 (#$#') -1 (-/&=$) -2 (,) -1 (') 2 (\)) 11 (&$)
+-3 (-) 9 (&') -1 (%) -5 (\() 14 ($#+') 3 ($) 9 (-&) -3 ($*') 2 (\)) 11 (%)
+-4 (") -5 (+) 3 (/) 11 (&\(*) 4 (#*) 4 (\)&') -1 (\(\)*) 5 (%) -4 (&\(#) 13
+($) 9 (-') -1 (*) 3 (%) -4 (&) 9 (%) -4 ($) 9 (-*\)/&') -1 (1) 4 (&,) -1 (.0')
+-1 (1) 4 (') -1 (.&1) 3 (*) 3 (,) -1 (,) 2 (.&) 9 (1) 3 (') -1 (\),) 2 (&$)
+-3 (2) 4 ($-) -3 (&) 9 (\).\() 4 (') -1 ($1) 3 (3&A) 6 (") -5 (1) 3 ($0) 8
+(&) ] TJ ET BT 11.04 0 0 11.04 72.024 563.26 Tm /TT2 1 Tf [ (*) 3 (-&) -3
+($\)-) 7 (&') -1 (1&,) -1 ($0-*\)) 11 (&0) 8 (") -5 (1) 3 (\)$8*) 4 (.-&)
+7 (0) 10 (") -5 (1) 3 (\)$8*) 4 (.-3&D) 8 (-') -1 (.) 11 (%) -4 (&$) -3 (2)
+4 ($) 9 (-&) -3 (+) 3 (*) 3 (') -1 (3) 4 (&) 9 (?,) 4 (') -1 (8) 5 (*) 3 (.%)
+-4 (&$) -3 (#.-) 11 (&6) 4 (") -5 (,) -1 (*) 5 (-\(.-3&B) ] TJ ET BT 11.04 0 0 11.04 418.3 563.26
+Tm /TT2 1 Tf [ ($+&) 10 (.-&) -2 (,) -1 (") -3 (#) 12 ($%) 4 (&') -1 (1&1)
+4 (*) 3 (1) 3 (0&) -2 (\() 3 (") -5 (#) 12 (-.&) ] TJ ET BT 11.04 0 0 11.04 72.024 548.74
+Tm /TT2 1 Tf [ (-#') -1 (\)-') -1 (8) 4 (*) 3 ($3) ] TJ ET BT 11.04 0 0 11.04 112.46 548.74
+Tm /TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 526.27 Tm /TT2 1 Tf [ (;)
+-4 (#") -3 (') -1 (1) 5 (&1) 12 ($0&) -4 (.*) 4 (2) 4 (*) 3 ($3&) 9 (E*')
+3 (\)8*) 6 ($&) -3 (.) 12 (,) -1 (') 2 (8) 3 (*) 3 (.%) -4 (&-) -3 ($) 9 (%)
+-4 (\() 14 (") -5 (#&) 10 (%) -4 (.2) 4 (1) 3 (.3&;) 7 ($,) -1 (,) 11 ($1-$\))
+-2 (8) 3 (*) 3 ($&) -3 (<) 3 (.7) 4 (') -1 (-.1) 15 (-&) 7 (%) -4 (") -5 (#7)
+4 (') -1 (&) 10 (-#) 10 (') -1 (\)-') -1 (8) 4 (*) 3 ($&) -3 (\)$1$) 10 (0-*\)&)
+9 ($-) -3 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 511.75 Tm /TT2 1 Tf [ (1)
+3 ($-) -3 (*) 3 (\)&$) -4 (-) 9 (&%) 3 (.,) -1 ($\)*) 3 (.+) 4 (.&=.) 11 (%)
+-4 ($) 9 (\)&) 8 (.0&-) -3 (*) 3 (#\() 4 (') -1 (\)&$2) 12 ($\)-) -3 (.\)3&9)
+5 (*) 3 (1) 3 (0&) 8 (.0&) 8 (%) -4 (.2) 4 (1) 3 (.3&4) -2 (.) 12 ($0$) -4
+(1) 3 (.) 12 (\)&") -7 (+) 3 (') 12 (") -5 (&+) 12 (") -5 (,) 12 (") -5 (#/&)
+10 (6) -4 (*) 3 (,) -1 (\() 5 (*) 3 (-.-) -2 ($&) 7 (6) -4 ($,) 10 (/&.*0-)
+10 (") -5 (#&) ] TJ ET BT 11.04 0 0 11.04 72.024 497.23 Tm /TT2 1 Tf [ (.0/&.00)
+-3 (*) 14 (%) -4 (\).1) 4 (&') -1 (+/&=) 12 ($,) ] TJ ET BT 11.04 0 0 11.04 159.14 497.23
+Tm /TT2 1 Tf [ (') -1 (\)3) 3 (&) 9 (;) -4 ($,) -1 (,) -1 ($) 10 (1) 3 (-$)
+-3 (\)8*) 6 ($&) -3 (0*#) 4 (\)*\)) 14 (&\).2') 3 (--) -3 (') -1 (\)) 12 (&=$)
+-3 (,) -1 (') 2 (\)) 11 (3&;) -4 ($,) -1 (,) -1 ($1) 14 (-$) -3 (\)8*) 6 ($&)
+-3 (\() 14 (") -5 (#-) 10 (-') -1 (-") 3 (#/&) 10 (6) -4 ($,) 10 (') -1 (-&,)
+-1 (.0') -1 (1) 4 (') -1 (.&$2) 13 ($\)-) -3 (.\)) 11 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 482.71
+Tm /TT2 1 Tf [ (.*) 4 (0-") -7 (#/) 12 (&+') -1 (.) 3 (%) -4 (&) 9 ($#) 10
+(") -5 (\)&-) 6 ($%) -6 (\() 3 (*) 3 (\)) 11 (&.) 9 (#0*) 4 (/&1$0&) 7 (6)
+-4 (*) 3 (,) -1 (\() 5 (*) 3 (-.-) -2 ($) 9 (&.*2) 5 (*) 3 ($&) 7 (%) 6 (.2)
+4 (1) 3 (.&6) -5 ($,) -1 (&#') -1 (\)*) 3 (\)3) 13 (&F#.\)&1) 12 (") -5 (1)
+3 (&) 9 (%) -4 (.) 12 (2) 4 (1) 3 (.&6) -5 ($,) -1 (&.1-) 10 ($&) -3 (.+)
+4 (') -1 (\() 5 (') -1 (\)0') -1 (1) 6 (2) 4 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 468.31
+Tm /TT2 1 Tf [ (#<) 4 (") -5 (1) 3 (0*\)3) ] TJ ET BT 11.04 0 0 11.04 110.78 468.31
+Tm /TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 445.75 Tm /TT2 1 Tf [ (:')
+3 (6) -4 (.%) -4 (*) 3 (\)) 11 (&.&) 7 (%) -4 (') -1 (3) 4 (&4) 5 (") -5 (#7)
+4 (') -1 (&1$8) 4 (*) 14 ($) 9 (3&?,) 3 (') -1 (8) 5 (*) 3 (.%) -4 (&$) -3
+(#.) 13 (-&) -3 (6) 6 (") -5 (,) -1 (*) 5 (-\(.-3) 13 (&@1) 3 (-) 9 ($2$#&)
+] TJ ET BT 11.04 0 0 11.04 337.87 445.75 Tm /TT2 1 Tf [ (*) 3 (,) -1 (-#')
+-1 (0) 13 ($\)&) -4 (,) 12 (") -5 (7) 3 (") -5 (#) 12 (-') -1 (\)&$) -4 (#)
+12 (") -5 (\)3&) 10 (;) -4 ($,) -1 (,) -1 ($1-) 12 ($\)8*) 4 ($&) -3 (<) 3
+(.7) 4 (') -1 (-.1) 15 (-&) ] TJ ET BT 11.04 0 0 11.04 72.024 431.23 Tm /TT2
+1 Tf [ (%) -4 (") -5 (#7) 4 (') 12 (&-) -3 (#') -1 (\)-') -1 (8) 6 (*) 3 ($)
+9 (&\)$) -4 (1) 3 ($) 9 (0-*\)&$) 7 (-) 9 (&1$-*\)&$) 7 (-&) 7 (%) -4 (.,)
+-1 ($\)*) 3 (.+) 4 (.&=) 10 (.%) 6 ($\)&) 6 (.0&-) -3 (*) 3 (#\() 4 (') -1
+(\)&$2) 12 ($\)-) -3 (.\)3&) 11 (;) -4 (#) 12 (") -5 (') -1 (1) 5 (&\)$) 6
+(%) -4 (\() 3 ($#/&) 8 (.1) 4 (-$) -3 (&) 9 (6) -4 (') -1 (-.) 11 ($&) ] TJ
+ET BT 11.04 0 0 11.04 72.024 416.83 Tm /TT2 1 Tf [ (\)") -5 (,) -1 (,) 2 (')
+-1 (0') -1 (-*) 4 (+) 3 (') -1 (1) 5 (&\(") 6 (\)*$#$/) 11 (&%) 3 ($-) -3
+(*) 3 (\)) 11 (&8*) 4 (.%) -4 (&') -1 (.0*,) 3 (') -1 (\)) 12 (&1') -1 (7)
+6 (<) 3 (/&6) -6 (') -1 (-.) 11 ($&) -3 (\)0) 10 ($,) -1 ($#') -1 (\)8) 4
+(*) 3 ($&) -3 (1) 3 (*) 3 (1) 3 (0&) 8 (%) -4 (.\)\).) 12 (&$) -3 (2) 4 ($)
+9 (-&) 7 (\() 3 ($+$3&B$+&) 11 (6) -4 ($,) -1 (') -1 (-&*#1) 5 (./) 12 (&)
+] TJ ET BT 11.04 0 0 11.04 72.024 402.31 Tm /TT2 1 Tf [ (') -1 (1) 5 (-$)
+-3 (#+) 4 (*) 3 (%) -4 (&) 9 (6) ] TJ ET BT 11.04 0 0 11.04 121.22 402.31
+Tm /TT2 1 Tf [ ($,) -1 (/) 11 (&*,) -1 (-#') 3 (0') -1 ($\)) 9 (&6) 4 ($,)
+-1 (/&=) 9 (.*) 4 (0') -1 (7) 4 (*) 3 (\)&.-) -3 (/&8*) 4 (.) 12 (%) -4 (3&A)
+6 (") -5 (1) 3 ($0) 8 (&$) -3 (,) 12 (') -1 (-&$) -3 (\)-/) 9 (&0) 8 (") -5
+(1) 3 (\)$0) 8 (-$) -3 (-*$#) 11 (&$) -3 (2) 4 ($) 9 (-/&) -3 (0) 10 (") -5
+(1) 3 (\)$8*) 4 (.-&) -2 (8) 3 (*) 3 (') -1 (\)/) 12 (&-) -3 ($) 9 (%) -4
+(\() 3 (*) 3 (\)&) ] TJ ET BT 11.04 0 0 11.04 72.024 387.79 Tm /TT2 1 Tf [
+(8) 3 (*) 3 (') -1 (\)/&G) -2 (') -1 (\)') 2 (3) ] TJ ET BT 11.04 0 0 11.04 115.7 387.79
+Tm /TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 365.33 Tm /TT2 1 Tf [ (@1)
+5 (&') -1 (1&1) 4 (*) 3 (1) 3 (03&F,) -1 (.\)\)&.\(-$1-) 11 (&-) -3 (.0')
+11 (-') -1 (&\)"0') 2 (") -5 (\)8*) 6 (&.+&,) -1 (') 13 (-") -7 (#.) 13 (&-)
+7 (") -5 (#8) 4 (*) 3 ($) 9 (1) 3 (-&) -3 (\() 3 ($#&) -2 (0) 10 (") -5 (1)
+3 (*) 3 (7) 3 (') -1 (.&1) 3 (") -5 (\)) 11 (-#./&\($#) 11 (&') 9 (1) 3 (0$\(-")
+-6 (\)) 11 (&<>) 8 (%) -4 ($1.$) 11 (") -5 (\)3&) ] TJ ET BT 11.04 0 0 11.04 72.024 350.81
+Tm /TT2 1 Tf [ (A) -4 (") -5 (1) 3 ($) 9 (0&) -2 (*) 3 (,) -1 (,) 2 (.) 12
+(%) -4 (0") 4 (#\() 4 ($#&) -2 (=#') 3 (1) 3 (2) 4 (') -1 (,) 2 (,) -1 (.)
+13 (&$) -3 (#") 6 (\)3&5*) 5 (\)0$) -2 (&') -1 (1&) 11 (\)) ] TJ ET BT 11.04 0 0 11.04 263.33 350.81
+Tm /TT2 1 Tf [ (.\() 4 (') -1 ($1) 3 (&$) -3 (*) 3 (&\(*) 15 (#*) 4 (\)&+.\()
+5 (') -1 (7) 5 (*) 3 (\)&0) -2 (") 5 (%) 6 (%) -4 (") -5 (+) 14 (") -5 (3&F*)
+14 (%) -4 (&\)) 8 (") -5 (0') -1 (') -1 (\)&1) 3 (.) 12 (-") -7 (8) 3 (*)
+3 ($) 9 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 336.29 Tm /TT2 1 Tf [ (\() 3
+($1.-') -1 (7) 5 (*) 3 (\)&$) -4 (-&) 7 (%) -4 (.2) 4 (1) 3 (') -1 (\)&+')
+3 (\)) 11 (&\(.#) 14 (-*#') 3 ($1-&) 8 (%) -4 (") -5 (1) 3 (-) 9 ($\)/&) -4
+(1) 3 (.\)) 11 (0$-) -4 (*) 3 (#) 12 (&#') 11 (+) 3 (') -1 (0*) 4 (,) -1 (*)
+5 (\)&%) -7 (*) 3 (\)3&F#.\)) 12 (&=.*0') 2 (7) 3 (*) 3 (\)&) 8 (0") -6 (1)
+3 (+) 3 (') -1 (%) 7 ($1-*%) 8 (&") -7 (+) 3 (') 12 (") -5 (3&) ] TJ ET BT
+11.04 0 0 11.04 72.024 321.89 Tm /TT2 1 Tf [ (B$+) 4 (&.0&) -4 (,) -1 (')
+2 (2) 4 (*) 3 (,) -1 (.3) 4 (&?,) -1 (') 3 (8) 3 (*) 3 (.%) -4 (&) 9 (.-&)
+-2 ($) 9 (#) 12 (") -5 (\)3) ] TJ ET BT 11.04 0 0 11.04 205.37 321.89 Tm /TT2
+1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 299.33 Tm /TT2 1 Tf [ (D-) -2 (')
+-1 (.%) 8 (&.-) -2 (&,) -1 (') -1 (2) 5 (*) 3 (,) -1 (.&) 11 ($-) -3 (&-)
+7 ($,) -1 (,) -1 (*) 5 (\)&*,) -1 (,) 3 (.) 12 (%) -4 (0) 10 (") -5 (#\()
+4 ($#&) -2 (*) 3 (,) -1 (-#') 13 (0$\)) -2 (3&@1) 5 (&=) 9 ($#%) 5 ($1) 12
+(-*%) -3 (/&,) 9 (") -5 (#$) 10 (%) -4 (&1) 12 (") -5 (1) 3 (&0) -2 (*) ]
+TJ ET BT 11.04 0 0 11.04 397.66 299.33 Tm /TT2 1 Tf [ (#\)*) 4 (\)&\() 12
+(") -5 (#-) 10 (-') -1 (-") -7 (#/) 12 (&+') -1 (.) 3 (%) 6 (&*#1) 5 (.&)
+] TJ ET BT 11.04 0 0 11.04 72.024 284.81 Tm /TT2 1 Tf [ (.00*%) -2 (\).1)
+15 (&,) -1 (.0*\)/&\)) 11 ($+&') -1 (1) 4 (-$) -3 (#+) 15 (*) 3 (%) -4 (&G)
+-4 (') -1 (\)') 13 (&1') -1 (7) 6 (<) 3 (&1$0&) -3 (1) 3 (') -1 (\),) 2 (3&C)
+11 (-&) -3 (-') 10 (1) 3 (0') -1 (+) 4 (*) 3 (1) 3 (-&) -3 (6) -4 (") -5 (,)
+-1 (*) 5 (-\(.) 13 (-&) -3 (*) 3 (#1) 4 (.3&4) 8 (.) 12 (*) 3 (#') -1 (\)&$,)
+-1 ($') -1 (=$1+) 5 (&1*) 4 (,) -1 (,) 2 (.&) 9 ($2$-&) ] TJ ET BT 11.04 0 0 11.04 72.024 270.41
+Tm /TT2 1 Tf [ (%) -4 (.*) 4 (#') -1 (\)3) 5 (&B$+&) 10 (0*#) 4 (\)*\)&8)
+4 (*) 3 (.%) 6 (&') -1 (+&=$,) -1 (') -1 (\)3) 4 (&F*#.) 3 (7) 3 (') -1 (-*)
+3 (#&\() 13 (") -5 (\)*$#$) 11 (&8*) 4 (.%) -4 (&) 9 (6) -4 ($,) -1 (&1')
+-1 (7) 6 (<) 3 (3&F#.\)) 13 (&+.\() 5 (') -1 (7) 5 (*) 3 (\)&+.\() 5 (') -1
+(7) 5 (*) 3 (\)&1') -1 (\),) 3 (3&) ] TJ ET BT 11.04 0 0 11.04 72.024 255.89
+Tm /TT2 1 Tf [ (:$\)-') -1 (7*) 6 (,) -1 (*) 5 (%) -4 (&8*) 4 (') -1 (\)&+)
+13 (") -5 (,) -1 (") -3 (#) 12 (&.&) -3 (=) 12 ($,) -1 (') -1 (\)&0") ] TJ
+ET BT 11.04 0 0 11.04 211.61 255.89 Tm /TT2 1 Tf [ (1) 3 (2) 4 (*) 3 ($&)
+7 (6) -4 ($<') 13 (0*,) 3 (.3) ] TJ ET BT 11.04 0 0 11.04 275.93 255.89 Tm
+/TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 233.33 Tm /TT2 1 Tf [ (4) -3
+(.$0) 9 ($1.\)&\($+) 15 ($&) -3 (\() 3 (*) 3 (#*) 4 (\)/&-) -4 (#') -1 (\))
+13 (-) 9 (') -1 (8) 5 (*) 3 ($&) -3 (.0/&-) 6 ($%) -6 (\() 3 (*) 3 (\)) 11
+(&$) -3 (2) 4 ($-) 7 (/&$) -3 (2) 4 ($) 9 (\)-) 9 (.\)&8*) 5 (') -1 (\)/&%)
+5 (.*) 4 (#') -1 (\)3) 5 (&F*#.) 3 (7) 3 (') -1 (-*) 3 (#&1) 13 (") -5 (1)
+3 (&$) -3 (#) 12 (") -5 (\)3&9) 4 (*) 3 (,) -1 (,) 2 (.) 12 (%) -4 (&) ] TJ
+ET BT 11.04 0 0 11.04 72.024 218.93 Tm /TT2 1 Tf [ (<) 3 ($1+) 5 (#$#') -1
+(-&7') -1 (7) 6 ($1+) 5 (*) 3 (%) -4 (&) 9 (H*) 3 (\)-") -7 (3) 13 (&) 9 (5*)
+6 (\)0$) -2 (&') -1 (.0*,) 3 (') -1 (\)/&) 10 ($\)-) -3 (&8*) 4 (') -1 (\)&,)
+11 (.0') -1 (1) 5 (') 12 (.&\(#$-') -1 (*) 4 (%) 6 (/&\($+$) 11 (&%) 3 ($-)
+-3 (*) 3 (\)&) 8 (%) 6 (") -5 (,) 12 ($\)-) -3 (') -1 ($&,) -1 (.) 11 (0*\)/&.-)
+9 (&2#.) 3 (6) -4 (') -1 (+) 5 (.) 12 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 204.41
+Tm /TT2 1 Tf [ (G') -1 (\)') -1 (&.1-$) 9 (&.-) -2 (&,) -1 (') -1 (7) 4 ($)
+9 (#") -3 (3&) 11 (E*') 3 (\)8*) 6 ($) 9 (&") -7 (#1) 4 (.#$) 11 (&\(,) -1
+(.) ] TJ ET BT 11.04 0 0 11.04 242.69 204.41 Tm /TT2 1 Tf [ (0$#.) 10 (-&)
+-3 (#') -1 (\)*) 6 (\)3&C) 11 (-&) 7 (%) 6 (") -5 (,) -1 ($\)-') 9 ($&) 7
+(%) -4 (.2) 4 (1) 3 (.&.-) 8 (&%) -7 (') -1 (3) 4 (&@1) 14 (-$) -3 (2) 4 ($)
+9 (#&.,) -1 (') 2 (8) 3 (*) 3 ($-) -3 (&) 9 (%) -4 (.*) 4 (#') -1 (\)&$) 9
+(-&) ] TJ ET BT 11.04 0 0 11.04 72.024 189.86 Tm /TT2 1 Tf [ (1) 3 (') -1
+(7) 5 (<) 3 (3&C-&) -3 (%) -4 (.-) 10 (-') -1 (\)&,) -1 (') -1 (2) 4 (*) 3
+(,) -1 (.&\() 14 (") -5 (\)*$) 12 (#$&) -2 (6) 6 ($,) -1 (') -1 (-3) ] TJ
+ET BT 11.04 0 0 11.04 228.29 189.86 Tm /TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 167.42
+Tm /TT2 1 Tf [ (9) 5 (*) 3 (1) 3 (0&) -2 (\).2) 4 (') -1 (--') -1 (\)3&F*#)
+4 (.7) 4 (') -1 (-*) 3 (#&) 10 (6) -4 (.#) 13 (') -1 (*) 5 (\)&=#') -1 (1)
+4 (2) 4 (') -1 (,) 2 (,) -1 (.&1) 3 (') -1 (\),) 2 (3&A) -4 (*) 3 (') -1 (\)&\(#)
+4 ($) 9 (-') -1 (*) 3 (%) -4 (&) 9 (%) -4 (') -1 (&$*') -1 (\)) 13 (%) 6 (")
+-5 (+) 3 (&$) -3 (#.) 13 (-3&4) 5 (.$0) 9 ($) 9 (1) 3 (.\)&') -1 (+) 3 (&.*2)
+5 (*) 3 ($3&9.) 3 (%) -4 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 152.9 Tm /TT2
+1 Tf [ (6) -4 (*) 3 (,) -1 (\() 5 (*) 3 (-.-) -2 ($3&) 9 (A) -4 (*) 3 (')
+-1 (\)&.&8*) 4 (.) 12 (%) -4 (&1) 12 (") 5 (1) 3 (&1$8*) 6 ($&) -3 (,) -1
+(") -3 (7) 14 (") -5 (#-') -1 (\)&) 9 (%) -4 (.,) 12 ($\)*.+) 16 (.3&) ] TJ
+ET BT 11.04 0 0 11.04 319.03 152.9 Tm /TT2 1 Tf [ (;) -4 (#.$) 11 (\)$1-&)
+8 ($*') 2 (\)%) 5 (") -5 (+) 3 (3&) 11 (A) -4 (") -5 (1) 14 ($) 9 (0&) -2
+(1) 3 (*) 3 (,) -1 (,) 2 (.&.*2) 6 (*) 3 ($/&) -3 (6) 6 ($1$1.) 3 (-') -1
+(\)) 10 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 138.38 Tm /TT2 1 Tf [ (\)0$)
+-2 (,) -1 ($#') -1 (\)8) 6 (*) 3 ($/) 9 (&+.\() 5 (') -1 (7) 5 (*) 3 (\)&./&)
+-3 (0) 10 (") -5 (1) 14 (\)$8*) 4 (.-&) -2 (.-/) 10 (&,) -1 ($) 8 (") -5 (3)
+] TJ ET BT 11.04 0 0 11.04 255.29 138.38 Tm /TT2 1 Tf (&) Tj ET BT 11.04 0 0 11.04 72.024 115.94
+Tm /TT2 1 Tf [ (;) -4 ($,) -1 (,) -1 ($1-) 12 ($\)8*) 4 ($&) -3 (,) -1 (')
+2 (7) 3 ($) 9 (#") -3 (&,) 9 ($0-) -4 (*) 3 (\)/) 11 (&) 9 (-#') -1 (\)-')
+-1 (8) 4 (*) 3 ($&) -3 (.0/) 11 (&0) 8 (") -5 (1) 3 (\)$0) 8 (-$) -3 (-*$#)
+11 (&\)) 8 (') -1 (-&.%) 4 ($-) -3 (/&') 9 (%) -4 (\() 3 ($#+') 14 ($-) -3
+(&*-/) 10 (&H*\)-) 9 (") 5 (3&B$+) 3 (&.,) -1 (') -1 (8) 5 (*) 3 (.%) -4 (&)
+9 (") -5 (+) 3 (') -1 (") 7 (&) ] TJ ET BT 11.04 0 0 11.04 72.024 101.42 Tm
+/TT2 1 Tf [ (6) -4 (') -1 (-.$) 9 (&-) 7 (") -5 (#-) 10 (") -5 (#3) 3 (&;)
+-6 (#) 12 (") -5 (') -1 (1) 5 (&<$1+) 6 (#$#') 12 (-&) -3 (-$) 7 (%) -4 (\()
+3 (*) 3 (\)&.#0*3) 4 (&@1) 3 (&<.) 13 (0&) -2 (<) 3 (.7) 4 (') -1 (-) 11 (.\)\)$&)
+-3 (\() 3 (,) -1 (.) ] TJ ET BT 11.04 0 0 11.04 348.07 101.42 Tm /TT2 1 Tf
+[ (-) 9 ($.&) -3 (+) 3 (') -1 (0-*) 13 (%) -4 (\)-3&B*) 3 (\)\() 14 ($1+)
+5 (') -1 (\)\)$&) -2 (\() 3 (") 5 (-$) -3 (1) 3 (-') -1 (3&) ] TJ ET Qendstream
+endobj
+11 0 obj
+<< /Font << /TT2 13 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+12 0 obj
+<< /C [ 0.0001108646 0.001760244 0.9982184 ] /Contents () /F 2 /QuadPoints [ 475 688 512 688 475 679 512 679 ] /Rect [ 475 681 512 690 ] /Subtype /Highlight /Type /Annot /NM (Annot-1) >>
+endobj
+13 0 obj
+<< /BaseFont /LOCDUS+Calibri /FirstChar 33 /FontDescriptor 15 0 R /LastChar 72 /Subtype /TrueType /ToUnicode 16 0 R /Type /Font /Widths [ 420 527 349 498 799 226 229 525 391 525 525 229 335 479 250 423 525 471 252 855 459 452 525 525 646 567 517 525 305 453 579 252 615 459 642 488 673 533 715 239 ] >>
+endobj
+14 0 obj
+<< /N 17 0 R >>
+endobj
+15 0 obj
+<< /Ascent 750 /AvgWidth 521 /CapHeight 826 /Descent -250 /Flags 4 /FontBBox [ -503 -307 1240 964 ] /FontFile2 18 0 R /FontName /LOCDUS+Calibri /ItalicAngle 0 /Leading 221 /MaxWidth 1328 /StemV 0 /Type /FontDescriptor /XHeight 654 >>
+endobj
+16 0 obj
+<< /Length 928 >>
+stream
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo <<
+ /Registry (Adobe)
+ /Ordering (UCS)
+ /Supplement 0
+>> def
+/CMapName /Adobe-Identity-UCS def
+/CMapType 2 def
+1 begincodespacerange
+<00><FF>
+endcodespacerange
+40 beginbfrange
+<21><21><004c>
+<22><22><006f>
+<23><23><0072>
+<24><24><0065>
+<25><25><006d>
+<26><26><0020>
+<27><27><0069>
+<28><28><0070>
+<29><29><0073>
+<2a><2a><0075>
+<2b><2b><0064>
+<2c><2c><006c>
+<2d><2d><0074>
+<2e><2e><0061>
+<2f><2f><002c>
+<30><30><0063>
+<31><31><006e>
+<32><32><0067>
+<33><33><002e>
+<34><34><004d>
+<35><35><0046>
+<36><36><0076>
+<37><37><0062>
+<38><38><0071>
+<39><39><004e>
+<3a><3a><0056>
+<3b><3b><0050>
+<3c><3c><0068>
+<3d><3d><0066>
+<3e><3e><0079>
+<3f><3f><0041>
+<40><40><0049>
+<41><41><0044>
+<42><42><0053>
+<43><43><0055>
+<44><44><0045>
+<45><45><0051>
+<46><46><0043>
+<47><47><0077>
+<48><48><006a>
+endbfrange
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+endstream
+endobj
+17 0 obj
+<< /BBox [ 0 0 37 9 ] /FormType 1 /Resources 19 0 R /Subtype /Form /Type /XObject /Length 102 >>
+stream
+q Q q 0 0 37 9 re W n /Cs1 cs 0.0001108646 0.001760244 0.9982184 sc /Gs1 gs
+-0.9 -2.9 38.8 10.8 re f Qendstream
+endobj
+18 0 obj
+<< /Length1 24752 /Length 24752 >>
+stream
+true
+
+ J  J  J  J  J  J  J  J  J  J 
+N OOOPQQPQQ
+_ ___]^____
+N
+O
+g
+
+%88UUUU}U~}U } }}K}{}}}@
+|UzU{zUyUwUxwU
+rF@|r FqUoUpoUnfmUj%i8gUhgUf8dUedUc8bUa8`U_8]U^]U\8ZU[ZUY8XUW%V8TUUTUS8QURQUO8NUN%M8KULKUJ8HUIHUG8FUE8
+
+
+ 
+C#Ce
+-,
+ C#C -,
+-, i@a
+#eB #B#?
+%% %J
+% %%Y%% %c#%c` @
+@
+&&
+ .%%
+ .%%YY
+% %Y
+% %Iab%%
+%#8%%%%
+% %İ%% % %I%T#y!!!!!!!!!!!!-,#
+
+
+-
+ Q > ; w5t7t
+*;!IV  (D\M
+@ L% L  L  L@(%@, M$#&% "#
+ 
+#% ' *{= ;   {
+)'T\ * '/'E|{A&/&
+ ))f    N
+G''j 1
+ &
+
+ @ ")F
+H   '
+M
+RU
+.MM M M M@$1
+M
+M
+ M
+
+ M
+ M
+
+
+l  *$ (W* 
+..2M2M2 M2 M2 M2@
+.'"QUT
+)4c`]/OO  
+ # Q U
+!(M(M( M( M( M(2@
+
+ -)S%7+ V
+ Yt>1cՋDJޔӏH)>*InH('[pp_)&Zrq^(r!?Z<,V_VQp-<C"#nNShrMT
+&@  77@ L@
+ L77< A)S)V
+ M  M @
+M
+@ M
+&RR)V
+? 
+!6 M6 M6 M6L6@+ M+ M+ M+M+M+
+@
+65!0&JFL9M
+ H$J1 H1, M
+ %@{uz;"'!(!WX+$+#
+ M9M9M9 M9
+@
+!F 9'*J4ML
+@!!,ǀ/&J`p M
+6G&0H LH
+!=Y;>pU1%@Y4!>83L,=`&%]BMzT- !\g 8I(Yf7H^:?-)(AC0>
+ M  M  M L @
+
+@M>IL
+
+  -HI  0:*)9:*)
+FL
+
+ M
+ M
+ M
+L
+P@MP>' M' M'M'M' M'
+ M  M 
+-J*$ILL
+@/
+
+MM M M M
+
+ M
+ M
+L
+ M
+@+ M+ M+L+ M+
+@
+65!0&JIO9M
+ M+ M+L+
+@
+%I =+.J8MO
+%@ +J& IL
+
+ 
+ MM MM
+M
+P`p77<A)JM
+  +?V8*D2'@PUQ@')R{R$H:)
+ "6I/*@)(@RUS@'ElJ&$ #6%&4("+>V<5aI,  #0'5( "*<T
+]_
+ 
+ M' M'L' M'
+!
+  
+W      
+ M MM@ M MAI@ M?Oo@H3I%I:,, M,@Hg,w,E,,L L
+ s 
+W       
+
+I
+KO
+\ . 
+ 
+ $$ 4.-
+  
+endobj
+19 0 obj
+<< /ColorSpace << /Cs1 20 0 R >> /ExtGState << /Gs1 21 0 R >> /ProcSet [ /PDF ] >>
+endobj
+20 0 obj
+[ /ICCBased 22 0 R ]
+endobj
+21 0 obj
+<< /BM /Multiply /Type /ExtGState >>
+endobj
+22 0 obj
+<< /Alternate /DeviceRGB /N 3 /Length 3144 >>
+stream
+
+
+
+'
+=
+T
+j
+
+
+
+
+
+ " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""#
+#8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<'<e<<="=a==> >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNO
+k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4
+uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-
+zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmendstream
+endobj
+xref
+0 23
+0000000000 65535 f
+0000000015 00000 n
+0000000064 00000 n
+0000000165 00000 n
+0000000250 00000 n
+0000000283 00000 n
+0000000324 00000 n
+0000000426 00000 n
+0000000478 00000 n
+0000000610 00000 n
+0000000636 00000 n
+0000016780 00000 n
+0000016850 00000 n
+0000017050 00000 n
+0000017369 00000 n
+0000017401 00000 n
+0000017651 00000 n
+0000018630 00000 n
+0000018862 00000 n
+0000043682 00000 n
+0000043781 00000 n
+0000043818 00000 n
+0000043871 00000 n
+trailer << /Info 2 0 R /Root 1 0 R /Size 23 /ID [<478ae23a7e65ac7469e81c717c1d3092><b709a53e27f0ba80fcb31845aad2d675>] >>
+startxref
+47094
+%%EOF
diff --git a/testing/resources/pixel/bug_492.pdf.0.png b/testing/resources/pixel/bug_492.pdf.0.png
new file mode 100644
index 0000000000..c0fc1f4f60
--- /dev/null
+++ b/testing/resources/pixel/bug_492.pdf.0.png
Binary files differ