Commit fb86d2819e2f75abb084da8ff910a12d5b5382e6

Authored by Jay Berkenbilt
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 &quot;\n&quot;; @@ -5145,6 +5158,23 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5190,6 +5220,15 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5208,14 +5247,6 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5228,19 +5259,6 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5261,29 +5279,13 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5292,28 +5294,19 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5332,12 +5325,6 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5362,7 +5349,7 @@ print &quot;\n&quot;;
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 &quot;\n&quot;; @@ -5373,7 +5360,15 @@ print &quot;\n&quot;;
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>