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.

    Thread Starter Michael Nolan

    (@mikenolan)

    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.

    Thread Starter Michael Nolan

    (@mikenolan)

    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.