Commit fb86d2819e2f75abb084da8ff910a12d5b5382e6
1 parent
8fc453b7
Clean up 10.2 release notes
Showing
1 changed file
with
60 additions
and
65 deletions
manual/qpdf-manual.xml
| @@ -5071,6 +5071,19 @@ print "\n"; | @@ -5071,6 +5071,19 @@ print "\n"; | ||
| 5071 | <itemizedlist> | 5071 | <itemizedlist> |
| 5072 | <listitem> | 5072 | <listitem> |
| 5073 | <para> | 5073 | <para> |
| 5074 | + Operations that work on combining pages are much better | ||
| 5075 | + about protecting form fields. In particular, | ||
| 5076 | + <option>--split-pages</option> and <option>--pages</option> | ||
| 5077 | + now preserve interaction form functionality by copying the | ||
| 5078 | + relevant form field information from the original files. | ||
| 5079 | + Additionally, if you use <option>--pages</option> to select | ||
| 5080 | + only some pages from the original input file, unused form | ||
| 5081 | + fields are removed, which prevents lots of unused | ||
| 5082 | + annotations from being retained. | ||
| 5083 | + </para> | ||
| 5084 | + </listitem> | ||
| 5085 | + <listitem> | ||
| 5086 | + <para> | ||
| 5074 | By default, <command>qpdf</command> no longer allows | 5087 | By default, <command>qpdf</command> no longer allows |
| 5075 | creation of encrypted PDF files whose user password is | 5088 | creation of encrypted PDF files whose user password is |
| 5076 | non-empty and owner password is empty when a 256-bit key is | 5089 | non-empty and owner password is empty when a 256-bit key is |
| @@ -5145,6 +5158,23 @@ print "\n"; | @@ -5145,6 +5158,23 @@ print "\n"; | ||
| 5145 | </listitem> | 5158 | </listitem> |
| 5146 | <listitem> | 5159 | <listitem> |
| 5147 | <para> | 5160 | <para> |
| 5161 | + Page splitting and merging operations, as well as | ||
| 5162 | + <option>--flatten-rotation</option>, are better behaved | ||
| 5163 | + with respect to annotations and interactive form fields. In | ||
| 5164 | + most cases, interactive form field functionality and proper | ||
| 5165 | + formatting and functionality of annotations is preserved by | ||
| 5166 | + these operations. There are still some cases that aren't | ||
| 5167 | + perfect, such as when functionality of annotations depends | ||
| 5168 | + on document-level data that qpdf doesn't yet understand or | ||
| 5169 | + when there are problems with referential integrity among | ||
| 5170 | + form fields and annotations (e.g., when a single form field | ||
| 5171 | + object or its associated annotations are shared across | ||
| 5172 | + multiple pages, a case that is out of spec but that works in | ||
| 5173 | + most viewers anyway). | ||
| 5174 | + </para> | ||
| 5175 | + </listitem> | ||
| 5176 | + <listitem> | ||
| 5177 | + <para> | ||
| 5148 | The option | 5178 | The option |
| 5149 | <option>--password-file=<replaceable>filename</replaceable></option> | 5179 | <option>--password-file=<replaceable>filename</replaceable></option> |
| 5150 | can now be used to read the decryption password from a file. | 5180 | can now be used to read the decryption password from a file. |
| @@ -5190,6 +5220,15 @@ print "\n"; | @@ -5190,6 +5220,15 @@ print "\n"; | ||
| 5190 | <itemizedlist> | 5220 | <itemizedlist> |
| 5191 | <listitem> | 5221 | <listitem> |
| 5192 | <para> | 5222 | <para> |
| 5223 | + This release includes numerous additions to the API. Not all | ||
| 5224 | + changes are listed here. Please see the | ||
| 5225 | + <filename>ChangeLog</filename> file in the source | ||
| 5226 | + distribution for a comprehensive list. Highlights appear | ||
| 5227 | + below. | ||
| 5228 | + </para> | ||
| 5229 | + </listitem> | ||
| 5230 | + <listitem> | ||
| 5231 | + <para> | ||
| 5193 | Add <function>QPDFObjectHandle::ditems()</function> and | 5232 | Add <function>QPDFObjectHandle::ditems()</function> and |
| 5194 | <function>QPDFObjectHandle::aitems()</function> that enable | 5233 | <function>QPDFObjectHandle::aitems()</function> that enable |
| 5195 | C++-style iteration, including range-for iteration, over | 5234 | C++-style iteration, including range-for iteration, over |
| @@ -5208,14 +5247,6 @@ print "\n"; | @@ -5208,14 +5247,6 @@ print "\n"; | ||
| 5208 | </listitem> | 5247 | </listitem> |
| 5209 | <listitem> | 5248 | <listitem> |
| 5210 | <para> | 5249 | <para> |
| 5211 | - Add <function>QUtil::get_current_qpdf_time</function>, | ||
| 5212 | - <function>QUtil::pdf_time_to_qpdf_time</function>, and | ||
| 5213 | - <function>QUtil::qpdf_time_to_pdf_time</function> for | ||
| 5214 | - working with PDF timestamp strings. | ||
| 5215 | - </para> | ||
| 5216 | - </listitem> | ||
| 5217 | - <listitem> | ||
| 5218 | - <para> | ||
| 5219 | Add new helper classes for supporting file attachments, also | 5250 | Add new helper classes for supporting file attachments, also |
| 5220 | known as embedded files. New classes are | 5251 | known as embedded files. New classes are |
| 5221 | <classname>QPDFEmbeddedFileDocumentHelper</classname>, | 5252 | <classname>QPDFEmbeddedFileDocumentHelper</classname>, |
| @@ -5228,19 +5259,6 @@ print "\n"; | @@ -5228,19 +5259,6 @@ print "\n"; | ||
| 5228 | </listitem> | 5259 | </listitem> |
| 5229 | <listitem> | 5260 | <listitem> |
| 5230 | <para> | 5261 | <para> |
| 5231 | - Add <function>warn</function> to | ||
| 5232 | - <classname>QPDF</classname>'s public API. | ||
| 5233 | - </para> | ||
| 5234 | - </listitem> | ||
| 5235 | - <listitem> | ||
| 5236 | - <para> | ||
| 5237 | - <function>QPDFObjectHandle::is*</function> methods now return | ||
| 5238 | - false rather than crashing when called with an uninitialized | ||
| 5239 | - <classname>QPDFObjectHandle</classname> object. | ||
| 5240 | - </para> | ||
| 5241 | - </listitem> | ||
| 5242 | - <listitem> | ||
| 5243 | - <para> | ||
| 5244 | Add a version of | 5262 | Add a version of |
| 5245 | <function>QPDFObjectHandle::parse</function> that takes a | 5263 | <function>QPDFObjectHandle::parse</function> that takes a |
| 5246 | <classname>QPDF</classname> pointer as context so that it | 5264 | <classname>QPDF</classname> pointer as context so that it |
| @@ -5261,29 +5279,13 @@ print "\n"; | @@ -5261,29 +5279,13 @@ print "\n"; | ||
| 5261 | </listitem> | 5279 | </listitem> |
| 5262 | <listitem> | 5280 | <listitem> |
| 5263 | <para> | 5281 | <para> |
| 5264 | - Add new functions <function>QUtil::pipe_file</function> and | ||
| 5265 | - <function>QUtil::file_provider</function> for sending the | ||
| 5266 | - contents of a file through a pipeline as binary data. | ||
| 5267 | - </para> | ||
| 5268 | - </listitem> | ||
| 5269 | - <listitem> | ||
| 5270 | - <para> | ||
| 5271 | Add new versions of | 5282 | Add new versions of |
| 5272 | <function>QPDFObjectHandle::replaceStreamData</function> | 5283 | <function>QPDFObjectHandle::replaceStreamData</function> |
| 5273 | that take <classname>std::function</classname> objects for | 5284 | that take <classname>std::function</classname> objects for |
| 5274 | cases when you need something between a static string and a | 5285 | cases when you need something between a static string and a |
| 5275 | full-fledged StreamDataProvider. Using this with | 5286 | full-fledged StreamDataProvider. Using this with |
| 5276 | - QUtil::file_provider is a very easy way to create a stream | ||
| 5277 | - from the contents of a file. | ||
| 5278 | - </para> | ||
| 5279 | - </listitem> | ||
| 5280 | - <listitem> | ||
| 5281 | - <para> | ||
| 5282 | - Add option to <function>QUtil::double_to_string</function> | ||
| 5283 | - to trim trailing zeroes, which is on by default. Within the | ||
| 5284 | - qpdf library, this causes changes to output the from code | ||
| 5285 | - that places form XObjects and the code that flattens | ||
| 5286 | - rotations. | 5287 | + <function>QUtil::file_provider</function> is a very easy way |
| 5288 | + to create a stream from the contents of a file. | ||
| 5287 | </para> | 5289 | </para> |
| 5288 | </listitem> | 5290 | </listitem> |
| 5289 | <listitem> | 5291 | <listitem> |
| @@ -5292,28 +5294,19 @@ print "\n"; | @@ -5292,28 +5294,19 @@ print "\n"; | ||
| 5292 | private, internal class, has been added to the public API. | 5294 | private, internal class, has been added to the public API. |
| 5293 | See <filename>include/qpdf/QPDFMatrix.hh</filename> for | 5295 | See <filename>include/qpdf/QPDFMatrix.hh</filename> for |
| 5294 | details. This class is for working with transformation | 5296 | details. This class is for working with transformation |
| 5295 | - matrices. | 5297 | + matrices. Some methods in |
| 5298 | + <classname>QPDFPageObjectHelper</classname> make use of this | ||
| 5299 | + to make information about transformation matrices available. | ||
| 5300 | + For an example, see | ||
| 5301 | + <filename>examples/pdf-overlay-page.cc</filename>. | ||
| 5296 | </para> | 5302 | </para> |
| 5297 | </listitem> | 5303 | </listitem> |
| 5298 | <listitem> | 5304 | <listitem> |
| 5299 | <para> | 5305 | <para> |
| 5300 | - Add | ||
| 5301 | - <function>QPDFPageObjectHelper::getMatrixForFormXObjectPlacement</function>, | ||
| 5302 | - which returns the transformation matrix required to map from | ||
| 5303 | - a form field's coordinate system into a specific rectangle | ||
| 5304 | - within the page. Also add a version of | ||
| 5305 | - <function>QPDFPageObjectHelper::placeFormXObject</function> | ||
| 5306 | - that initializes a <classname>QPDFMatrix</classname> | ||
| 5307 | - reference. For example, see | ||
| 5308 | - <filename>examples/pdf-overlay-page.cc</filename>. | ||
| 5309 | - </para> | ||
| 5310 | - </listitem> | ||
| 5311 | - <listitem> | ||
| 5312 | - <para> | ||
| 5313 | - Add method | ||
| 5314 | - <function>QPDFAcroFormDocumentHelper::addFormField</function>, | ||
| 5315 | - which adds a new form field, initializing the AcroForm | ||
| 5316 | - dictionary if needed. | 5306 | + Several new methods were added to |
| 5307 | + <classname>QPDFAcroFormDocumentHelper</classname> for | ||
| 5308 | + adding, removing, getting information about, and enumerating | ||
| 5309 | + form fields. | ||
| 5317 | </para> | 5310 | </para> |
| 5318 | </listitem> | 5311 | </listitem> |
| 5319 | <listitem> | 5312 | <listitem> |
| @@ -5332,12 +5325,6 @@ print "\n"; | @@ -5332,12 +5325,6 @@ print "\n"; | ||
| 5332 | rectangles. | 5325 | rectangles. |
| 5333 | </para> | 5326 | </para> |
| 5334 | </listitem> | 5327 | </listitem> |
| 5335 | - <listitem> | ||
| 5336 | - <para> | ||
| 5337 | - Add <function>QUtil::path_basename</function> to return the | ||
| 5338 | - last element of a path. | ||
| 5339 | - </para> | ||
| 5340 | - </listitem> | ||
| 5341 | </itemizedlist> | 5328 | </itemizedlist> |
| 5342 | </listitem> | 5329 | </listitem> |
| 5343 | <listitem> | 5330 | <listitem> |
| @@ -5362,7 +5349,7 @@ print "\n"; | @@ -5362,7 +5349,7 @@ print "\n"; | ||
| 5362 | <itemizedlist> | 5349 | <itemizedlist> |
| 5363 | <listitem> | 5350 | <listitem> |
| 5364 | <para> | 5351 | <para> |
| 5365 | - The <option>--flatten-rotations</option> option applies | 5352 | + The <option>--flatten-rotation</option> option applies |
| 5366 | transformations to any annotations that may be on the page. | 5353 | transformations to any annotations that may be on the page. |
| 5367 | </para> | 5354 | </para> |
| 5368 | </listitem> | 5355 | </listitem> |
| @@ -5373,7 +5360,15 @@ print "\n"; | @@ -5373,7 +5360,15 @@ print "\n"; | ||
| 5373 | containing page. This is compliant with older PDF versions. | 5360 | containing page. This is compliant with older PDF versions. |
| 5374 | Also detect if any form XObjects have any unresolved names | 5361 | Also detect if any form XObjects have any unresolved names |
| 5375 | and, if so, don't remove unreferenced resources from them or | 5362 | and, if so, don't remove unreferenced resources from them or |
| 5376 | - from the page that contains them. | 5363 | + from the page that contains them. Unfortunately this has the |
| 5364 | + side effect of preventing removal of unreferenced resources | ||
| 5365 | + in some cases where names appear that don't refer to | ||
| 5366 | + resources, such as with tagged PDF. This is a bit of a | ||
| 5367 | + corner case that is not likely to cause a significant | ||
| 5368 | + problem in practice, but the only side effect would be lack | ||
| 5369 | + of removal of shared resources. A future version of qpdf may | ||
| 5370 | + be more sophisticated in its detection of names that refer | ||
| 5371 | + to resources. | ||
| 5377 | </para> | 5372 | </para> |
| 5378 | </listitem> | 5373 | </listitem> |
| 5379 | <listitem> | 5374 | <listitem> |