Commit 3416c60fe9ec4a6ad5c1e08a757bd63a4699a5a5
1 parent
58b08ca6
save pass1 patch
git-svn-id: svn+q:///qpdf/trunk@931 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing
1 changed file
with
48 additions
and
6 deletions
TODO
| 1 | -2.1 | ||
| 2 | -=== | ||
| 3 | - | ||
| 4 | - * Remove rc1 from version; search for rc1 in release notes as | ||
| 5 | - well...just change rc1 to 2.1 and update the date. | ||
| 6 | - | ||
| 7 | 2.2 | 1 | 2.2 |
| 8 | === | 2 | === |
| 9 | 3 | ||
| @@ -21,6 +15,54 @@ | @@ -21,6 +15,54 @@ | ||
| 21 | General | 15 | General |
| 22 | ======= | 16 | ======= |
| 23 | 17 | ||
| 18 | + * For debugging linearization bugs, consider adding an option to save | ||
| 19 | + pass 1 of linearization. This code is sufficient. Change the | ||
| 20 | + interface to allow specification of a pass1 file, which would | ||
| 21 | + change the behavior as in this patch. | ||
| 22 | + | ||
| 23 | +------------------------------ | ||
| 24 | +Index: QPDFWriter.cc | ||
| 25 | +=================================================================== | ||
| 26 | +--- QPDFWriter.cc (revision 920) | ||
| 27 | ++++ QPDFWriter.cc (working copy) | ||
| 28 | +@@ -1958,11 +1960,15 @@ | ||
| 29 | + | ||
| 30 | + // Write file in two passes. Part numbers refer to PDF spec 1.4. | ||
| 31 | + | ||
| 32 | ++ FILE* XXX = 0; | ||
| 33 | + for (int pass = 1; pass <= 2; ++pass) | ||
| 34 | + { | ||
| 35 | + if (pass == 1) | ||
| 36 | + { | ||
| 37 | +- pushDiscardFilter(); | ||
| 38 | ++// pushDiscardFilter(); | ||
| 39 | ++ XXX = fopen("/tmp/pass1.pdf", "w"); | ||
| 40 | ++ pushPipeline(new Pl_StdioFile("pass1", XXX)); | ||
| 41 | ++ activatePipelineStack(); | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + // Part 1: header | ||
| 45 | +@@ -2037,7 +2043,8 @@ | ||
| 46 | + t_lin_first, first_half_start, first_half_end, | ||
| 47 | + first_trailer_size, | ||
| 48 | + hint_length + second_xref_offset, | ||
| 49 | +- hint_id, hint_offset, hint_length); | ||
| 50 | ++ hint_id, hint_offset, hint_length, | ||
| 51 | ++ (pass == 1)); | ||
| 52 | + int endpos = this->pipeline->getCount(); | ||
| 53 | + if (pass == 1) | ||
| 54 | + { | ||
| 55 | +@@ -2187,6 +2194,8 @@ | ||
| 56 | + | ||
| 57 | + // Restore hint offset | ||
| 58 | + this->xref[hint_id] = QPDFXRefEntry(1, hint_offset, 0); | ||
| 59 | ++ fclose(XXX); | ||
| 60 | ++ XXX = 0; | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | +------------------------------ | ||
| 65 | + | ||
| 24 | * Handle embedded files. PDF Reference 1.7 section 3.10, "File | 66 | * Handle embedded files. PDF Reference 1.7 section 3.10, "File |
| 25 | Specifications", discusses this. Once we can definitely recongize | 67 | Specifications", discusses this. Once we can definitely recongize |
| 26 | all embedded files in a docucment, we can update the encryption | 68 | all embedded files in a docucment, we can update the encryption |