Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __paint_img(self, pdf_surface, pdf_size, pdf_context, page,
preview=False):
img = page.img
if self.__process_func:
img = self.__process_func(img)
quality = float(self.__quality) / 100.0
new_size = (int(quality * img.size[0]),
int(quality * img.size[1]))
img = img.resize(new_size, PIL.Image.ANTIALIAS)
scale_factor_x = pdf_size[0] / img.size[0]
scale_factor_y = pdf_size[1] / img.size[1]
scale_factor = min(scale_factor_x, scale_factor_y)
img_surface = image2surface(img)
pdf_context.save()
try:
pdf_context.identity_matrix()
pdf_context.scale(scale_factor, scale_factor)
pdf_context.set_source_surface(img_surface)
pdf_context.paint()
finally:
pdf_context.restore()
logger.info("Rotating the page ...")
img = img.rotate(90, expand=True)
(width, height) = img.size
# scale the image down
# XXX(Jflesch): beware that we get floats for the page size ...
scaling = min(
print_context.get_width() / width,
print_context.get_height() / height
)
logger.info("DPI: %fx%f" % (print_context.get_dpi_x(),
print_context.get_dpi_y()))
surface = image2surface(img)
keep_refs['surface_cache_' + str(self.page_nb)] = surface
# .. and print !
cairo_context = print_context.get_cairo_context()
cairo_context.scale(scaling, scaling)
cairo_context.set_source_surface(surface, 0, 0)
cairo_context.paint()