List of changes in MuPDF 1.6
* Features:
* Color detection device (mudraw -T).
* Sepia mode full-page color tinting in X11 and win32 viewer (keybinding: shift-C).
* Re-implement printf and strtod due to portability issue with locales and number formatting.
* Add 'gsview' project: a Windows Modern UI viewer.
* Improve XML parser interface.
* Bug fixes:
* CBZ page ordering
* ZIP64 support
* iOS and Android bug fixes
* Miscellaneous minor fixes
This is a bugfix release: dozens of bugs have been found and
exterminated!
A typo resulting in a potential stack overflow that could corrupt
files when saving edits to a PDF has been fixed. Another bug which
caused a significant slowdown has also been fixed.
We strongly recommend that you upgrade â especially if you are
using version 1.4.
List of changes on master since MuPDF 1.3
* Headline changes:
* CMYK rendering (mudraw PWG and PAM formats)
* TIFF viewer (with multi-page support).
* Added MuJS Javascript interpreter.
* MuJS is the default, V8 and JavaScriptCore are compile time options.
* Javascript support has to be explicitly enabled with pdf_enable_js.
* All viewers now have JavaScript enabled in the default builds.
* Viewers:
* X11: Horizontal scroll wheel support.
* X11: Status bar display with warnings.
* Android: Digital signatures.
* iOS: Links, form filling, annotation editing, and javascript.
* iOS: Reflow mode.
* WinRT: Printing.
* WinRT: Improved zooming behaviour.
* Tools:
* mudraw: Banded rendering with -B /band-height/.
* mudraw: Select output format with -F /format/.
* mudraw: Write to stdout if you use '-' as the output file name.
* mudraw: Add TGA output format.
* mudraw: Improved SVG output.
* mutool show: Write output to file instead of stdout with -o /filename/.
* mutool clean: Clean content streams with -s option.
* Annotations:
* Improved font handling.
* Form fields.
* Free text.
* Sticky notes.
* Optimizations:
* glyph cache: Partial eviction.
* glyph cache: Run-length compressed glyphs.
* Smarter handling of subpixel metrics in text rendering.
* Optimized blitting functions.
* Optimized gradient mesh drawing.
* API changes and additions:
* fz_stream API reworked: replace "read" function with "next".
* "Rebind" functions to associate context bound objects with another context:
fz_output, fz_stream, fz_device and fz_document.
* Introduce "document handlers" to detect and open different file types.
* Must now call fz_register_document_handlers() to register the defaults.
* May register your own handlers as well to work with fz_open_document.
* Hook to load system fonts: fz_install_load_system_font_funcs.
* PDF xref cache flushing functions (mark/clear/clear-to-mark).
* Add our own "printf" set of functions to format strings and write to fz_output:
* Format %f as short as possible while preserving precision.
* Has %C for formatting a unicode character as UTF-8.
* Has %M to format fz_matrix.
* Has %R to format fz_rect.
* Has %q and %( to format strings with escaped characters.
* PDF process interface: allow PDF interpreter to do more than just draw!
* Content stream state cleaning filter.
* Content stream rewriting filter.
* PDF digital signatures.
* Stroke states may now be stored on the stack.
* Improved fz_path internals.
* Gradient mesh drawing interface has been improved.
* Save files with incremental updates.
=============================================================================
Notes on updating mupdf to mupdf-1.3 (maybe useful for future updates too)
* mupdf-1.3 depends on openjpeg-2.0 (previously mupdf-1.1 depended on
openjpeg-1.5). ${WRKSRC}/Makerules is NOT correct and still looks for
openjpeg-1.5 so patches/patch-ab was modified in order to fix this
behaviour. Please also note the SUBST.makerules class in Makefile.
* mupdf should be build with "build=release" (the default is "build=debug" and
that may be indesiderable for the common user).
* In order to completely disable the building of third party libraries (it is
better to use the ones provided/handled by pkgsrc) a brutal ${RM} -fr completely
remove the ${WRKSRC}/thirdparty directory. For more information please read
${WRKSRC}/Makethird and the post-extract target in Makefile.
* ${WRKSRC}/docs/thirdparty.txt may help for adding correct version of the
dependencies.
* To add libcurl support (www/curl) patches/patch-Makethird was introduced and
patches/patch-ab was modified in order to use pkg-config for
$(SYS_CURL_CFLAGS) and $(SYS_CURL_LIBS).
* By default now mupdf install different binaries, e.g. mupdf-x11 (previous it
was just "mupdf"), mupdf-x11-curl, etc.. In pkgsrc we install *only* the
featureful version of mupdf simply as "mupdf". For more information please
give a look to patches/patch-ac.
=============================================================================
(Upstream) List of changes on master since MuPDF 1.2
* Windows RT viewer app for MuPDF.
* Library changes to support progressive loading (display PDF files as
they download). Windows/Linux/MacOS viewer supports this using curl.
* Incremental updates to PDF files are now (optionally) preserved on
loading/saving.
* Prototype support for checking PDF Digital Signatures.
* Initial annotation support (strike-out, underline, highlight and ink)
(library and android builds only).
* Fix operation on Android API level 8.
* Android redraw optimisations.
* Android app now supports Google Cloud Print.
* Android app translated into many languages.
* Android support for more architectures.
* Improvements to store (avoid collisions causing unnecessary evictions).
* Windows apps use Unicode filenames now.
* PDF function handling improved; functions can now be passed to devices
without 'sampling'.
* PDF image handling improved; images can now be passed to devices
without decompression.
* Indexed images are no longer uncompressed at load time, saving memory.
* Caching of rendered tiles for speed.
* Improved text analysis mode, capable of spotting columns/indents,
right-to-left text etc.
* HTML output mode now includes image output.
* PDF password encoding handling improved.
* MuPDF now opens Jpeg, Tiff and PNG files directly.
* Bug preventing OpenXPS files from being opened fixed.
* Initial (feature incomplete) SVG and PDF output devices.
* PWG raster (mono/grey/RGB) and PCL (mono) output devices.
* Various performance improvements (including tilings and mesh based
shadings).
* Revamped directory structure to reflect recent changes.
* Various potential SEGV, SoftMask and rendering fixes.
* Many potential crashes in Jpeg2000 and JBIG2 images fixed.
List of changes on master since MuPDF 1.1
* Important API changes:
* fz_bbox is now fz_irect.
* APIs (including fz_device) now pass fz_rect/fz_matrix by reference.
* fz_device API is now more consistent with regards to use of
fz_rect rather than fz_bbox.
* Add support for Javascript and forms handling.
* Fix many SEGVs with out of spec files. Many thanks to Mateusz "j00ru"
Jurczyk and Gynvael Coldwind of the Google Security team, zeniko,
Sebastian Rasmussen and all other contributors.
* Add fz_open_document_with_stream to allow non-file based operation.
* Move to using git submodules for third party libraries.
* Much enhanced Android application. Now on Google Play!
* Oversized and stroke text clipping implemented.
* Change shadings to decompose at render times; massive memory savings.
* Renamed 'mubusy' to 'mutool'.
* PDF 1.7 Extension Level 8 encryption implemented.
* Added consts to various parts of the API to help C++ interworking.
* Prototype transition support.
* Text searching API moved to fitz.
* Highlight and copy text selections.
* Performance enhancements for color conversion and fax decompression.
* ARM optimisations for color conversion and bitmap scaling.
* Bitmap subsampling stage introduced, with ARM optimisations.
* Type 3 fonts; glyphs are now handled as display lists.
* Scan converter performance improvements.
* Various rendering fixes.
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
libXext/buildlink3.mk, now that it is included there.
Leave the places where its API version is set or variables from it
are used directly (about 3 packages).
changes:
The command line tools have been combined into one tool that does all:
mubusy. Where previously you would have called "mupdfclean blah blah
blah", now call "mubusy clean blah blah blah" instead.
Support for UserUnits
bugfixes and optimisations
MuPDF 1.0 (2012-04-24)
The 1.0 release is here!
MuPDF 1.0 RC1 (2012-03-29)
The 1.0 release rapidly approaches! This version brings with it a whole host of features, including:
Removal of all global variables: we now pass a context pointer
through the code freeing us from the use of globals within the
library.
Multi-threaded operation: while MuPDF does not require a thread
library, hooks are in place so that if one is used, significant
speedups can be gained from using multiple cores to render.
New error handling: a portable exception-like system is used
to allow neater handling of errors. This leads to more stability
and better resilience to broken files.
Public/Private API: the API has undergone a significant revision
(required by some of the above changes, plus renaming/revising
for clarity and consistency), and has been split into public
and private headers. The plan is that the public portion of
the API should remain much more static in future.
Improved Text Extraction device: a cleaner API to the experimental
text extraction device, offering a list of styles, and more
cleanly delineated content.
Documentation: All public header entry points/structures are
now documented and overviews of how to call the library to
render pages both in single and multi-threaded mode are given.
A new scavenging memory manager; makes much better use of the
memory available by freeing cached items 'just in time'.
Many, many, bugfixes.
This is such a large and significant version that we're doing a
release candidate first to allow us to correct any obvious bugs
that are found. Please try it and let us know how you get on!
no changelog available, at least some security fixes were done:
-fix possible memory corruption due to malformed JPEG images
(was patched in pkgsrc)
-fix (at least) 2 cases of integer overflow in array allocation (SA42320)
alternative from mk/jpeg.buildlink3.mk
This allows selection of an alternative jpeg library (namely the x86 MMX,
SSE, SSE2 accelerated libjpeg-turbo) via JPEG_DEFAULT=libjpeg-turbo, and
follows the current standard model for alternatives (fam, motif, fuse etc).
The mechanical edits were applied via the following script:
#!/bin/sh
for d in */*; do
[ -d "$d" ] || continue
for i in "$d/"Makefile* "$d/"*.mk; do
case "$i" in *.orig|*"*"*) continue;; esac
out="$d/x"
sed -e 's;graphics/jpeg/buildlink3\.mk;mk/jpeg.buildlink3.mk;g' \
-e 's;BUILDLINK_PREFIX\.jpeg;JPEGBASE;g' \
< "$i" > "$out"
if cmp -s "$i" "$out"; then
rm -f "$out"
else
echo "Edited $i"
mv -f "$i" "$i.orig" && mv "$out" "$i"
fi
done
done
MuPDF is a lightweight PDF viewer and toolkit written in portable C.
The renderer in MuPDF is tailored for high quality anti-aliased
graphics. MuPDF renders text with metrics and spacing accurate to
within fractions of a pixel for the highest fidelity in reproducing
the look of a printed page on screen.
MuPDF has a small footprint. A binary that includes the standard
Roman fonts is only one megabyte. A build with full CJK support
(including an Asian font) is approximately five megabytes.
MuPDF has support for all non-interactive PDF 1.7 features, and
the toolkit provides a simple API for accessing the internal
structures of the PDF document. Example code for navigating
interactive links and bookmarks, encrypting PDF files, extracting
fonts, images, and searchable text, and rendering pages to image
files is provided.