-
Instead of directly putting the contents of the annotation appearance streams into the page's content stream, add commands to render the form xobjects directly. This is a more robust way to do it than the original solution as it works properly with patterns and avoids problems with resource name clashes between the pages and the form xobjects.
-
Flatten annotations by integrating their appearance streams into the content stream of the containing page. In the case of form fields, only flatten if /NeedAppearance is false (or equivalently absent). If flattening form fields, also remove /AcroForm from the document catalog.
-
When @file is used and file doesn't exist, just treat it as a normal argument.
-
Wrap an object in an array if it is not already an array.
-
Use free Azure Pipelines to do Linux, Windows, and Mac build and test and to generate Windows binary distributions.
-
Rather than keeping a list of buffers for every write, accumulate bytes in a single buffer, doubling the size of the buffer when needed to accommodate new data. This is not the best possible implementation, but the change was implemented in this way to avoid changing the shape of Pl_Buffer and thus breaking backward compatibility.
-
CR, CRLF, and LF are all supposed to be treated as LF; only one EOL is to be ignored after backslash.
-
Turns out you can keep adding zero to a number over and over again and it just doesn't get any bigger. Who would have known?
-
During periods of intensive operation on a specific file, this method can reduce the overhead of repeated open/close operations.
-
ClosedFileInputSource is an input source that keeps the file closed when not reading it.