crystal-asciidoctor-pdf
= crystal-asciidoctor-pdf
Un convertisseur AsciiDoc vers PDF pour Crystal, basé sur crystal-asciidoctor pour le parsing et crystal-pdf pour la génération du PDF.
== Versions
[cols="2,2,2"] |=== | | Version | Date
| Gem Ruby asciidoctor-pdf (source du portage) | 2.3.24 | 2025-11-15
| Gem Ruby asciidoctor (parser, via crystal-asciidoctor) | 2.0.26 | 2025-10-24
| Shard Crystal crystal-asciidoctor-pdf | 0.1.0 | 2026-04-02 |===
NOTE: Ce shard est un portage de la gem Ruby asciidoctor-pdf 2.3.24 et repose sur crystal-asciidoctor, lui-même porté depuis asciidoctor 2.0.26. Vérifier les versions sur RubyGems : https://rubygems.org/gems/asciidoctor-pdf/versions[asciidoctor-pdf] | https://rubygems.org/gems/asciidoctor/versions[asciidoctor].
== Fonctionnalités
=== Conversion AsciiDoc
- Paragraphes, sections (niveaux 1-6), listes (ordonnées, non ordonnées, description)
- Tableaux avec en-têtes, pieds de page et alternance de couleurs
- Blocs de code avec coloration syntaxique (Crystal, Ruby, Python, JavaScript, TypeScript, Go, Java, C, C++, Bash, SQL)
- Admonitions (NOTE, TIP, WARNING, CAUTION, IMPORTANT)
- Citations, vers, sidebars, exemples
- Images (JPEG, PNG avec transparence)
- Page de titre, en-têtes et pieds de page configurables
- Table des matières (TOC)
- Index alphabétique multi-colonnes
- Notes de bas de page
=== Fonctionnalités PDF
- Bookmarks : les sections du document génèrent automatiquement une arborescence de signets dans le panneau de navigation PDF
- Liens cliquables : les URLs dans le document produisent des annotations PDF cliquables
- Métadonnées : titre, auteur et producteur renseignés dans les propriétés du PDF
- Mesures de texte exactes : utilisation des métriques de police Type1/TrueType (pas d'approximation)
=== Polices personnalisées
Le converter supporte les polices TrueType/OpenType via le système de thèmes. Si des chemins de polices sont définis dans le thème, elles sont automatiquement chargées, embarquées et sous-ensemblées dans le PDF.
[source,yaml]
Exemple de thème avec polices TTF
base_font_path: "fonts/OpenSans-Regular.ttf" base_font_bold_path: "fonts/OpenSans-Bold.ttf" base_font_italic_path: "fonts/OpenSans-Italic.ttf" mono_font_path: "fonts/JetBrainsMono-Regular.ttf"
Sans polices TTF, les polices standard PDF (Helvetica, Courier) sont utilisées.
=== Thèmes
Le rendu PDF est entièrement personnalisable via un fichier YAML (~60 propriétés) : taille et couleur des polices, marges, couleurs des admonitions, style des tableaux, en-têtes/pieds de page, etc.
[source,crystal]
theme = AsciidoctorPDF::ThemeLoader.load("mon-theme.yml") converter = AsciidoctorPDF::Converter.new("pdf", theme)
== Installation
. Ajoutez cette dépendance à votre fichier shard.yml : + [source,yaml]
dependencies: crystal-asciidoctor-pdf: github: aloli-crystal/crystal-asciidoctor-pdf
. Exécutez shards install
== Utilisation
[source,crystal]
require "crystal-asciidoctor-pdf"
input = <<-ADOC = Mon Document Auteur
== Introduction
Un paragraphe avec gras et italique.
== Code
[source,crystal] ---- puts "Bonjour !" ---- ADOC
doc = Asciidoctor.load(input, options: {"safe" => "safe", "outfile" => "document.pdf"}) AsciidoctorPDF::Converter.new.convert(doc)
== Ligne de commande
Ce shard fournit également un exécutable crystal-asciidoctor-pdf :
[source,bash]
crystal-asciidoctor-pdf mon_document.adoc
Par défaut, la commande génère un fichier mon_document.pdf.
== Développement
Pour contribuer, clonez les trois dépôts au même niveau :
[source,bash]
git clone https://github.com/aloli-crystal/crystal-asciidoctor.git git clone https://github.com/aloli-crystal/crystal-pdf.git git clone https://github.com/aloli-crystal/crystal-asciidoctor-pdf.git cd crystal-asciidoctor-pdf shards install crystal spec
Les dépendances locales (path: ../crystal-asciidoctor et path: ../crystal-pdf) sont utilisées pour le développement.
== Contribuer
. Forkez le projet ( https://github.com/aloli-crystal/crystal-asciidoctor-pdf/fork ) . Créez votre branche de fonctionnalité (git checkout -b ma-nouvelle-fonctionnalite) . Commitez vos changements (git commit -am 'Ajouter une nouvelle fonctionnalité') . Poussez vers la branche (git push origin ma-nouvelle-fonctionnalite) . Créez une nouvelle Pull Request
== Contributeurs
- https://github.com/papilip[papilip] - créateur et mainteneur
crystal-asciidoctor-pdf
- 0
- 0
- 0
- 0
- 1
- about 6 hours ago
- March 13, 2026
Tue, 07 Apr 2026 22:20:21 GMT