0

Ich habe weasyprint auf Elastic Beanstalk installiert. Das Drucken von HTML-Vorlagen funktioniert soweit, aber ich kann keine SVG-Bilder drucken.Django Weasyprint auf elastischer Bohnenstange - Konnte nicht geladen werden GDK-Pixbuf

Weasyprint führt den folgenden Fehler:

Failed to load image at "https://myurl/media/X247QAQ2IO.svg" (Could not load GDK-Pixbuf. PNG and SVG are the only image formats available.) 

Brauche ich gdk-pixbuf SVGs zu drucken? Und wenn ja, wie kann ich es auf Amazon Linux installieren?

Yum does not have gdk-pixbuf2 available for installation 

Antwort

0

Nach einer weiteren Untersuchung wurde mir klar, dass dieser Fehler nicht bei allen mit SVG-Bildern auftreten sollte . Dies ist der relevante Teil des weasyprint Quellcode:

if mime_type == 'image/svg+xml': 
     # No fallback for XML-based mimetypes as defined by MIME 
     # Sniffing Standard, see https://mimesniff.spec.whatwg.org/ 
     image = SVGImage(string, url) 
    else: 
     # Try to rely on given mimetype 
     try: 
      if mime_type == 'image/png': 
       try: 
        surface = cairocffi.ImageSurface.create_from_png(
          BytesIO(string)) 
       except Exception as exception: 
         raise ImageLoadingError.from_exception(exception) 
       else: 
        image = RasterImage(surface) 
      else: 
       image = None 
     except ImageLoadingError: 
      image = None 

     # Relying on mimetype didn't work, give the image to GDK-Pixbuf 
     if not image: 
      if pixbuf is None: 
       raise ImageLoadingError(
         'Could not load GDK-Pixbuf. PNG and SVG are ' 
         'the only image formats available.') 

Wie Sie sehen können, wenn es ein png oder svg mit der richtigen MIME-Typ pixbuf überhaupt nicht verwendet. Nachdem ich das gelesen hatte, wurde mir klar, dass es ein Problem mit der SVG sein muss. Der Image-Server, S3 in meinem Fall serviert die Svg mit dem falschen content_type.

Nach der Fehlerbehebung ist der Fehler nicht mehr aufgetreten und ich kann SVGs mit weasyprint drucken.

0

Wir sind auch auf dieses Problem gestoßen. Wenn Sie nicht unbedingt die neueste Version von WeasyPrint benötigen, können Sie sie auf eine Version setzen, für die in der Datei requirements.txt kein gdk-pixbuf2 erforderlich ist.

WeasyPrint==0.26 

(Es könnte als 0,26 mit einem späteren verison arbeiten, ist es genau das, was ich in einem meiner Projekte hatte)

1

ich eine Lösung gefunden, die durch die manuellen Aufbau gdk-pixbuf2 für mich gearbeitet, unter Meinem Skript von https://gist.github.com/whyvez/1e0212a35da97aa8f1b1 abgeleitet, wo sie magisches Bild

weazy.conf

files: 
"/opt/elasticbeanstalk/hooks/appdeploy/pre/00_instal_weasyprint_prerequisites.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 

     yum install -y libxml2-devel libxslt-devel python-devel redhat-rpm-config libffi-devel cairo pango 

     export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/lib/pkgconfig 
     export PATH=/usr/bin:$PATH 
     export LDFLAGS=-L/usr/lib64:/usr/lib 
     export LD_LIBRARY_PATH=/usr/lib64:/usr/lib 
     export CPPFLAGS=-I/usr/include 

     sudo yum-config-manager --enable epel 
     sudo yum update -y 
     sudo yum install -y gcc gcc-c++ glib2-devel.x86_64 libxml2-devel.x86_64 libpng-devel.x86_64 \ 
     libjpeg-turbo-devel.x86_64 gobject-introspection.x86_64 gobject-introspection-devel.x86_64 

     wget http://ftp.gnome.org/pub/GNOME/sources/libcroco/0.6/libcroco-0.6.8.tar.xz 
     tar xvfJ libcroco-0.6.8.tar.xz 
     cd libcroco-0.6.8 
     ./configure --prefix=/usr 
     make 
     sudo make install 
     cd .. 

     wget http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.28/gdk-pixbuf-2.28.2.tar.xz 
     tar xvfJ gdk-pixbuf-2.28.2.tar.xz 
     cd gdk-pixbuf-2.28.2 
     ./configure --prefix=/usr --without-libtiff 
     make 
     sudo make install 
     cd .. 

     sudo yum install -y pixman-devel.x86_64 harfbuzz-devel.x86_64 freetype-devel.x86_64 

     wget wget http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.10.91.tar.gz 
     tar xvf fontconfig-2.10.91.tar.gz 
     cd fontconfig-2.10.91 
     ./configure --prefix=/usr --enable-libxml2 
     make 
     sudo make install 
     cd .. 

     wget http://cairographics.org/releases/cairo-1.12.14.tar.xz 
     tar xvfJ cairo-1.12.14.tar.xz 
     cd cairo-1.12.14 
     ./configure --prefix=/usr 
     make 
     sudo make install 
     cd .. 

     wget http://ftp.gnome.org/pub/GNOME/sources/pango/1.34/pango-1.34.1.tar.xz 
     tar xvfJ pango-1.34.1.tar.xz 
     cd pango-1.34.1 
     ./configure --prefix=/usr 
     make 
     sudo make install 
     cd .. 

     wget http://ftp.gnome.org/pub/GNOME/sources/librsvg/2.40/librsvg-2.40.6.tar.xz 
     tar xvfJ librsvg-2.40.6.tar.xz 
     cd librsvg-2.40.6 
     ./configure --prefix=/usr 
     make 
     sudo make install 
     cd .. 


     sudo ldconfig /usr/lib 
+0

Diese großen gearbeitet, die Installation benötigten dank ! Ich habe es vereinfacht, weil ich nur gdk-pixbuf brauchte, da ich nicht in der Lage war, JPEGs in meinen generierten Dateien erscheinen zu lassen, und die Dinge funktionieren jetzt perfekt. – capcom

+0

Sie sind herzlich willkommen –

Verwandte Themen