Commit 195ddf6f5a6b9cec458fcecaffc42be2188243d5

Authored by Jay Berkenbilt
1 parent 3d2d75cf

Manual: convert more lists to tables

Showing 1 changed file with 117 additions and 54 deletions
manual/encryption.rst
... ... @@ -114,44 +114,69 @@ Algorithm parameters ``V`` and ``R``
114 114 encrypting the file, handling keys, etc. It may have any of the
115 115 following values:
116 116  
117   - - 1: The original algorithm, which encrypted files using 40-bit keys.
118   -
119   - - 2: An extension of the original algorithm allowing longer keys.
120   - Introduced in PDF 1.4.
121   -
122   - - 3: An unpublished algorithm that permits file encryption key
123   - lengths ranging from 40 to 128 bits. Introduced in PDF 1.4. qpdf
124   - is believed to be able to read files with ``V`` = 3 but does not
125   - write such files.
126   -
127   - - 4: An extension of the algorithm that allows it to be
128   - parameterized by additional rules for handling strings and
129   - streams. Introduced in PDF 1.5.
130   -
131   - - 5: An algorithm that allows specification of separate security
132   - handlers for strings and streams as well as embedded files, and
133   - which supports 256-bit keys. Introduced in PDF 1.7 extension level
134   - 3 and later extended in extension level 8. This is the encryption
135   - system in the PDF 2.0 specification, ISO-32000.
  117 + .. list-table:: Encryption Algorithms: ``V``
  118 + :widths: 10 80
  119 + :header-rows: 1
  120 +
  121 + - - V
  122 + - Meaning
  123 +
  124 + - - 1
  125 + - The original algorithm, which encrypted files using 40-bit keys.
  126 +
  127 + - - 2
  128 + - An extension of the original algorithm allowing longer keys.
  129 + Introduced in PDF 1.4.
  130 +
  131 + - - 3
  132 + - An unpublished algorithm that permits file encryption key
  133 + lengths ranging from 40 to 128 bits. Introduced in PDF 1.4.
  134 + qpdf is believed to be able to read files with ``V`` = 3 but
  135 + does not write such files.
  136 +
  137 + - - 4
  138 + - An extension of the algorithm that allows it to be
  139 + parameterized by additional rules for handling strings and
  140 + streams. Introduced in PDF 1.5.
  141 +
  142 + - - 5
  143 + - An algorithm that allows specification of separate security
  144 + handlers for strings and streams as well as embedded files,
  145 + and which supports 256-bit keys. Introduced in PDF 1.7
  146 + extension level 3 and later extended in extension level 8.
  147 + This is the encryption system in the PDF 2.0 specification,
  148 + ISO-32000.
136 149  
137 150 ``R`` is a code specifying the revision of the standard handler. It
138 151 is tightly coupled with the value of ``V``. ``R`` may have any of
139 152 the following values:
140 153  
141   - - 2: ``V`` must be 1
  154 + .. list-table:: Relationship between ``R`` and ``V``
  155 + :widths: 10 80
  156 + :header-rows: 1
142 157  
143   - - 3: ``V`` must be 2 or 3
  158 + - - R
  159 + - Expected V
144 160  
145   - - 4: ``V`` must be 4
  161 + - - 2
  162 + - ``V`` must be 1
146 163  
147   - - 5: ``V`` must be 5; this extension was never fully specified and
148   - existed for a short time in some versions of Acrobat.
149   - :command:`qpdf` is able to read and write this format, but it
150   - should not be used for any purpose other than testing
151   - compatibility with the format.
  164 + - - 3
  165 + - ``V`` must be 2 or 3
152 166  
153   - - 6: ``V`` must be 5. This is the only value that is not deprecated
154   - in the PDF 2.0 specification, ISO-32000.
  167 + - - 4
  168 + - ``V`` must be 4
  169 +
  170 + - - 5
  171 + - ``V`` must be 5; this extension was never fully specified and
  172 + existed for a short time in some versions of Acrobat.
  173 + :command:`qpdf` is able to read and write this format, but it
  174 + should not be used for any purpose other than testing
  175 + compatibility with the format.
  176 +
  177 + - - 6
  178 + - ``V`` must be 5. This is the only value that is not
  179 + deprecated in the PDF 2.0 specification, ISO-32000.
155 180  
156 181 Encryption Dictionary
157 182 Encrypted PDF files have an encryption dictionary. There are several
... ... @@ -203,12 +228,12 @@ However, the values of bits other than those in the table are ignored,
203 228 so having incorrect values probably doesn't break anything in most
204 229 cases. A value of 1 indicates that the permission is granted.
205 230  
206   -.. list-table:: P Parameter
  231 +.. list-table:: ``P`` Bit Values
207 232 :widths: 10 80
208 233 :header-rows: 1
209 234  
210   - - - bit
211   - - meaning
  235 + - - Bit
  236 + - Meaning
212 237  
213 238 - - 3
214 239 - for ``R`` = 2 printing; for ``R`` >= 3, printing at low
... ... @@ -254,45 +279,83 @@ to ``P`` based on the various settings of different security options.
254 279  
255 280 - Start with all bits set except bits 1 and 2, which are cleared
256 281  
257   -- For ``R`` = 2:
  282 +- Clear bits and described in the table below:
  283 +
  284 + .. list-table:: Command-line Arguments and ``P`` Bit Values
  285 + :widths: 20 25 45
  286 + :header-rows: 1
  287 +
  288 + - - R
  289 + - Argument
  290 + - Bits Cleared
258 291  
259   - - ``--print=n``: clear bit 3
  292 + - - R = 2
  293 + - ``--print=n``
  294 + - 3
260 295  
261   - - ``--modify=n``: clear bit 4
  296 + - - R = 2
  297 + - ``--modify=n``
  298 + - 4
262 299  
263   - - ``--extract=n``: clear bit 5
  300 + - - R = 2
  301 + - ``--extract=n``
  302 + - 5
264 303  
265   - - ``--annotate=n``: clear bit 6
  304 + - - R = 2
  305 + - ``--annotate=n``
  306 + - 6
266 307  
267   -- For ``R >= 3``:
  308 + - - R = 3
  309 + - ``--accessibility=n``
  310 + - 10
268 311  
269   - - ``--accessibility=n``: for ``R`` = 3, clear bit 10; otherwise,
270   - ignore so bit 10 is always clear if ``R`` >= 4. qpdf allows
271   - creating files with bit 10 clear so that it can be used to create
272   - test files to ensure that a conforming reader ignores the value of
273   - the bit. You should never intentionally clear accessibility.
  312 + - - R >= 4
  313 + - ``--accessibility=n``
  314 + - ignored
274 315  
275   - - ``--extract=n``: clear bit 5
  316 + - - R >= 3
  317 + - ``--extract=n``
  318 + - 5
276 319  
277   - - ``--print=none``: clear bits 3 and 12
  320 + - - R >= 3
  321 + - ``--print=none``
  322 + - 3, 12
278 323  
279   - - ``--print=low``: clear bit 12
  324 + - - R >= 3
  325 + - ``--print=low``
  326 + - 12
280 327  
281   - - ``--modify=none``: clear bits 4, 6, 9, and 11
  328 + - - R >= 3
  329 + - ``--modify=none``
  330 + - 4, 6, 9, 11
282 331  
283   - - ``--modify=assembly``: clear bits 4, 6, and 9
  332 + - - R >= 3
  333 + - ``--modify=assembly``
  334 + - 4, 6, 9
284 335  
285   - - ``--modify=form``: clear bits 4 and 6
  336 + - - R >= 3
  337 + - ``--modify=form``
  338 + - 4, 6
286 339  
287   - - ``--modify=annotate``: clear bit 4
  340 + - - R >= 3
  341 + - ``--modify=annotate``
  342 + - 4
288 343  
289   - - ``--assemble=n``: clear bit 11
  344 + - - R >= 3
  345 + - ``--assemble=n``
  346 + - 11
290 347  
291   - - ``--annotate=n``: clear bit 6
  348 + - - R >= 3
  349 + - ``--annotate=n``
  350 + - 6
292 351  
293   - - ``--form=n``: clear bit 9
  352 + - - R >= 3
  353 + - ``--form=n``
  354 + - 9
294 355  
295   - - ``--modify-other=n``: clear bit 4
  356 + - - R >= 3
  357 + - ``--modify-other=n``
  358 + - 4
296 359  
297 360 Options to :command:`qpdf`, both at the CLI and library level, allow
298 361 more granular clearing of permission bits than do most tools,
... ...