def trace_runpage( use_display_list, doc, number): page = mupdf.Page( doc, number-1) mediabox = page.bound_page() print( f'<page number="{number}" mediabox="{mediabox.x0} {mediabox.y0} {mediabox.x1} {mediabox.y1}">') output = mupdf.Output( mupdf.Output.Fixed_STDOUT) dev = mupdf.Device( output) if use_display_list: list_ = mupdf.DisplayList( page) list_.run_display_list( dev, mupdf.Matrix(mupdf.fz_identity), mupdf.Rect(mupdf.fz_infinite_rect), mupdf.Cookie()) else: page.run( dev, mupdf.Matrix(mupdf.fz_identity), mupdf.Cookie()) output.close_output() print( '</page>')
def drawpage(doc, pagenum): list_ = None cookie = mupdf.Cookie() seps = None features = "" start = gettime() if state.showtime else 0 page = mupdf.Page(doc, pagenum - 1) if state.spots != SPOTS_NONE: seps = page.page_separations() if seps.m_internal: n = seps.count_separations() if state.spots == SPOTS_FULL: for i in range(n): seps.set_separation_behavior(i, mupdf.FZ_SEPARATION_SPOT) else: for i in range(n): seps.set_separation_behavior(i, mupdf.FZ_SEPARATION_COMPOSITE) elif page.page_uses_overprint(): # This page uses overprint, so we need an empty # sep object to force the overprint simulation on. seps = mupdf.Separations(0) elif state.oi and state.oi.m_internal and state.oi.colorspace_n( ) != state.colorspace.colorspace_n(): # We have an output intent, and it's incompatible # with the colorspace our device needs. Force the # overprint simulation on, because this ensures that # we 'simulate' the output intent too. */ seps = mupdf.Separations(0) if state.uselist: list_ = mupdf.DisplayList(page.bound_page()) dev = mupdf.Device(list_) if state.lowmemory: dev.enable_device_hints(FZ_NO_CACHE) page.run(dev, mupdf.Matrix(), cookie) dev.close_device() if bgprint.active and state.showtime: end = gettime() start = end - start if state.showfeatures: # SWIG doesn't appear to handle the out-param is_color in # mupdf.Device() constructor that wraps fz_new_test_device(), so we use # the underlying mupdf function() instead. # dev, iscolor = mupdf.new_test_device(0.02, 0, None) dev = mupdf.Device(dev) if state.lowmemory: dev.enable_device_hints(mupdf.FZ_NO_CACHE) if list_: list_.run_display_list(dev, mupdf.Matrix(mupdf.fz_identity), mupdf.Rect(mupdf.fz_infinite_rect), mupdf.Cookie()) else: page.run(dev, fz_identity, cookie) dev.close_device() features = " color" if iscolor else " grayscale" if state.output_file_per_page: bgprint_flush() if state.out: state.out.close_output() text_buffer = mupdf.format_output_path(state.output, pagenum) state.out = mupdf.Output(text_buffer, 0) if bgprint.active: bgprint_flush() if bgprint.active: if not state.quiet or state.showfeatures or state.showtime or state.showmd5: sys.stderr.write("page %s %d%s" % (state.filename, pagenum, features)) bgprint.started = 1 bgprint.page = page bgprint.list = list_ bgprint.seps = seps bgprint.filename = state.filename bgprint.pagenum = pagenum bgprint.interptime = start else: if not state.quiet or state.showfeatures or state.showtime or state.showmd5: sys.stderr.write("page %s %d%s" % (state.filename, pagenum, features)) dodrawpage(page, list_, pagenum, cookie, start, 0, state.filename, 0, seps)