Seltsame Druckergebnis-url in 2.6.1

Issue #557 resolved
Dominik Fröhlich created an issue

Hallo,

ich habe ein internes Testportal mit der Version 2.6.1 erstellt (auf Basis der examples). Läuft auch super. Nur die Druckanbindung zickt. Abgefragt wird zum Beispiel folgende url:

https://geospatial/apps/print/%7B%22layout%22%3A%22A4%20hoch%22%2C%22outputFilename%22%3A%22Ausdruck%22%2C%22outputFormat%22%3A%22pdf%22%2C%22attributes%22%3A%7B%22title%22%3A%22FreiGIS%22%2C%22map%22%3A%7B%22dpi%22%3A300%2C%22projection%22%3A%22EPSG%3A25832%22%2C%22center%22%3A%5B410145%2C5315520%5D%2C%22scale%22%3A10000%2C%22layers%22%3A%5B%7B%22baseURL%22%3A%22https%3A%2F%2Fsg.geodatenzentrum.de%2Fwms_topplus_open%22%2C%22opacity%22%3A1%2C%22type%22%3A%22WMS%22%2C%22layers%22%3A%5B%22web%22%5D%2C%22imageFormat%22%3A%22image%2Fpng%22%2C%22customParams%22%3A%7B%22TRANSPARENT%22%3A%22true%22%7D%7D%5D%7D%7D%7D/report.pdf

An dem link fällt mit folgendes auf:

Die url aus der rest config am Anfang stimt ("url": "https://geospatial/apps/print/").

Was danach kommt scheint mir allerdings der Request zu sein. Hier hätte ich statt dessen die "printAppId": "print" erwartet.

Das report.pdf am ende stimmt dann wieder.

Die 2.5.4 produziert in der selben config z.B. https://geospatial/apps/print/print/report.pdf

Gruß

Dominik

Comments (6)

  1. Inka Dudek

    Das Portal https://geoportal-hamburg.de/geo-online/ ist auch mit der 2.6.1 gebaut. Dort funktioniert das Drucken ohne Probleme.

    Liegt dein Problem vielleicht an der Konfiguration? In der Datei modules\tools\print_\mapfish3PlotService.js in der Funktion createPrintJob (Zeile 335) wird die Url zusammengebaut. Vielleicht hilft dir debuggen weiter?

  2. Dominik Fröhlich reporter

    Ich benutze die examples, da gibt es nur eine einzige masterportal.js und die ist auch noch minimiert. Da ist die Funktion leider schwer zu finden…

    Welche Konfigurationsvariablen haben sich denn da geändert? Die Druckkonfiguration stammt aus unserer 2.5.4 wo sie funktioniert.

  3. Dominik Fröhlich reporter

    Wenn man das file masterportal.js entminimiert hat man zwar obfuscatete Variablennamen, kann aber die Funktionen einigermaßen lesen.

    Hier findet sich die Funktion createPrintJob, die auch gut aussieht. Was allerdings nicht gut aussieht ist folgendes:

    this.get("isLegendAvailable") ? n.buildLegend(this.get("isLegendSelected"), this.get("isMetaDataAvailable")) ((n = n.toJSON()), (n = s.request("Util", "omit", n, ["uniqueIdList"])), this.createPrintJob(this.get("printAppId"), encodeURIComponent(JSON.stringify(n)), this.get("currentFormat")));

    Es fällt auf: die Parameter sind vertauscht. richtig müsste es heißen:

    this.get("isLegendAvailable") ? n.buildLegend(this.get("isLegendSelected"), this.get("isMetaDataAvailable")) ((n = n.toJSON()), (n = s.request("Util", "omit", n, ["uniqueIdList"])), this.createPrintJob(encodeURIComponent(JSON.stringify(n)), this.get("printAppId"), this.get("currentFormat")));

    Ich suche die Stelle mal in der minimirten Datei, dann poste ich die genaue Stelle.

    Im Minimierten file die Zeile 124, Spalte 302626 ff

    Im Repo ist der Fehler auch: in \mapfish3PlotService.js : 312

    this.createPrintJob(this.get("printAppId"), encodeURIComponent(JSON.stringify(spec)), this.get("currentFormat"));

    Der request muss nach vorne, dann die id und dann der type. Entsprechend createPrintJob: function (payload, printAppId, format) {

  4. Inka Dudek

    Das stimmt. Das ist ein Bug. Wird in der 2.6.2, die wahrscheinlich nächste Woche released wird, behoben sein. Das ist uns nicht aufgefallen, denn wenn "isLegendAvailable"= true, dann wird anderer Code durchlaufen.

  5. Log in to comment