Générer des PDF dans Docker avec .NET

Une image .NET runtime ordinaire suffit pour générer des PDF avec DocToolkit. Ce guide indique l'image à utiliser, celle à éviter, et pourquoi le PDF est plus petit dans une image allégée sans aucune police installée.

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

Rien de plus à installer

  • La bibliothèque n'a besoin d'aucun binaire natif, donc une image .NET runtime ordinaire suffit.
  • Il n'y a rien à installer avec apt-get install et aucune couche LibreOffice.

Utilisez runtime, pas runtime-deps

  • Utilisez runtime, pas runtime-deps.
  • L'image runtime-deps contient les dépendances natives du runtime .NET, mais pas le runtime lui-même. Elle sert aux publications autonomes (self-contained).
  • Une application framework-dependent copiée dans runtime-deps échoue au démarrage, pas à la compilation.

Les polices dans une image allégée

  • Une image allégée n'a aucune police installée, et cela change le PDF que vous obtenez.
  • Sur une machine de développement avec des polices système, la police est incorporée dans le PDF. La même facture fait environ 167 KB et contient Arial-Regular et Arial-Bold.
  • Dans un conteneur allégé sans polices, le PDF se rabat sur les polices standard base-14 (Helvetica). La même facture fait environ 1,5 KB et n'incorpore rien.
  • Les deux sont des PDF valides et s'affichent tous les deux. Arial et Helvetica ont des métriques compatibles, donc les sauts de ligne ne bougent pas, mais les glyphes ne sont pas identiques.

Vérifié sans réseau

  • L'exemple Container est compilé et exécuté en CI avec --network none.
  • C'est ainsi que la promesse de fonctionnement hors ligne reste vraie, au lieu de rester une simple affirmation dans un README.

Ce qu'il ne fait pas

  • Un PDF généré dans votre conteneur ne sera jamais identique octet pour octet à un PDF généré sur votre ordinateur portable. Ne faites pas d'assertion sur la taille en octets ou le hash d'un PDF d'un environnement à l'autre.
  • Si vous avez besoin d'une police de caractères précise, installez-la dans l'image.
  • Le texte non latin dépend des polices de l'hôte, sauf si vous les fournissez. PdfFontOptions couvre DOCX, HTML, XLSX et PPTX vers PDF ; Markdown vers PDF ne l'accepte pas.