From 365ee2cdf92a3b64c1d11b9ed53dc853147687a3 Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Tue, 25 Aug 2026 12:04:22 +0200 Subject: [PATCH] Fall back to a bounded dpi for a huge page --- cbconvert.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/cbconvert.go b/cbconvert.go index 01ad9cf..e51e4ec 100644 --- a/cbconvert.go +++ b/cbconvert.go @@ -212,6 +212,9 @@ func (o Options) Args() []string { return args } +// fallbackDPI is the resolution a page renders at when its own is too large. +const fallbackDPI = 300 + // renderPage renders document page n at the configured DPI, or at the page's // native resolution when DPI is unset. func (c *Converter) renderPage(doc folio.Document, n int) (*image.RGBA, error) { @@ -224,7 +227,16 @@ func (c *Converter) renderPage(doc folio.Document, n int) (*image.RGBA, error) { return page.ImageDPI(float64(c.Opts.DPI)) } - return page.Image() + img, err := page.Image() + if err == nil { + return img, nil + } + + if img, retry := page.ImageDPI(fallbackDPI); retry == nil { + return img, nil + } + + return nil, err } // Cancel cancels the operation.