1.92.20 as of 19. Dec 2023:

+ Build Platform is now Debian, also tested on Ubuntu.

+ This release focuses on security: Security fixes and additional runtime checks, especially for malformed fonts in source.

+ Updates for used libraries, fixing several CVEs

+ MacOS version also supports ARM64/x86_x64 (MacOS 12+)

- New option to write paths (for stroke/fill) better compressible:

    -M optPathSize
    
  Also combine with -a 1 for even smaller output size. Path will then be written 'relative' to their start point. 
  This helps especially for longer paths e.g. CAD drawings and can yield significantly lower file size for such filetypes.

- New mode to generate color corrected RGB images using -M genJPG or -M genPNGA
    
    -M directImageConvert (use together with the -M genXXX option)
 
  This will speedup conversion in case a CMYK profile is used for color conversion with option
  -M cmykprofile=.... It has no effect if no ICC color conversion are used or direct image
  conversion is done.

- Fixed ArtBox handling in output, ArtBox is now omited if a TrimBox was used for PDF/X.

- PDF-to-PDF/X4 converter now autocorrects more invalid colorspaces and auto-rewrite them to DeviceCMYK Alternates.
 
- Reworked AltText interface to make selection easier in Acrobat Reader. Now single glyphs are
  wrapped into AltText sections and proxy text is scaled accordingly when texts are turned to outlines.

+ Fixed conversion of Adobe Illustrator EPS containing two byte Type42 CID fonts (e.g. Japanese, Chinese, Korean fonts).  

  Previously these EPS/AI files caused an error / abort and incomplete processing.
- Added check for transparency by CA/ca when drawing forms and active -M optimizeFlattening option.
  This fixes a case when a form was drawn as first element and the transparency was not take over.

+ Fixed PDF to image renderer, small lines could disappear at low DPI setting and aliasing on

+ Fixed PDF to image renderer, now PDFs using newer encrption schemes (AES) are supported.

 - Reverted back to JPEGLIB 9d as 9e seems to cause issues with some CMYK JPEG in PDF streams.
  The CVE associated with 9d are not relevent to PStill as the GIF-tools of the library are not
  used.

+ Increased VMStackSize to 192 entries for interpreter, allowing for more complex sources to process

- PDF-to-PDF/X4 converter - also autocorrects invalid Separation colorspaces (ICCBased not allowed
  for PDF/X-4) and auto-rewrite them to DeviceCMYK Alternates.

- Fix: VisualC 2017 DLL version could crash (segment violation) due to buffer underflow in certain circumstances:
  - PDF must be produced (rendering/structout was uneffected)
  - The source file must not have fonts embedded
  - The font must be installed in PSFonts

  The workaround was to enable option -Q (prefer installed fonts)
  Previous versions were not effected (VC2012 builds)
 
  (Case: N14APR2020 1-3, closed)
 
+ Fix: VisualC 2017 version could crash for very complex files, that produce lots of elements. This is due to an issue
  in the MS Unified Runtime for 2015/2017/2019 that causes issues when HeapAlloc() is mixed with normal malloc()
  in the same heap and lots of small allocations are done. Previous versions were not effected (VC2012 builds),
  on all platforms also the crashes only happen on Windows 10 19xxx version/11, not Windows 8 and 7.
 
  This version does revert to the older malloc based allocator, thus resolves the issue.
 
  (Case: N14APR2020 4, closed)
 
- Fix: x64 versions (all versions) could crash (segement violation) due to a miss-casted pointer access (32/64):
   - PDF must be produced (rendering and Structout was uneffected)
   - The source file must contain pdfmarks defining an outline structure (which is never the case for EPS)
   - The loaded memory location of the DLL must be above 4 GB in memory
 
+ Tiny tiling pattern that draw excessively large are now auto-scaled to 8-times size (Case LW20F006 and others)

- Option for direct white space removal for PDF: -M pageclip=auto - when directly set a pot. clipping box offset was
  not taken into account, fixed.
 
- New option to control automatic whitespace removal for PDF sources: -M cliplimits=UDLR
  (U == Keep Up space, D = Keep Down space, L = Keep Left space, R = Keep Right space)
 
+ Fix: PDF with CalRGB images with changed white point will now be taken over correctly

- Automatic lossless-sensible detection turned off as in too many cases it provided a wrong prediction. When PDF JPEG
  compression is selected, it is applied now to any image larger > 16 x 16 pix, except transcoded flattening.
  this will generate smaller output in most cases.
 
- Fix: Size of inline images (-M inlineLimit=xxxx) are now recalculated to width x height x colorspace - disregarding
  any provided size from the source. This fixes issues when the provided source size is too long, which would cause
  a error for inline images but not for std. images.

+ Fix: Spotcolors could be written/reported, even if option -m Xspot was not provided. They did not draw in the source but could cause
  larger output size and unneeded spot color usage in generated data.
 
- Changed CMap conversion. Now CMap with ranges 00-ff are taken over directly.

- New option for automatic whitespace removeable (PDF sources to PDF output):

    -M pageclip=auto,direct
    
  a border can be added by the fudge setting (in pts):  
 
      -M pageclip=auto,direct,fudge=-0.06

- New Option for smaller output (from PDF sources), can be used instead of -M transmode=5:

    -M shadesLow

generates (CMYK) shadings in low res. Useful to create PDF for ePaper purposes (smaller size).

- Fix: Pot. Overflow in PDF CMap parser in PDF backend

+ Added new image modes for raster call, please check if you write TIFF that the quality parameter is set accordingly!

Previously the quality parameter was only used for JPEG output (image output type 0), now it also defines compression
for Gray, RGB and CMYK TIFF. For these a quality of 0 defines Deflate Compression, quality 1 defines LZW Compression
and anything in the range 2 to 100 defines the JPEG quality factor for JPEG-in-TIFF compression.

Also single file types (all pages kept in one TIFF image) are now possible.

onochrome TIFF output always defaults to CCITT Fax G4 as before.

/*  Main raster to image file call
    srcpdffilename = source PDF file name
    destimgfilebase = destination image name base (file extension is added automatically)
    image output type 0 == JPEG RGB, type 1 == TIFF RGB, type 2 == TIFF CMYK, type 3 = PNG RGB/Alpha, type 4 == BMP,
    type 5 == TIFF G4 (Single file), type 6 == TIFF RGB (Single file), type 7 == TIFF CMYK (single file)
    quality = jpeg quality 1 - 99 (only used for type 0, for TIFF 0 == FlateCompression, 1 == LZW, >1 and <100 TIFF-JPEG compression)
    dpi = output dpi, min 1, max 400 (std. version, Pro version 800 dpi)
    startpagenum = first page to render (0 to render complete document)
    endpagenum = last page to render, if 0 and startpagenum is > 0 the rest of the document is rendered

    Note: If you add 10 to the image output type (e.g. 12 instead of 2 for TIFF CMYK) antialising is used to generate a better looking output,
    however there is no effect for type 5 (TIFF G4) as B/W cannot be antialiased
*/

PSTILLDLL_API int _stdcall call_pdfraster_conv(char *srcpdffilename, char *destimgfilebase, int imagetype, int quality, int dpi, int startpagenum, int endpagenum);

- New option for PDF generation

      -M writeAltText
     
  Will use the 16-bits values in the source text in Type 0 and CID fonts to generate
  'Actual text', so PDF results contain an alternate respresentation for text search and
  copy&paste operations. Currently two encodings are known (due to lack of test data)
  Identity-H and 90msp_RSJ_H (Japan). Encodings are identified by font name, if the source
  does not do name the fonts accordingly Identity is assumed - then reversely applied so
  the actual text result will be in Unicode.
 
  Currently only 16 bit (CID/Type0) fonts are handled. 8 bit fonts still rely on their
  encoding.
 
  (Case 6. April 2021, file: 0002-f02.eps)
 
  Note: Only some PDF readers (notably Acrobat and Adobe products) can use this alternate text
  represenation. Text selection is also differently. For all other readers the old result is
  extracted.
 
- New option

    -M writePSG2U
    
  will generate additions Glyph2Unicode mappings in the EPS result, which use an undocumented
  Adobe Distiller/Acrobat feature to transport the CMaps in EPS. EPS size will increase.

  (Case 1. Sep 2021, file: 1036665.pdf)
 
- New option

    -M transmode=11
    
  like transmode=10 but also converts shadings using the new 'delta' method
 
- transmode=10 and 11  now generate RGB overlays if option -C (RGB output) is defined
  The default is still CMYK overlays.
 
- New option for PDF generation

    -M pdfClipToBox=#

where # stands for

0   ClipBox (default, like without using option)
1   BleedBox
2   TrimBox
3   ArtBox
4   MediaBox (CropBox wird ignoriert)

Option only has effect for rendering to image using PStill main call.

- New option for transparency generation

    -M transmode=10
 
  Generates output with new 'delta' method. The delta method works by comparing source PDF rendering
  with result PDF rendering and generating a difference overlay for the result. It is an alternate
  method for flattening transparency and can produce finer rendered results.
 
  Limits of current implementation:
 
  -> Currently for single PDF pages (e.g. generating one page PDF or EPS results)
   
  -> Can only be used if the output size is the same as the source size. Any clip or scale option will not work.
    
  -> Can only be used when colors do not change, e.g. gray conversion is not possible.
    
  -> Can only be used for high enough DPI and JPEG quality.
 
 
- New option

    -M cliplimits=UDLR

  where 'UDLR' is build from the following chars

    U = UP   (does not change top border)
    D = DOWN  (does not change lower border)
    L = Left   (does not change left border)
    R = Right  (does not change right border)

   Has only effect with active option -M pageclip=auto
 
 - Tiling Pattern in the size 1x1 with more than 10000 tiles now will be up-scaled to reduce the number of
   of elements. This will reduce the output size and processing requirements greatly for such cases.
 
+  Setting the temp path can now be done automatically. -T option now can be used as
   
   -T @auto@
   
   which provides a unique (for the calling process, by getpid()) TMP environment. Also
   cleanup is then automatic after processing.
 
-  Fix: When processing PDF to PDF in some cases not all CMaps where transported. This happend if several
   instances of the same font where in the source PDF. Now the CMaps are properly transported.
 
 - Fix: when whitespace detection and removeal did not detect a white border at all sides it was not
   applied. Now it is.
 
- Fix: For option pageclip=auto - Crop box was not taken into account, now it is.
