[FOSSGIS-Talk] QGis: Positionierung von HTML-Elementen im Printlayout

Stefan Giese Stefan.Giese at wheregroup.com
Mo Feb 8 10:50:07 CET 2021


Hallo Lars,

ich glaube es gibt da keinen Ausdruck im Ausdruckseditor. Da musst Dur 
Dir eine eigene Funktion schreiben. Hier ein Beispiel, wie das gehen könnte:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def get_item_size(layoutname, item_id, feature, parent):
     manager = QgsProject.instance().layoutManager()
     layout = manager.layoutByName(layoutname)
     item = layout.itemById(item_id)
     x =  item.pagePositionWithUnits().x()
     y =  item.pagePositionWithUnits().y()
     h = item.sizeWithUnits().height()
     w = item.sizeWithUnits().width()
     return w


Das Beispiel berechnet x,y und die Höhe und Breite, als Parameter 
übergibst Du den Layoutbame und die Item_id, im obigen Beispiel wird 
jetzt nur die Breite zurückgegeben, das kann man aber umbauen, so dass 
eine map zurück gegeben wird und Du alles Parameter hast...

Mit freundlichen Grüßen
Stefan Giese
Projektleiter/Consultant
---------------------------------------------
Aufwind durch Wissen!
Web-Seminare und Online-Schulungen
bei der www.foss-academy.com
---------------------------------------------
WhereGroup GmbH
Schwimmbadstr. 2
79100 Freiburg
Germany

Fon: +49 (0)761 / 519 102 - 61
Fax: +49 (0)761 / 519 102 - 11

stefan.giese at wheregroup.com
www.wheregroup.com
Geschäftsführer:
Olaf Knopp, Peter Stamm
Amtsgericht Bonn, HRB 9885

Am 08.02.2021 um 09:15 schrieb lars lingner:
> Hallo,
>
> in einem QGis-Printlayout möchte ich mehrere HTML-Elemente nebeneinander
> anordnen. Gibt es eine Möglichkeit die Position sowie die Breite eines
> Elements auszulesen und in einer Expression des anderen Elements zu
> benutzen?
>
> Das erste Element hat eine variable Breite, die attributbasiert
> gesteuert wird.
> Das zweite Element soll diese Breite berücksichtigen und automatisch die
> Position anpassen, um eine Überlappung zu vermeiden.
> Das Attribut des ersten Element soll NICHT in der Formel des zweiten
> verwendet werden.
>
> Ich habe jedem Element eine eigene Item-ID gegeben. Mit
> "item_variables(ID)" kann ich aber nicht auf Eigenschaften wie Position,
> Breite zugreifen.
> Gibt es eine andere Möglichkeit diese Werte auszulesen?
> Interessant wären auch weitere Attribute wie Höhe, Rahmen- und
> Hintergrundeinstellungen.
>
> Ich benutze 3.10.14-A Coruña
>
>
> Viele Grüße
>
> Lars
>
> -------------- nächster Teil --------------
> Ein Dateianhang mit Binärdaten wurde abgetrennt...
> Dateiname   : signature.asc
> Dateityp    : application/pgp-signature
> Dateigröße  : 833 bytes
> Beschreibung: OpenPGP digital signature
> URL         : <http://lists.fossgis.de/pipermail/fossgis-talk-liste/attachments/20210208/c6f96e7d/attachment.sig>

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : OpenPGP_signature
Dateityp    : application/pgp-signature
Dateigröße  : 495 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.fossgis.de/pipermail/fossgis-talk-liste/attachments/20210208/3e96dad2/attachment.sig>


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste