diff --git a/libmat2/pdf.py b/libmat2/pdf.py index e258512..fc5f7dc 100644 --- a/libmat2/pdf.py +++ b/libmat2/pdf.py @@ -32,7 +32,7 @@ class PDFParser(abstract.AbstractParser): def __init__(self, filename): super().__init__(filename) self.uri = 'file://' + os.path.abspath(self.filename) - self.__scale = 2 # how much precision do we want for the render + self.__scale = 200 / 72.0 # how much precision do we want for the render try: # Check now that the file is valid, to avoid surprises later Poppler.Document.new_from_file(self.uri, None) except GLib.GError: # Invalid PDF @@ -90,8 +90,8 @@ class PDFParser(abstract.AbstractParser): page_width, page_height = page.get_size() logging.info("Rendering page %d/%d", pagenum + 1, pages_count) - width = int(page_width) * self.__scale - height = int(page_height) * self.__scale + width = int(page_width * self.__scale) + height = int(page_height * self.__scale) img_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) img_context = cairo.Context(img_surface) @@ -105,7 +105,12 @@ class PDFParser(abstract.AbstractParser): buf.seek(0) img = cairo.ImageSurface.create_from_png(buf) - pdf_surface.set_size(page_width*self.__scale, page_height*self.__scale) + if cairo.version_info < (1, 12, 0): + pdf_surface.set_size(width, height) + else: + print("lol") + pdf_surface.set_size(page_width, page_height) + pdf_surface.set_device_scale(1 / self.__scale, 1 / self.__scale) pdf_context.set_source_surface(img, 0, 0) pdf_context.paint() pdf_context.show_page() # draw pdf_context on pdf_surface