Added weighted DPI rendering

To address #1010 and other issues.
This commit is contained in:
James R. Barlow
2023-09-21 00:04:50 -07:00
parent 67ed29dcea
commit 173428e81a
+21 -2
View File
@@ -359,8 +359,12 @@ def is_ocr_required(page_context: PageContext) -> bool:
def rasterize_preview(input_file: Path, page_context: PageContext) -> Path:
"""Generate a lower quality preview image."""
output_file = page_context.get_path('rasterize_preview.jpg')
canvas_dpi = get_canvas_square_dpi(page_context.pageinfo, page_context.options)
page_dpi = get_page_square_dpi(page_context.pageinfo, page_context.options)
canvas_dpi = Resolution(300.0, 300.0).take_min(
[get_canvas_square_dpi(page_context.pageinfo, page_context.options)]
)
page_dpi = Resolution(300.0, 300.0).take_min(
[get_page_square_dpi(page_context.pageinfo, page_context.options)]
)
page_context.plugin_manager.hook.rasterize_pdf_page(
input_file=input_file,
output_file=output_file,
@@ -490,6 +494,21 @@ def rasterize(
canvas_dpi = get_canvas_square_dpi(pageinfo, page_context.options)
page_dpi = get_page_square_dpi(pageinfo, page_context.options)
dpi_profile = pageinfo.page_dpi_profile()
if dpi_profile and dpi_profile.average_to_max_dpi_ratio < 0.8:
log.warning(
"Weight average DPI is %0.1f, max DPI is %0.1f. "
"The discrepancy may indicate a high detail region on this page, "
"but could also indicate a problem with the input PDF file. "
"An image will be rendered at %0.1f DPI.",
dpi_profile.weighted_dpi,
dpi_profile.max_dpi,
dpi_profile.weighted_dpi,
)
canvas_dpi = page_dpi = Resolution(
dpi_profile.weighted_dpi, dpi_profile.weighted_dpi
)
page_context.plugin_manager.hook.rasterize_pdf_page(
input_file=input_file,
output_file=output_file,