Support » Plugin: PDF Thumbnails » Low resolution

  • Resolved Michael Nolan

    (@mikenolan)


    Generally working great but the quality of the rendered text on PDFs isn’t great due to a lack of antialiasing. I can fix this locally by increasing the resolution of the generated images:

    private function getThumbnailBlob($filename)
        {
            $im = new Imagick();
            $im->setResolution(200,200);
            $im->readImage($filename);
            $im->setIteratorIndex(0);
            $im->setImageFormat('jpg');
            return $im->getImageBlob();
        }

    I don’t need the additional resolution, just for the text to be clearer so can you think of an alternative way to achieve this? Alternatively can you pass $im = new Imagick() through a filter so I can increase the resolution for my use case?

    Sample images here:

    https://www.dropbox.com/sh/vd6il4eo783gmla/AACkbHmkzLH_vWlXg35BY_kYa?dl=0

    https://wordpress.org/plugins/pdf-thumbnails/

Viewing 5 replies - 1 through 5 (of 5 total)
  • Plugin Author stianlik

    (@stianlik)

    From what I found on the issue, it seems like the way you describe is the only way to make the text better, at least for JPEG images.

    Updated the plugin with a new hook pdf_thumbnails_before_get_image_blob that you can use to modify the Imagick instance before image blob is generated, example in main plugin page.

    Not sure that filter will work for me as the resolution needs to be set before the file is read in. Maybe before and after $im->readImage($filename) hooks could be added?

    Plugin Author stianlik

    (@stianlik)

    That makes sense. I think the best approach may be to add a filter that you can use to override the entire process with something like this:

    add_filter('pdf_thumbnails_generate_image_blob', function ($pdfFilename) {
        $im = new Imagick();
        $im->setResolution(200,200);
        $im->readImage($filename);
        $im->setIteratorIndex(0);
        $im->setImageFormat('jpg');
        return $im->getImageBlob();
    });

    That will force you to do all the required Imagick configuration, but I think it will be more future proof than exposing the Imagick instance directly as I did in my first attempt. I will publish a new version sometime before next week.

    Yes, that looks much cleaner, thanks!

    Plugin Author stianlik

    (@stianlik)

    Implemented in version 2.0.0, see main plugin page for documentation (used your fix as an example).

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Low resolution’ is closed to new replies.