Commit 1342612308cf7c9d38a1b87a42d353e8ef8ffdac

Authored by Jay Berkenbilt
1 parent e3144ac4

Replace need-appearances.pdf

Create a new need-appearances.pdf based on newer test files with more
modified fields.
qpdf/qtest/qpdf.test
... ... @@ -1473,11 +1473,19 @@ $td->notify("--- Flatten Form/Annotations ---");
1473 1473 # form-filled-by-acrobat was filled in using the Acrobat Reader
1474 1474 # android app. One of its appearance streams is actually an image.
1475 1475 #
1476   -# need-appearances is based on sample-form with manual edits to
1477   -# turn on NeedAppearances, change /V for a field, and add the comment
1478   -# annotation from comment-annotation.pdf. The test output includes a
1479   -# flattened version of the comment annotation but not of the form
1480   -# fields.
  1476 +# need-appearances.pdf is based on field-types.pdf with manual edits
  1477 +# to turn on NeedAppearances, change /V for several fields, and add
  1478 +# the comment annotation from comment-annotation.pdf. The test output
  1479 +# includes a flattened version of the comment annotation but not of
  1480 +# the form fields. Changes:
  1481 +# - field-types.pdf has /NeedAppearances true
  1482 +# - text1: blank -> abc
  1483 +# - r1: 1 -> 2
  1484 +# - list1: blank -> five
  1485 +# - combolist1: blank -> pi
  1486 +# - drop1: blank -> elephant
  1487 +# - combodrop1: blank -> delta
  1488 +
1481 1489 my @annotation_files = (
1482 1490 'manual-appearances',
1483 1491 'form-filled-by-acrobat',
... ...
qpdf/qtest/qpdf/json-need-appearances-acroform.out
... ... @@ -2,455 +2,384 @@
2 2 "acroform": {
3 3 "fields": [
4 4 {
5   - "alternativename": "First name",
  5 + "alternativename": "text",
6 6 "annotation": {
7 7 "annotationflags": 4,
8 8 "appearancestate": "",
9   - "object": "5 0 R"
  9 + "object": "4 0 R"
10 10 },
11 11 "choices": [],
12 12 "defaultvalue": "",
13 13 "fieldflags": 0,
14 14 "fieldtype": "/Tx",
15   - "fullname": "Given Name Text Box",
  15 + "fullname": "text",
16 16 "ischeckbox": false,
17 17 "ischoice": false,
18 18 "isradiobutton": false,
19 19 "istext": true,
20   - "mappingname": "First name",
21   - "object": "5 0 R",
  20 + "mappingname": "text",
  21 + "object": "4 0 R",
22 22 "pageposfrom1": 1,
23 23 "parent": null,
24   - "partialname": "Given Name Text Box",
  24 + "partialname": "text",
25 25 "quadding": 0,
26   - "value": "ABC mod"
  26 + "value": "abc"
27 27 },
28 28 {
29   - "alternativename": "Last name",
  29 + "alternativename": "r1",
30 30 "annotation": {
31 31 "annotationflags": 4,
32   - "appearancestate": "",
33   - "object": "6 0 R"
  32 + "appearancestate": "/1",
  33 + "object": "21 0 R"
34 34 },
35 35 "choices": [],
36   - "defaultvalue": "",
37   - "fieldflags": 0,
38   - "fieldtype": "/Tx",
39   - "fullname": "Family Name Text Box",
  36 + "defaultvalue": "/1",
  37 + "fieldflags": 49152,
  38 + "fieldtype": "/Btn",
  39 + "fullname": "r1",
40 40 "ischeckbox": false,
41 41 "ischoice": false,
42   - "isradiobutton": false,
43   - "istext": true,
44   - "mappingname": "Last name",
45   - "object": "6 0 R",
  42 + "isradiobutton": true,
  43 + "istext": false,
  44 + "mappingname": "r1",
  45 + "object": "21 0 R",
46 46 "pageposfrom1": 1,
47   - "parent": null,
48   - "partialname": "Family Name Text Box",
  47 + "parent": "5 0 R",
  48 + "partialname": "",
49 49 "quadding": 0,
50   - "value": "DEF"
  50 + "value": "/2"
51 51 },
52 52 {
53   - "alternativename": "Address 1 Text Box",
  53 + "alternativename": "r1",
54 54 "annotation": {
55 55 "annotationflags": 4,
56   - "appearancestate": "",
57   - "object": "7 0 R"
  56 + "appearancestate": "/Off",
  57 + "object": "22 0 R"
58 58 },
59 59 "choices": [],
60   - "defaultvalue": "",
61   - "fieldflags": 0,
62   - "fieldtype": "/Tx",
63   - "fullname": "Address 1 Text Box",
  60 + "defaultvalue": "/1",
  61 + "fieldflags": 49152,
  62 + "fieldtype": "/Btn",
  63 + "fullname": "r1",
64 64 "ischeckbox": false,
65 65 "ischoice": false,
66   - "isradiobutton": false,
67   - "istext": true,
68   - "mappingname": "Address 1 Text Box",
69   - "object": "7 0 R",
  66 + "isradiobutton": true,
  67 + "istext": false,
  68 + "mappingname": "r1",
  69 + "object": "22 0 R",
70 70 "pageposfrom1": 1,
71   - "parent": null,
72   - "partialname": "Address 1 Text Box",
  71 + "parent": "5 0 R",
  72 + "partialname": "",
73 73 "quadding": 0,
74   - "value": ""
  74 + "value": "/2"
75 75 },
76 76 {
77   - "alternativename": "House and floor",
  77 + "alternativename": "r1",
78 78 "annotation": {
79 79 "annotationflags": 4,
80   - "appearancestate": "",
81   - "object": "8 0 R"
  80 + "appearancestate": "/Off",
  81 + "object": "23 0 R"
82 82 },
83 83 "choices": [],
84   - "defaultvalue": "",
85   - "fieldflags": 0,
86   - "fieldtype": "/Tx",
87   - "fullname": "House nr Text Box",
  84 + "defaultvalue": "/1",
  85 + "fieldflags": 49152,
  86 + "fieldtype": "/Btn",
  87 + "fullname": "r1",
88 88 "ischeckbox": false,
89 89 "ischoice": false,
90   - "isradiobutton": false,
91   - "istext": true,
92   - "mappingname": "House and floor",
93   - "object": "8 0 R",
  90 + "isradiobutton": true,
  91 + "istext": false,
  92 + "mappingname": "r1",
  93 + "object": "23 0 R",
94 94 "pageposfrom1": 1,
95   - "parent": null,
96   - "partialname": "House nr Text Box",
  95 + "parent": "5 0 R",
  96 + "partialname": "",
97 97 "quadding": 0,
98   - "value": ""
  98 + "value": "/2"
99 99 },
100 100 {
101   - "alternativename": "Address 2 Text Box",
  101 + "alternativename": "checkbox1",
102 102 "annotation": {
103 103 "annotationflags": 4,
104   - "appearancestate": "",
105   - "object": "9 0 R"
  104 + "appearancestate": "/Off",
  105 + "object": "6 0 R"
106 106 },
107 107 "choices": [],
108   - "defaultvalue": "",
  108 + "defaultvalue": "/Off",
109 109 "fieldflags": 0,
110   - "fieldtype": "/Tx",
111   - "fullname": "Address 2 Text Box",
112   - "ischeckbox": false,
  110 + "fieldtype": "/Btn",
  111 + "fullname": "checkbox1",
  112 + "ischeckbox": true,
113 113 "ischoice": false,
114 114 "isradiobutton": false,
115   - "istext": true,
116   - "mappingname": "Address 2 Text Box",
117   - "object": "9 0 R",
  115 + "istext": false,
  116 + "mappingname": "checkbox1",
  117 + "object": "6 0 R",
118 118 "pageposfrom1": 1,
119 119 "parent": null,
120   - "partialname": "Address 2 Text Box",
  120 + "partialname": "checkbox1",
121 121 "quadding": 0,
122   - "value": ""
  122 + "value": "/Off"
123 123 },
124 124 {
125   - "alternativename": "Postcode Text Box",
  125 + "alternativename": "checkbox2",
126 126 "annotation": {
127 127 "annotationflags": 4,
128   - "appearancestate": "",
129   - "object": "10 0 R"
  128 + "appearancestate": "/Yes",
  129 + "object": "7 0 R"
130 130 },
131 131 "choices": [],
132   - "defaultvalue": "",
  132 + "defaultvalue": "/Yes",
133 133 "fieldflags": 0,
134   - "fieldtype": "/Tx",
135   - "fullname": "Postcode Text Box",
136   - "ischeckbox": false,
  134 + "fieldtype": "/Btn",
  135 + "fullname": "checkbox2",
  136 + "ischeckbox": true,
137 137 "ischoice": false,
138 138 "isradiobutton": false,
139   - "istext": true,
140   - "mappingname": "Postcode Text Box",
141   - "object": "10 0 R",
  139 + "istext": false,
  140 + "mappingname": "checkbox2",
  141 + "object": "7 0 R",
142 142 "pageposfrom1": 1,
143 143 "parent": null,
144   - "partialname": "Postcode Text Box",
  144 + "partialname": "checkbox2",
145 145 "quadding": 0,
146   - "value": ""
  146 + "value": "/Yes"
147 147 },
148 148 {
149   - "alternativename": "City Text Box",
  149 + "alternativename": "checkbox3",
150 150 "annotation": {
151 151 "annotationflags": 4,
152   - "appearancestate": "",
153   - "object": "11 0 R"
  152 + "appearancestate": "/Off",
  153 + "object": "8 0 R"
154 154 },
155 155 "choices": [],
156   - "defaultvalue": "",
  156 + "defaultvalue": "/Off",
157 157 "fieldflags": 0,
158   - "fieldtype": "/Tx",
159   - "fullname": "City Text Box",
160   - "ischeckbox": false,
  158 + "fieldtype": "/Btn",
  159 + "fullname": "checkbox3",
  160 + "ischeckbox": true,
161 161 "ischoice": false,
162 162 "isradiobutton": false,
163   - "istext": true,
164   - "mappingname": "City Text Box",
165   - "object": "11 0 R",
166   - "pageposfrom1": 1,
167   - "parent": null,
168   - "partialname": "City Text Box",
169   - "quadding": 0,
170   - "value": ""
171   - },
172   - {
173   - "alternativename": "Use selection or write country name",
174   - "annotation": {
175   - "annotationflags": 4,
176   - "appearancestate": "",
177   - "object": "12 0 R"
178   - },
179   - "choices": [
180   - "Austria",
181   - "Belgium",
182   - "Britain",
183   - "Bulgaria",
184   - "Croatia",
185   - "Cyprus",
186   - "Czech-Republic",
187   - "Denmark",
188   - "Estonia",
189   - "Finland",
190   - "France",
191   - "Germany",
192   - "Greece",
193   - "Hungary",
194   - "Ireland",
195   - "Italy",
196   - "Latvia",
197   - "Lithuania",
198   - "Luxembourg",
199   - "Malta",
200   - "Netherlands",
201   - "Poland",
202   - "Portugal",
203   - "Romania",
204   - "Slovakia",
205   - "Slovenia",
206   - "Spain",
207   - "Sweden"
208   - ],
209   - "defaultvalue": "",
210   - "fieldflags": 393216,
211   - "fieldtype": "/Ch",
212   - "fullname": "Country Combo Box",
213   - "ischeckbox": false,
214   - "ischoice": true,
215   - "isradiobutton": false,
216   - "istext": false,
217   - "mappingname": "Use selection or write country name",
218   - "object": "12 0 R",
219   - "pageposfrom1": 1,
220   - "parent": null,
221   - "partialname": "Country Combo Box",
222   - "quadding": 0,
223   - "value": ""
224   - },
225   - {
226   - "alternativename": "Select from list",
227   - "annotation": {
228   - "annotationflags": 4,
229   - "appearancestate": "",
230   - "object": "13 0 R"
231   - },
232   - "choices": [
233   - "Man",
234   - "Woman"
235   - ],
236   - "defaultvalue": "Man",
237   - "fieldflags": 131072,
238   - "fieldtype": "/Ch",
239   - "fullname": "Gender List Box",
240   - "ischeckbox": false,
241   - "ischoice": true,
242   - "isradiobutton": false,
243 163 "istext": false,
244   - "mappingname": "Select from list",
245   - "object": "13 0 R",
  164 + "mappingname": "checkbox3",
  165 + "object": "8 0 R",
246 166 "pageposfrom1": 1,
247 167 "parent": null,
248   - "partialname": "Gender List Box",
  168 + "partialname": "checkbox3",
249 169 "quadding": 0,
250   - "value": "Man"
  170 + "value": "/Off"
251 171 },
252 172 {
253   - "alternativename": "Value from 40 to 250 cm",
  173 + "alternativename": "r2",
254 174 "annotation": {
255 175 "annotationflags": 4,
256   - "appearancestate": "",
257   - "object": "14 0 R"
  176 + "appearancestate": "/Off",
  177 + "object": "37 0 R"
258 178 },
259 179 "choices": [],
260   - "defaultvalue": "150",
261   - "fieldflags": 0,
262   - "fieldtype": "/Tx",
263   - "fullname": "Height Formatted Field",
  180 + "defaultvalue": "/2",
  181 + "fieldflags": 49152,
  182 + "fieldtype": "/Btn",
  183 + "fullname": "r2",
264 184 "ischeckbox": false,
265 185 "ischoice": false,
266   - "isradiobutton": false,
267   - "istext": true,
268   - "mappingname": "Value from 40 to 250 cm",
269   - "object": "14 0 R",
  186 + "isradiobutton": true,
  187 + "istext": false,
  188 + "mappingname": "r2",
  189 + "object": "37 0 R",
270 190 "pageposfrom1": 1,
271   - "parent": null,
272   - "partialname": "Height Formatted Field",
  191 + "parent": "9 0 R",
  192 + "partialname": "",
273 193 "quadding": 0,
274   - "value": ""
  194 + "value": "/2"
275 195 },
276 196 {
277   - "alternativename": "Car driving license",
  197 + "alternativename": "r2",
278 198 "annotation": {
279 199 "annotationflags": 4,
280   - "appearancestate": "/Yes",
281   - "object": "15 0 R"
  200 + "appearancestate": "/2",
  201 + "object": "38 0 R"
282 202 },
283 203 "choices": [],
284   - "defaultvalue": "/Off",
285   - "fieldflags": 0,
  204 + "defaultvalue": "/2",
  205 + "fieldflags": 49152,
286 206 "fieldtype": "/Btn",
287   - "fullname": "Driving License Check Box",
288   - "ischeckbox": true,
  207 + "fullname": "r2",
  208 + "ischeckbox": false,
289 209 "ischoice": false,
290   - "isradiobutton": false,
  210 + "isradiobutton": true,
291 211 "istext": false,
292   - "mappingname": "Car driving license",
293   - "object": "15 0 R",
  212 + "mappingname": "r2",
  213 + "object": "38 0 R",
294 214 "pageposfrom1": 1,
295   - "parent": null,
296   - "partialname": "Driving License Check Box",
  215 + "parent": "9 0 R",
  216 + "partialname": "",
297 217 "quadding": 0,
298   - "value": "/Yes"
  218 + "value": "/2"
299 219 },
300 220 {
301   - "alternativename": "Language 1 Check Box",
  221 + "alternativename": "r2",
302 222 "annotation": {
303 223 "annotationflags": 4,
304 224 "appearancestate": "/Off",
305   - "object": "16 0 R"
  225 + "object": "39 0 R"
306 226 },
307 227 "choices": [],
308   - "defaultvalue": "/Off",
309   - "fieldflags": 0,
  228 + "defaultvalue": "/2",
  229 + "fieldflags": 49152,
310 230 "fieldtype": "/Btn",
311   - "fullname": "Language 1 Check Box",
312   - "ischeckbox": true,
  231 + "fullname": "r2",
  232 + "ischeckbox": false,
313 233 "ischoice": false,
314   - "isradiobutton": false,
  234 + "isradiobutton": true,
315 235 "istext": false,
316   - "mappingname": "Language 1 Check Box",
317   - "object": "16 0 R",
  236 + "mappingname": "r2",
  237 + "object": "39 0 R",
318 238 "pageposfrom1": 1,
319   - "parent": null,
320   - "partialname": "Language 1 Check Box",
  239 + "parent": "9 0 R",
  240 + "partialname": "",
321 241 "quadding": 0,
322   - "value": "/Off"
  242 + "value": "/2"
323 243 },
324 244 {
325   - "alternativename": "Language 2 Check Box",
  245 + "alternativename": "text2",
326 246 "annotation": {
327 247 "annotationflags": 4,
328   - "appearancestate": "/Yes",
329   - "object": "17 0 R"
  248 + "appearancestate": "",
  249 + "object": "10 0 R"
330 250 },
331 251 "choices": [],
332   - "defaultvalue": "/Yes",
  252 + "defaultvalue": "salad ฯ€สฌ",
333 253 "fieldflags": 0,
334   - "fieldtype": "/Btn",
335   - "fullname": "Language 2 Check Box",
336   - "ischeckbox": true,
  254 + "fieldtype": "/Tx",
  255 + "fullname": "text2",
  256 + "ischeckbox": false,
337 257 "ischoice": false,
338 258 "isradiobutton": false,
339   - "istext": false,
340   - "mappingname": "Language 2 Check Box",
341   - "object": "17 0 R",
  259 + "istext": true,
  260 + "mappingname": "text2",
  261 + "object": "10 0 R",
342 262 "pageposfrom1": 1,
343 263 "parent": null,
344   - "partialname": "Language 2 Check Box",
  264 + "partialname": "text2",
345 265 "quadding": 0,
346   - "value": "/Yes"
  266 + "value": "salad ฯ€สฌ"
347 267 },
348 268 {
349   - "alternativename": "Language 3 Check Box",
  269 + "alternativename": "combolist1",
350 270 "annotation": {
351 271 "annotationflags": 4,
352   - "appearancestate": "/Off",
353   - "object": "18 0 R"
  272 + "appearancestate": "",
  273 + "object": "13 0 R"
354 274 },
355   - "choices": [],
356   - "defaultvalue": "/Off",
357   - "fieldflags": 0,
358   - "fieldtype": "/Btn",
359   - "fullname": "Language 3 Check Box",
360   - "ischeckbox": true,
361   - "ischoice": false,
  275 + "choices": [
  276 + "one",
  277 + "two",
  278 + "pi",
  279 + "four"
  280 + ],
  281 + "defaultvalue": "",
  282 + "fieldflags": 393216,
  283 + "fieldtype": "/Ch",
  284 + "fullname": "combolist1",
  285 + "ischeckbox": false,
  286 + "ischoice": true,
362 287 "isradiobutton": false,
363 288 "istext": false,
364   - "mappingname": "Language 3 Check Box",
365   - "object": "18 0 R",
  289 + "mappingname": "combolist1",
  290 + "object": "13 0 R",
366 291 "pageposfrom1": 1,
367 292 "parent": null,
368   - "partialname": "Language 3 Check Box",
  293 + "partialname": "combolist1",
369 294 "quadding": 0,
370   - "value": "/Off"
  295 + "value": "pi"
371 296 },
372 297 {
373   - "alternativename": "Language 4 Check Box",
  298 + "alternativename": "list1",
374 299 "annotation": {
375 300 "annotationflags": 4,
376   - "appearancestate": "/Off",
377   - "object": "19 0 R"
  301 + "appearancestate": "",
  302 + "object": "11 0 R"
378 303 },
379   - "choices": [],
380   - "defaultvalue": "/Off",
  304 + "choices": [
  305 + "five",
  306 + "six",
  307 + "seven",
  308 + "eight"
  309 + ],
  310 + "defaultvalue": "",
381 311 "fieldflags": 0,
382   - "fieldtype": "/Btn",
383   - "fullname": "Language 4 Check Box",
384   - "ischeckbox": true,
385   - "ischoice": false,
  312 + "fieldtype": "/Ch",
  313 + "fullname": "list1",
  314 + "ischeckbox": false,
  315 + "ischoice": true,
386 316 "isradiobutton": false,
387 317 "istext": false,
388   - "mappingname": "Language 4 Check Box",
389   - "object": "19 0 R",
  318 + "mappingname": "list1",
  319 + "object": "11 0 R",
390 320 "pageposfrom1": 1,
391 321 "parent": null,
392   - "partialname": "Language 4 Check Box",
  322 + "partialname": "list1",
393 323 "quadding": 0,
394   - "value": "/Off"
  324 + "value": "five"
395 325 },
396 326 {
397   - "alternativename": "Language 5 Check Box",
  327 + "alternativename": "drop1",
398 328 "annotation": {
399 329 "annotationflags": 4,
400   - "appearancestate": "/Off",
401   - "object": "20 0 R"
  330 + "appearancestate": "",
  331 + "object": "12 0 R"
402 332 },
403   - "choices": [],
404   - "defaultvalue": "/Off",
405   - "fieldflags": 0,
406   - "fieldtype": "/Btn",
407   - "fullname": "Language 5 Check Box",
408   - "ischeckbox": true,
409   - "ischoice": false,
  333 + "choices": [
  334 + "nine",
  335 + "ten",
  336 + "elephant",
  337 + "twelve"
  338 + ],
  339 + "defaultvalue": "",
  340 + "fieldflags": 131072,
  341 + "fieldtype": "/Ch",
  342 + "fullname": "drop1",
  343 + "ischeckbox": false,
  344 + "ischoice": true,
410 345 "isradiobutton": false,
411 346 "istext": false,
412   - "mappingname": "Language 5 Check Box",
413   - "object": "20 0 R",
  347 + "mappingname": "drop1",
  348 + "object": "12 0 R",
414 349 "pageposfrom1": 1,
415 350 "parent": null,
416   - "partialname": "Language 5 Check Box",
  351 + "partialname": "drop1",
417 352 "quadding": 0,
418   - "value": "/Off"
  353 + "value": "elephant"
419 354 },
420 355 {
421   - "alternativename": "Select from colour spectrum",
  356 + "alternativename": "combodrop1",
422 357 "annotation": {
423 358 "annotationflags": 4,
424 359 "appearancestate": "",
425   - "object": "21 0 R"
  360 + "object": "14 0 R"
426 361 },
427 362 "choices": [
428   - "Black",
429   - "Brown",
430   - "Red",
431   - "Orange",
432   - "Yellow",
433   - "Green",
434   - "Blue",
435   - "Violet",
436   - "Grey",
437   - "White"
  363 + "alpha",
  364 + "beta",
  365 + "gamma",
  366 + "delta"
438 367 ],
439   - "defaultvalue": "Red",
440   - "fieldflags": 131072,
  368 + "defaultvalue": "",
  369 + "fieldflags": 393216,
441 370 "fieldtype": "/Ch",
442   - "fullname": "Favourite Colour List Box",
  371 + "fullname": "combodrop1",
443 372 "ischeckbox": false,
444 373 "ischoice": true,
445 374 "isradiobutton": false,
446 375 "istext": false,
447   - "mappingname": "Select from colour spectrum",
448   - "object": "21 0 R",
  376 + "mappingname": "combodrop1",
  377 + "object": "14 0 R",
449 378 "pageposfrom1": 1,
450 379 "parent": null,
451   - "partialname": "Favourite Colour List Box",
  380 + "partialname": "combodrop1",
452 381 "quadding": 0,
453   - "value": "Blue"
  382 + "value": "delta"
454 383 }
455 384 ],
456 385 "hasacroform": true,
... ...
qpdf/qtest/qpdf/need-appearances-out.pdf
No preview for this file type
qpdf/qtest/qpdf/need-appearances-warn.out
1   -WARNING: need-appearances.pdf object stream 1, object 2 0 at offset 438: document does not have updated appearance streams, so form fields will not be flattened
  1 +WARNING: need-appearances.pdf, object 1 0 at offset 50: document does not have updated appearance streams, so form fields will not be flattened
2 2 qpdf: operation succeeded with warnings; resulting file may have some problems
... ...
qpdf/qtest/qpdf/need-appearances.pdf
No preview for this file type