Template:Troubleshooting printPDF

From MapbenderWiki

(Redirected from Troubleshooting printPDF)
Jump to: navigation, search

Contents

FAQ

This is a frequently asked questions (FAQ) list. Please add questions and answers in any order. It can be sorted out and ordered later.

No images in /tmp directory

Edit printPDF.conf configuration file see: Print Section "Configure the printPDF.conf"

Settings are correct, still no images

Verify whether the http server (Apache, IE) is allowed to write to the specified /tmp directory.

Adding several layers causes problems

Check whether the getMap requests are correct, sometimes an additional slash (/) is added after the map-file setting messing up requests. You can correct this string directly in the database

Infos zum Drucken aus der Mail-Userliste gesammelt:

Checkliste Print


Beim Browsen wird GetMap vom Client ausgeführt

Beim PDF-Druck wird GetMap jedoch vom Server ausgeführt.

Der Mapbender-Server muss also in der Lage sein, http-Zugriffe auf die WMS-Server auszuführen.

Faustregel: Wenn GetCapabilities für einen Service nicht funktioniert, funktioniert auch GetMap (Druck) nicht.

Anpassungen der php.ini

Siehe php.ini

Drucken

hochqualitativer Druck

Beim hochqualitativen Durck fordert Mapbender ein x-mal (4mal) so großes Bild an und verkleinert dieses dann wieder, so dass es im PDF die korrekte Größe hat.

Wenn Vektordaten im hochqualitativen Druck dargestellt werden werden die Symbole und Schriften in der Darstellung entsprechend kleiner dargestellt. Damit die Schriften und Texte die korrekte Größe behalten, kann für mapServer projekte (mapfile) eine zweite Mapdatei _4.map erzeugt werden (hierfür kann der mapFiler download eingesetzt werden.)

In der rintPDF.conf müssen die Dienste, bei denen die _4.map verwendet werden soll, aufgelistet werden. Dies erfolgt unter:

$highquality = true;
$highqualitymapfiles = array(

"/data/umn/germany/germany_demo.map", "/data/umn/mapbender_user/mapbender_user.map"

);


Ein hochqualitativer Druck erfordert entsprechende Ressourcen, die von den Default-Einstellungen in der php.ini nicht in ausreichendem Maße bereitgestellt werden. Die Auswirkungen zeigen sich u.a. darin, dass ein "Normal"-Druck mit 72 dpi funktioniert, ein Druck mit 288 dpi jedoch leere oder gar keine PNG's erzeugt. Um dies zu umgehen, sollte man ggf. folgende Default-Werte großzügig erhöhen:

memory_limit = 8M
max_execution_time = 30  ; sek
max_input_time = 60      ; sek

post_max_size = 8M

If you want to print very huge images (for example A1 format) you should increase the following parameter:

default_socket_timeout = 6;

PrintPDF

Für das Drucken mit dem Mapbender sind mehrere Skripte verantwortlich, die sich im Verzeichnis "../http/print" befinden. Bei Druckproblemen ist ggf. eine Kontrolle / Anpassung erforderlich.

1. printPDF.conf bzw. printPDF_b.conf


printPDF.conf für Frame

printPDF_b.conf für Window


Welche der beiden Dateien verwendet wird, bestimmt der Parameter "conf=" aus der GUI (s. Eintrag unter "SRC"). Wichtig ist bei beiden die Zeile 3:


$filename = ".../tmp/map_".substr(md5(uniqid(rand())),0,7).".png";


Die Angabe muss auf ein existierendes Temp-Verzeichnis zeigen. Der Pfad kann sowohl relativ als auch absolut angegeben werden. Auf dieses Verzeichnis muss der Anwender schreibenden Zugriff haben! Sonst können die für den Druck benötigten PNG-Dateien nicht abgespeichert werden.

Die Zeile

$matching = false; (bzw. true)

bestimmt, ob für den hochauflösenden Druck eine speziell angepaßte Map-Datei zum Einsatz kommen soll. Diese kann man mit dem unter "..http/tools" zu findenden Skript "mapFiler.php" erstellen, das sämtliche Größenangaben (z.B. SIZE) mit einem bestimmten Faktor multipliziert. Die Datei wird unter dem Originalnamen mit der Endung *_4.map abgespeichert. Soll diese Datei bei der Druckerzeugung zur Anwendung kommen, so muss man die URL anpassen. Das geschieht durch ein "replace". Die auszutauschenden Strings werden mit den beiden nächsten Zeilen festgelegt.


$pattern = ".map"

$replacement = "_4.map"


Diese Angaben werden in dem Skript "mod_printPDF_pdf.php" verwendet.

Hinweis: Falls das replace nicht klappt, kann man den Vorgang auch direkt in die "mod_printPDF_pdf.php" durchführen lassen, indem man beide Zeilen dorthin kopiert.


Eine einfachere Alternative ist seit Mapbender 2.1.0 die Verwendung der Variablen

$highquality = true;

und

$highqualitymapfiles

Mit der Letztgenannten erstellt man eine Liste (Array) mit Map-Dateien, die für einen hochauflösenden Druck verwendet werden sollen. Diese Liste wird in der "mod_printPDF_pdf.php" abgefragt und das Replace dort durchgeführt.


Die Zeile $unlink = true sollte vorübergehend auf "false" gesetzt werden, damit die PNG's nicht gelöscht werden. Damit kann kontrolliert werden, ob überhaupt Bilder erzeugt werden.

2. mod_printPDF_pdf.php

Auskommentieren der Zeilen:

$i = new weldMaps2PNG(implode("___",$array_urls),$filename);

und

$pdf->addPngFromFile($filename, $mapOffset_left, $mapOffset_bottom, $map_width, $map_height);


Dadurch kann man testen, ob überhaupt eine PDF-Datei mit einem dann "leeren Kartenrahmen" gezeichnet wird.

Client-Probleme unter Windows

In einer Windows-Umgebung kann es zu Problemen beim Anzeigen der PDF-Datei über Browser-Plugin kommen. Die Kombination IE 6.0 und AdobeReader 7.0 funktioniert am Besten. Dieses Problem kann man umgehen, indem man einen http-Link auf die pdf-Datei generiert. Wenn der Nutzer diesen Link aktiviert wird die PDF-Dateizuordnung vom OS genutzt und nicht das fehlerhafte Plugin des Acrobat im IE. ...

Probleme mit Anzeige im Acrobat Reader unter Windows

Unter Windows kann es zu Problemen mit der Anzeige der PDF-Datei im Browser kommen, wenn der Acrobat Reader zeitgleich im Hintergrund versucht, Aktualisierungen herunterzuladen. Da sich der Aktualisierungsdialog (Pop-Up-Fenster) nicht automatisch auf Fokus setzt, bleibt er im Hintergrund und verursacht bei der Anzeige der PDF-Datei im Browser eine leere Seite. Wenn dies passiert, sollte man zum Test alle Fenster minimieren, um auszuschließen, dass das Aktualisierungsfenster des Acrobat Reader aufgegangen ist. Ist es offen, muss es erst geschlossen werden, bevor die PDF-Druckdatei im Browser angezeigt werden kann.

Umstellung MB 2.0 auf MB 2.1

Gui-Element print1 durch printPHP ersetzen.

In SRC oder ATTRIBUTES wird der Name der Conf-Datei mit dem Parameter "&conf=" an mod_printPDF.php übergeben.

Großformatiger Druck in A1 und A0

Da beim Druck großer Dateien entsprechende Ressourcen benötigt werden, sind die Einstellungen in der php.ini entsprechend großzügig zu dimensionieren (siehe oben). Es ist mit längeren Wartezeiten bei der PDF-Erstellung zu rechnen. Es empfiehlt sich, in der print_pdf.conf $download auf "true" zu setzen. Da vom WMS große Bilder angefordert werden, muss dieser auch Bilder in entsprechnender Größe (Width, Height) liefern können. Ansonsten liefert der WMS eine Fehlermeldung. Dies sollte geprüft werden, bevor der großformatige Druck zur Verfügung gestellt wird.

MAP

MINSIZE / MAXSIZE in der Map-Datei kann zu Problemen beim Drucken führen.

Zunächst mit Mapdateien ohne diese Einträge arbeiten.

Views
Personal tools