Create raster PDF pages to match input page size
Previously we produced a raster image, then multiplied image width by DPI to get the page size. However if there is rounding the page size may not match exactly. In this modified approach we constrain the page size to match.
This commit is contained in:
@@ -588,12 +588,17 @@ def create_pdf_page_from_image(image: Path, page_context: PageContext):
|
||||
# except that the hocr renderer does not understand non-square DPI. The
|
||||
# sandwich renderer would be fine.
|
||||
output_file = page_context.get_path('visible.pdf')
|
||||
dpi = get_page_square_dpi(page_context.pageinfo, page_context.options)
|
||||
layout_fun = img2pdf.get_fixed_dpi_layout_fun(dpi)
|
||||
|
||||
pageinfo = page_context.pageinfo
|
||||
pagesize = 72.0 * float(pageinfo.width_inches), 72.0 * float(pageinfo.height_inches)
|
||||
if pageinfo.rotation % 180 == 90:
|
||||
pagesize = pagesize[1], pagesize[0]
|
||||
|
||||
# This create a single page PDF
|
||||
with open(image, 'rb') as imfile, open(output_file, 'wb') as pdf:
|
||||
log.debug('convert')
|
||||
|
||||
layout_fun = img2pdf.get_layout_fun(pagesize)
|
||||
img2pdf.convert(
|
||||
imfile, with_pdfrw=False, layout_fun=layout_fun, outputstream=pdf
|
||||
)
|
||||
|
||||
@@ -45,7 +45,8 @@ def test_skip_pages_does_not_replicate(resources, basename, outdir):
|
||||
assert len(page.images) == 1, "skipped page was replicated"
|
||||
|
||||
for n, info_out_n in enumerate(info):
|
||||
assert info_out_n.width_inches == info_in[n].width_inches
|
||||
assert info_out_n.width_inches == info_in[n].width_inches, "output resized"
|
||||
assert info_out_n.height_inches == info_in[n].height_inches, "output resized"
|
||||
|
||||
|
||||
def test_content_preservation(resources, outpdf):
|
||||
|
||||
Reference in New Issue
Block a user