Repository navigation
v1.18.2
iwo Helper Desktop v1.18.2
Added
- A compression level that leaves the pictures alone. Between "Excellent — no
compression" and "Good — 150 dpi" there was a cliff: either the file stayed as it was, or
every image in it was recomputed. Most documents need neither — they are already made of
text, and the bytes sit in how the file is put together. "Very good — smaller, image
resolution kept" rebuilds the document without touching a single picture: pages are
re-packed, identical images stored once, leftovers not carried over. Measured on four
documents: 25 % to 48 % smaller at untouched resolution, and on a file built from repeated
images — 136 times smaller.
It is deliberately not called "lossless". The document is rebuilt, and its rendered page
differs from the source by hundredths of a tone; what is guaranteed is the images, and the
label says exactly that and nothing more.
The promise is held by our own arguments (-dDownsample*Images=false), not by the engine's
defaults: the portable build runs on whatever Ghostscript the machine has, and its version
is not ours to assume. - The number of a compression level is now an identifier, not a position. Levels are
stored insettings.txtas numbers, so the new one was appended at the END of the
enumeration even though it belongs in the middle of the list — otherwise everyone who had
picked "Good" would have silently ended up on a different level after updating. The order
shown in the list lives separately, in one place, and a test pins both.
Fixed
-
Grayscale no longer reports success it cannot vouch for. The engine exits with zero
even when part of the content stays coloured — colour arrives through ICC profiles,
palettes and transparency groups, and no list of switches covers all of them in advance.
The result is now looked at: pages are rendered and searched for saturated pixels, and a
document that did not come out grey is not passed off as done. The check can only
disprove — if a page cannot be rendered at all (old Windows, no WinRT), that is not
treated as "still coloured", or the feature would break on the very machines where it
used to work. -
The grayscale switch that documentation asks not to use.
-dProcessColorModel=/DeviceGray
stood next to-sColorConversionStrategy=Graywith a comment claiming both were required.
That knowledge predates Ghostscript 9.11: the docs state the strategy sets the model itself
and that specifying both should be avoided, and bug 693074 is filed on this exact pair
("some images are not converted"). Verified on eight probes — vector, colour JPEG, CMYK,
indexed palette, Separation, transparency group, soft mask, real transparency: the strategy
alone converts all of them, leaving only DeviceGray inside the file. -
Every Ghostscript run is now checked for having kept the document. The old test was the
first five bytes being%PDF-; a stunted output passed it. Now the pages are counted before
and after, and a result that lost or gained pages is rejected — one rule for compression,
grayscale and repair alike, and lenient exactly where there is nothing to compare against
(repair opens a file that is broken by definition).
The pages are counted with PdfPig, not PdfSharp, and that is load-bearing: PdfSharp 1.50
cannot read object streams (PDF 1.5+), which Word and Acrobat write by default, so counting
with it would have turned a healthy compression into "could not compress" on such files. A
live test pins this. -
A silent status when compression gained nothing. Choosing "Compression" in Merge or
Split and getting a plain "Pages saved: 10" left no way to tell whether it had worked.
Requested compression that did not make the file smaller now says so. "More operations"
already did; the other two stayed quiet. -
A page at the format's limit could cost the colour check 400 MB. PDF allows a sheet of
14400 pt at a width of a few, and the check renders by width — so the raster grew to
140 × 672000 pixels. It was not caught by reasoning: on the development machine the system
renderer declines such a page outright and costs nothing, and only the build machine drew
it in full. The renderer now takes an optional ceiling on raster height and the check uses
it: the same sheet costs 19 KB, and — a second gain — it is now actually examined instead
of being silently skipped. Thumbnails and the preview are untouched: their width is given
and a long page simply comes out a narrow strip.
Changed
- The check of a converted file is no longer wired into the compression class: the pipeline
guarantees the document survived, the caller adds what only it can judge — size for
compression, absence of colour for grayscale. Three call sites, one rule each. - The status line no longer names a resolution where none was applied: a level that keeps
the pictures reports "image resolution kept" instead of "images to 0 dpi".
Files: iwoHelperDesktop-1.18.2.exe / iwoHelperDesktop-1.18.2-x86.exe - portable (single file, 64-bit / 32-bit); iwoHelperDesktop-setup-1.18.2.exe / iwoHelperDesktop-setup-1.18.2-x86.exe - installers with bundled Ghostscript (per-user install, no administrator rights). Take x64 unless your Windows is 32-bit.