PDFs in Docker mit .NET erzeugen

Ein einfaches .NET-Runtime-Image genügt, um mit DocToolkit PDFs zu erzeugen. Diese Anleitung nennt das Image, das Sie verwenden sollten, das, das Sie meiden sollten, und warum das PDF in einem schlanken Image ohne installierte Schriftarten kleiner ist.

FROM mcr.microsoft.com/dotnet/runtime:8.0

Nichts zusätzlich zu installieren

  • Die Bibliothek braucht keine nativen Binärdateien, daher genügt ein einfaches .NET-Runtime-Image.
  • Es gibt nichts per apt-get install zu installieren und keine LibreOffice-Schicht.

Verwenden Sie runtime, nicht runtime-deps

  • Verwenden Sie runtime, nicht runtime-deps.
  • Das Image runtime-deps enthält die nativen Abhängigkeiten der .NET-Runtime, aber nicht die Runtime selbst. Es ist für eigenständige (self-contained) Veröffentlichungen gedacht.
  • Eine Framework-abhängige App, die in runtime-deps kopiert wird, scheitert beim Start, nicht beim Build.

Schriftarten in einem schlanken Image

  • Ein schlankes Image hat keine Schriftarten installiert, und das verändert das PDF, das Sie erhalten.
  • Auf einem Entwicklungsrechner mit Systemschriftarten wird die Schrift in das PDF eingebettet. Dieselbe Rechnung ist etwa 167 KB groß und enthält Arial-Regular und Arial-Bold.
  • In einem schlanken Container ohne Schriftarten greift das PDF auf die Base-14-Standardschriften (Helvetica) zurück. Dieselbe Rechnung ist etwa 1,5 KB groß und bettet nichts ein.
  • Beide sind gültige PDFs, und beide werden dargestellt. Arial und Helvetica sind metrisch kompatibel, daher verschieben sich die Zeilenumbrüche nicht, aber die Glyphen sind nicht identisch.

Ohne Netzwerk geprüft

  • Das Container-Beispiel wird in der CI mit --network none gebaut und ausgeführt.
  • So bleibt die Offline-Aussage wahr, statt nur eine Behauptung in einer README zu bleiben.

Was es nicht kann

  • Ein in Ihrem Container erzeugtes PDF wird nie byte-identisch mit einem auf Ihrem Laptop erzeugten sein. Prüfen Sie Bytegröße oder Hash eines PDFs nicht umgebungsübergreifend.
  • Wenn Sie eine bestimmte Schrift brauchen, installieren Sie sie im Image.
  • Nicht-lateinischer Text hängt von den Schriftarten des Hosts ab, sofern Sie keine mitliefern. PdfFontOptions gilt für DOCX, HTML, XLSX und PPTX nach PDF; Markdown nach PDF akzeptiert es nicht.