Package mupdf integrates the MuPdf framework in Tcl. The focus of MuPdf is on speed, small code size, and high-quality anti-aliased rendering. The main goal of this integration is to generate images of the pdf pages, in a .png format, or directly in a Tk's photo image type. Thanks to its speed mupdf can be used for building interactive pdf-viewers with high-quality and real-time zooming. mupdf is a binary package, distributed in a multi-platform bundle, i.e. it can be used on
Windows 32/64 bit
Linux 32/64 bit
MacOS 64 bit
Just an example to get the flavor of how to use mupdf:
# open a file and save 1st page as a .png file
package require mupdf
set pdf [mupdf::open /mydir/sample.pdf]
set page [$pdf getpage 0] ;# 0 is the 1st page
$page savePNG /mydir/page0.png
mupdf::close $pdf
mupdf Commands
mupdf supports the following commands:
mupdf::openfilename
This is the main command: it opens the pdf-file filename and returns a pdfHandle to be used in subsequent operations.
pdfHandlenpages
return the number of pages.
pdfHandlegetpagen
return a new pageHandle to be used in subsequent operations. Note that first page is page 0.
pdfHandleopenedpages
return a list of all pageHandles currently opened related to pdfHandle
pdfHandlecloseallpages
close all currently opened pages related to pdfHandle
pageHandlesize
return the physical size of the page as a list of two decimal numbers. Note that page size is expressed in points, i.e. 1/72 inch.
pageHandledocref
return a reference to the related pdf-document as a pdfHandle
render the page in a .png file named filename. With a default -zoom factor equal to 1.0, a page whose size is W x H points is rendered as a raster image of W x H pixels. If -zoom is specified, the resulting image size is scaled by a factor of zoom. By default the whole page is rendered; the -from option, allows you to render only a given rectangler area of the page. x0y0 are the coords of the top-left corner and x1y1 are for the bottom-right corner. These coords must be expressed in terms of the physical size of the page, i.e in points Note that if these coords lies outside of the page, only the intersection of this area with the page areais rendered.
...
set page [$pdf getpage 0] ;# 0 is the 1st page
lassign [$page size] dx dy
# save just the upper half of the page
$page savePNG /mydir/page0.png -zoom 2.25 -from 0 0 $dx [expr $dy/2]
mupdf::close $pdf
render the page in an existing Tk's photo image. The width and/or height of image are unchanged if the user has set on it an explicit image width or height (with the -width and/or -height configuration options, respectively). About the -zoom and -from options, the same rules for the savePNG apply. Option -to allows you to place the resulting raster image at the x0y0 coords of the destination image. By default, is -to0.00.0
mupdf::closehandle
if handle refers to a pageHandle, close the page. if handle refers to a pdfHandle, close the pdf and all its opened pages.
mupdf::isobjecthandle
return 1 if handle is a valid reference to a pdf or a page.
mupdf::typehandle
return document or page if handle is a valid reference, else raise an error.