Commit 48864b8d6eecc5bbd42029df0e2608621ce7d0bc

Authored by Jay Berkenbilt
1 parent 794b649e

Clarify documentation of advanced parsing options

ChangeLog
1 1 2017-12-25 Jay Berkenbilt <ejb@ql.org>
2 2  
  3 + * Clarify documentation around options that control parsing but
  4 + not output creation. Two options: --suppress-recovery and
  5 + --ignore-xref-streams, were documented in the "Advanced
  6 + Transformation Options" section of the manual and --help output
  7 + even though they are not related to output. These are now
  8 + described in a separate section called "Advanced Parsing Options."
  9 +
3 10 * Implement remaining PNG filters for decode. Prior versions could
4 11 decode only the "up" filter. Now all PNG filters (sub, up,
5 12 average, Paeth, optimal) are supported for decoding. Thanks to
... ...
manual/qpdf-manual.xml
... ... @@ -865,6 +865,56 @@ outfile.pdf&lt;/option&gt;
865 865 to be bothered with.
866 866 </para>
867 867 </sect1>
  868 + <sect1 id="ref.advanced-parsing">
  869 + <title>Advanced Parsing Options</title>
  870 + <para>
  871 + These options control aspects of how qpdf reads PDF files. Mostly
  872 + these are of use to people who are working with damaged files.
  873 + There is little reason to use these options unless you are trying
  874 + to solve specific problems. The following options are available:
  875 + <variablelist>
  876 + <varlistentry>
  877 + <term><option>--suppress-recovery</option></term>
  878 + <listitem>
  879 + <para>
  880 + Prevents qpdf from attempting to recover damaged files.
  881 + </para>
  882 + </listitem>
  883 + </varlistentry>
  884 + <varlistentry>
  885 + <term><option>--ignore-xref-streams</option></term>
  886 + <listitem>
  887 + <para>
  888 + Tells qpdf to ignore any cross-reference streams.
  889 + </para>
  890 + </listitem>
  891 + </varlistentry>
  892 + </variablelist>
  893 + </para>
  894 + <para>
  895 + Ordinarily, qpdf will attempt to recover from certain types of
  896 + errors in PDF files. These include errors in the cross-reference
  897 + table, certain types of object numbering errors, and certain types
  898 + of stream length errors. Sometimes, qpdf may think it has
  899 + recovered but may not have actually recovered, so care should be
  900 + taken when using this option as some data loss is possible. The
  901 + <option>--suppress-recovery</option> option will prevent qpdf from
  902 + attempting recovery. In this case, it will fail on the first
  903 + error that it encounters.
  904 + </para>
  905 + <para>
  906 + Ordinarily, qpdf reads cross-reference streams when they are
  907 + present in a PDF file. If <option>--ignore-xref-streams</option>
  908 + is specified, qpdf will ignore any cross-reference streams for
  909 + hybrid PDF files. The purpose of hybrid files is to make some
  910 + content available to viewers that are not aware of cross-reference
  911 + streams. It is almost never desirable to ignore them. The only
  912 + time when you might want to use this feature is if you are testing
  913 + creation of hybrid PDF files and wish to see how a PDF consumer
  914 + that doesn't understand object and cross-reference streams would
  915 + interpret such a file.
  916 + </para>
  917 + </sect1>
868 918 <sect1 id="ref.advanced-transformation">
869 919 <title>Advanced Transformation Options</title>
870 920 <para>
... ... @@ -976,14 +1026,6 @@ outfile.pdf&lt;/option&gt;
976 1026 </listitem>
977 1027 </varlistentry>
978 1028 <varlistentry>
979   - <term><option>--suppress-recovery</option></term>
980   - <listitem>
981   - <para>
982   - Prevents qpdf from attempting to recover damaged files.
983   - </para>
984   - </listitem>
985   - </varlistentry>
986   - <varlistentry>
987 1029 <term><option>--object-streams=<replaceable>mode</replaceable></option></term>
988 1030 <listitem>
989 1031 <para>
... ... @@ -1013,14 +1055,6 @@ outfile.pdf&lt;/option&gt;
1013 1055 </listitem>
1014 1056 </varlistentry>
1015 1057 <varlistentry>
1016   - <term><option>--ignore-xref-streams</option></term>
1017   - <listitem>
1018   - <para>
1019   - Tells qpdf to ignore any cross-reference streams.
1020   - </para>
1021   - </listitem>
1022   - </varlistentry>
1023   - <varlistentry>
1024 1058 <term><option>--preserve-unreferenced</option></term>
1025 1059 <listitem>
1026 1060 <para>
... ... @@ -1143,17 +1177,6 @@ outfile.pdf&lt;/option&gt;
1143 1177 You should not use this for &ldquo;production&rdquo; PDF files.
1144 1178 </para>
1145 1179 <para>
1146   - Ordinarily, qpdf will attempt to recover from certain types of
1147   - errors in PDF files. These include errors in the cross-reference
1148   - table, certain types of object numbering errors, and certain types
1149   - of stream length errors. Sometimes, qpdf may think it has
1150   - recovered but may not have actually recovered, so care should be
1151   - taken when using this option as some data loss is possible. The
1152   - <option>--suppress-recovery</option> option will prevent qpdf from
1153   - attempting recovery. In this case, it will fail on the first
1154   - error that it encounters.
1155   - </para>
1156   - <para>
1157 1180 Object streams, also known as compressed objects, were introduced
1158 1181 into the PDF specification at version 1.5, corresponding to
1159 1182 Acrobat 6. Some older PDF viewers may not support files with
... ... @@ -1178,18 +1201,6 @@ outfile.pdf&lt;/option&gt;
1178 1201 at least 1.5.
1179 1202 </para>
1180 1203 <para>
1181   - Ordinarily, qpdf reads cross-reference streams when they are
1182   - present in a PDF file. If <option>--ignore-xref-streams</option>
1183   - is specified, qpdf will ignore any cross-reference streams for
1184   - hybrid PDF files. The purpose of hybrid files is to make some
1185   - content available to viewers that are not aware of cross-reference
1186   - streams. It is almost never desirable to ignore them. The only
1187   - time when you might want to use this feature is if you are testing
1188   - creation of hybrid PDF files and wish to see how a PDF consumer
1189   - that doesn't understand object and cross-reference streams would
1190   - interpret such a file.
1191   - </para>
1192   - <para>
1193 1204 The <option>--qdf</option> flag turns on QDF mode, which changes
1194 1205 some of the defaults described above. Specifically, in QDF mode,
1195 1206 by default, stream data is uncompressed, content streams are
... ...
qpdf/qpdf.cc
... ... @@ -355,6 +355,17 @@ valid file name and not a valid range.\n\
355 355 See the manual for examples and a discussion of additional subtleties.\n\
356 356 \n\
357 357 \n\
  358 +Advanced Parsing Options\n\
  359 +-------------------------------\n\
  360 +\n\
  361 +These options control aspects of how qpdf reads PDF files. Mostly these are\n\
  362 +of use to people who are working with damaged files. There is little reason\n\
  363 +to use these options unless you are trying to solve specific problems.\n\
  364 +\n\
  365 +--suppress-recovery prevents qpdf from attempting to recover damaged files\n\
  366 +--ignore-xref-streams tells qpdf to ignore any cross-reference streams\n\
  367 +\n\
  368 +\n\
358 369 Advanced Transformation Options\n\
359 370 -------------------------------\n\
360 371 \n\
... ... @@ -366,9 +377,7 @@ familiar with the PDF file format or who are PDF developers.\n\
366 377 --compress-streams=[yn] controls whether to compress streams on output\n\
367 378 --decode-level=option controls how to filter streams from the input\n\
368 379 --normalize-content=[yn] enables or disables normalization of content streams\n\
369   ---suppress-recovery prevents qpdf from attempting to recover damaged files\n\
370 380 --object-streams=mode controls handing of object streams\n\
371   ---ignore-xref-streams tells qpdf to ignore any cross-reference streams\n\
372 381 --preserve-unreferenced preserve unreferenced objects\n\
373 382 --newline-before-endstream always put a newline before endstream\n\
374 383 --qdf turns on \"QDF mode\" (below)\n\
... ...