9.8. PDF-Seitenausschnitt in PNG umwandeln

Die Gründe, um Tests mit gerenderten Ausschnitten einer PDF-Seite durchzuführen, sind in Kapitel 3.19: „Layout - gerenderte Seitenausschnitte“ beschrieben. Um den Seitenausschnitt richtig zu ermitteln, stellt PDFUnit das kleine Hilfsprogramm RenderPdfPageRegionToImage zur Verfügung. Mit ihm wird der durch die Aufrufparameter bestimmte Ausschnitt als PNG-Datei exportiert und kann danach per Augenschein auf seine Richtigkeit überprüft werden. Wenn der Ausschnitt stimmt, übernehmen Sie die Parameter in Ihren Test.

Aufruf

::
:: Render a part of a PDF page into an image file
::

@echo off
setlocal
set CLASSPATH=./lib/aspectj-1.8.7/*;%CLASSPATH%
set CLASSPATH=./lib/commons-logging-1.2/*;%CLASSPATH%
set CLASSPATH=./lib/pdfbox-2.0.0/*;%CLASSPATH%
set CLASSPATH=./lib/pdfunit-2016.05/*;%CLASSPATH%

set TOOL=com.pdfunit.tools.RenderPdfPageRegionToImage
set OUT_DIR=./tmp
set PAGENUMBER=1
set IN_FILE=documentForTextClipping.pdf
set PASSWD=

:: Put these values into your test code:
:: Values in millimeter:
set UPPERLEFTX=17 
set UPPERLEFTY=45
set WIDTH=60
set HEIGHT=9

java  %TOOL%  %IN_FILE%  %PAGENUMBER%  %OUT_DIR%     1
      %FORMATUNIT%  %UPPERLEFTX%  %UPPERLEFTY%  %WIDTH%  %HEIGHT%  %PASSWD%
endlocal

1

Zeilenumbruch nur für diese Dokumentation

Die 4 Werte, die den Ausschnitt beschreiben, müssen Millimeter (mm) sein.

Eingabe

Die Eingabedatei documentForTextClipping.pdf enthält im oberen Bereich den Text: Content on first page.

Ausgabe

Die erzeugte Bilddatei muss auf ihre Richtigkeit überprüft werden.

Damit Sie bei mehreren Seitenausschnitten nicht den Überblick verlieren, enthält der Dateiname die Ausschnittparameter. PDFUnit und das Hilfsprogramm RenderPdfPageRegionToImage nutzen den gleichen Algorithmus. Deshalb können Sie die Parameter aus dem Skript direkt in Ihren Test übernehmen oder auch nachträglich aus dem Dateinamen ableiten:

#
# Parameters from filename:
#

_rendered_documentForTextClipping_page-1_area-50-130-170-25.out.png
                                               |  |   |   |
                                               |  |   |   +- height
                                               |  |   +- width
                                               |  +- upperLeftY
                                               +- upperLeftX