Narzędzia: Generowanie miniatur PDF do bloga (Poppler + ImageMagick)

Konwersja PDF do PNG przy użyciu Poppler (pdftoppm) oraz stylizacja obrazu w ImageMagick w celu generowania miniatur do bloga.

Narzędzia: Generowanie miniatur PDF do bloga (Poppler + ImageMagick)

W tym wpisie opisuję dwustopniowy sposób generowania miniatur PDF publikowanych na blogu.

Celem jest uzyskanie powtarzalnego, estetycznego podglądu wybranej strony dokumentu PDF w formie grafiki PNG zoptymalizowanej pod web.

Efekt końcowy ma następujące parametry:

  • stała szerokość: 620px
  • biała ramka (efekt „kartki”)
  • cienki zewnętrzny obrys
  • miękki cień
  • kompresja dostosowana do publikacji online

Proces składa się z dwóch etapów: konwersji PDF do PNG przy użyciu pdftoppm (Poppler) oraz dalszego przetwarzania (stylizacji) obrazu w ImageMagick.

Przykładowy efekt

Sekwencja przetwarzania: PDF → PNG (raw) → PNG (web)

Plik PDF: example-pl.pdf

Plik PNG (raw): example-pl-raw.png

Plik PNG (web): example-pl-web.png

Widok wygenerowanego obrazu Rys. 1. Przykładowy obraz wygenerowany z dokumentu example-pl.pdf.


Środowisko

Środowisko pracy: MSYS2 MinGW64.

Instalacja Poppler (pdftoppm)

Program pdftoppm jest częścią pakietu Poppler – biblioteki do renderowania PDF opartej na silniku Xpdf.

Instalacja:

1
pacman -S mingw-w64-x86_64-poppler

Sprawdzenie:

1
pdftoppm -v

Instalacja ImageMagick

Instalacja:

1
pacman -S mingw-w64-x86_64-imagemagick

Sprawdzenie:

1
magick -version

Krok 1: Konwersja PDF do PNG (Poppler)

Pierwszy etap polega na konwersji wybranej (poniżej pierwszej) strony dokumentu PDF do obrazu PNG w wysokiej rozdzielczości:

1
pdftoppm -png -r 300 -f 1 -singlefile example.pdf example-raw

Powstaje plik:

1
example-raw.png

Parametry:

  • -r 300 – wysoka jakość renderu
  • -f 1 – pierwsza strona
  • -singlefile – pojedynczy plik wyjściowy

Na tym etapie obraz jest technicznie czysty – bez jakiejkolwiek stylizacji.


Krok 2: Stylizacja PNG do wersji webowej (ImageMagick)

Drugi etap nadaje obrazowi formę gotową do publikacji:

1
magick example-raw.png   -resize 620x   -bordercolor white -border 12   -bordercolor "#e0e0e0" -border 1   -alpha set   \( +clone -background black -shadow 45x4+0+3 \)   +swap -background none -compose over -composite   -strip -quality 92   example-web.png

Powstaje:

1
example-web.png

Uzasadnienie parametrów

  • 300 DPI przy konwersji
    Zapewnia ostrość tekstu po późniejszym skalowaniu.

  • Resize dopiero w ImageMagick
    Pozwala precyzyjnie kontrolować szerokość końcową.

  • Biała ramka przed szarą obwódką
    Szara linia działa jako subtelny zewnętrzny obrys.

  • Cień generowany po obrysie
    Efekt wizualny przypomina kartkę papieru unoszącą się nad tłem.

  • -strip -quality 92
    Redukcja rozmiaru pliku przy zachowaniu jakości wizualnej.


Automatyzacja (MSYS2 MinGW64)

Poniżej prosty skrypt Bash uruchamiany w środowisku MSYS2 MinGW64.

Skrypt do pobrania: pdf-to-web-image.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env bash
set -e

pdf="$1"
[ -n "$pdf" ] || { echo "Usage: ./pdf-to-web-image.sh example.pdf"; exit 1; }

base="$(basename "$pdf" .pdf)"

pdftoppm -png -r 300 -f 1 -singlefile "$pdf" "${base}-raw"

magick "${base}-raw.png"   -resize 620x   -bordercolor white -border 12   -bordercolor "#e0e0e0" -border 1   -alpha set   \( +clone -background black -shadow 45x4+0+3 \)   +swap -background none -compose over -composite   -strip -quality 92   "${base}-web.png"

echo "OK: ${base}-web.png"

Nadanie uprawnień:

1
chmod +x pdf-to-web-image.sh

Użycie:

1
./pdf-to-web-image.sh example.pdf

Skrypt przyjmuje plik PDF jako argument i generuje:

  • *-raw.png
  • *-web.png

Podsumowanie

To proste narzędzie pozwala generować estetyczne, zoptymalizowane pod web miniatury PDF.

Umożliwia zachowanie spójności layoutu oraz automatyzację workflow publikacyjnego.

© Marcin Szewczyk. Wszelkie prawa zastrzeżone.