[PYTHON] PDF mit WeasyPrint ausgeben

Einführung

Persönlich kenne ich wkhtmltopdf als Bibliothek für die Ausgabe von PDF. Ich habe jedoch zufällig eine Bibliothek namens WeasyPrint gefunden, also habe ich es versucht.

Installation

$ pip install weasyprint

Anwendungsbeispiel

Konvertieren Sie den folgenden HTML-Code in PDF. Da es eine große Sache ist, kann es wie ein PDF-Dokument in zwei Spalten angezeigt werden.

quanon/magica.html

Der Text lautet [Wikipedia »Magisches Mädchen Madoka ☆ Magica](https://ja.wikipedia.org/wiki/%E9%AD%94%E6%B3%95%E5%B0%91%E5%A5%B3" Zitiert aus% E3% 81% BE% E3% 81% A9% E3% 81% 8B% E2% 98% 86% E3% 83% 9E% E3% 82% AE% E3% 82% AB).

01.png

Wir haben auch ein PDF-spezifisches CSS namens "pdf.css".

pdf.css


@page {
  margin: 8.0rem 2.0rem;
  font-family: YuMincho, "Hiragino Mincho ProN", serif;

  @top-center {
    content: "Magisches Mädchen Madoka ☆ Magica";
    vertical-align: bottom;
    font-size: 1.2rem;
    border-bottom: 0.1rem solid;
    margin-bottom: 1.2rem;
  }

  @bottom-right {
    content: counter(page) " / " counter(pages);
  }
}

Geben Sie die PDF-Datei mit dem folgenden Befehl aus.

$ weasyprint magica.html magica.pdf -s pdf.css

Es war: tada:

Hier ist das Ausgabe-PDF.

スクリーンショット 2017-09-11 22.46.36.png

Es ist einfach zu bedienen und hat eine Menge Dokumentation, daher möchte ich es auch in Zukunft weiter verwenden: sparkling_heart:

Bonus: Docker kompatibel

Dockerfile


FROM python:3.6.2

RUN apt-get update \
 && apt-get install -y \
      python-lxml \
      fontconfig \
      libcairo2 \
      libpango1.0-0 \
      libgdk-pixbuf2.0-0 \
      libffi-dev \
      shared-mime-info \
      unzip \
 && apt-get autoremove \
 && apt-get clean

WORKDIR /opt

ENV WEASYPRINT_VERSION 0.40
RUN pip install weasyprint==$WEASYPRINT_VERSION

ADD https://noto-website.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip .
RUN unzip -d noto NotoSerifCJKjp-hinted.zip \
 && mkdir -p /usr/share/fonts/opentype \
 && mv -fv noto /usr/share/fonts/opentype/noto \
 && rm -rfv NotoSerifCJKjp-hinted.zip \
 && fc-cache -fv

docker-compose.yml


version: '3.3'
services:
  weasyprint:
    build: .
    volumes:
      - .:/opt/data-volume
    working_dir: /opt/data-volume
    entrypoint:
      - weasyprint
    command:
      - -h
$ docker-compose run weasyprint magica.html magica.pdf -s pdf.css

Referenz

WeasyPrint

CSS

Recommended Posts

PDF mit WeasyPrint ausgeben
PDF mit Django ausgeben
PDF mit Latex-Erweiterung mit Sphinx ausgeben
Markdown-Ausgabe mit Django
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Testen Sie die Standardausgabe mit Pytest
Integrieren Sie PDF-Dateien in Python
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
Nummerieren Sie Kapitel und Abschnitte bei der Ausgabe in PDF (rst2pdf) mit Sphinx
Ausgabe in eine CSV-Datei mit Python
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Anrufdiagramm mit PyCallGraph ausgeben
[Hinweis] Hallo Weltausgabe mit Python
Unit Test Log Ausgabe mit Python
Konvertieren Sie PDF in Image mit ImageMagick
Versuchen Sie, Audio mit M5 STACK auszugeben
NetzwerkX-Diagramm mit graphviz ausgeben (PyGraphviz)
Geben Sie Farbzeichen mit Python zu hübsch aus
Konvertieren Sie mit pdfplumber von PDF in CSV
Extrahieren Sie japanischen Text aus PDF mit PDFMiner
Vereinfachen Sie das Entsperren von PDF-Passwörtern mit Python + Bat
UnicodeEncodeError hat Probleme mit der Standardausgabe von Python3
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
Reichhaltige Zellenausgabe mit Jupyter Notebook (IPython)