J'ai tenté de convertir mon mybook.adoc
à mybook.pdf
en utilisant pandoc
, et a obtenu l'erreur suivante.
$ pandoc -s mybook.adoc -t asciidoc -o mybook.pdf
pandoc: cannot produce pdf output with asciidoc writer
Existe-t-il un autre outil que je devrais utiliser à la place ou de concert avec pandoc
? Comment convertir asciidoc en pdf?
Je me rends compte maintenant que la route idéale d'asciidoc en pdf est de convertir d'abord l'asciidoc en docbook. Il utilise la sphère d'asciidoc prévue et un convertisseur docbook-> pdf utilisant chacun dans son domaine de préoccupation distinct.
De plus, au lieu de pandoc
, j'ai constaté que lorsque des formules mathématiques étaient incluses, il était plus facile d'utiliser dblatex
pour la conversion docbook-> pdf. Ainsi, mon pipeline de conversion est le suivant:
asciidoc -> asciidoctor -> docbook -> dblatex -> pdf
Un exemple de fichier make:
make: my.adoc
asciidoc -b docbook my.adoc
dblatex my.xml
Cette discussion page suggère que asciidoc est principalement conçu pour être compilé dans docbook.
Prérequis : tout ce dont vous avez besoin est Ruby (1.9.3 ou supérieur)
Installer un convertisseur natif PDF pour AsciiDoc - Asciidoctor PDF :
gem install asciidoctor-pdf --pre
Exécuter :
asciidoctor-pdf mybook.adoc
Vous devriez obtenir le fichier mybook.pdf dans le même répertoire.
La façon la plus simple de convertir un document AsciiDoc en PDF est la suivante -
Terminé.
Si vous utilisez VS Code, Ctrl + SHFT + P
et tapez AsciiDoc: Export document as pdf
AsciiDoc a quelques chaînes d'outils qui rendront les PDF à partir de la source AsciiDoc. Vous pouvez utiliser AsciiDoc basé sur Ruby -> Prawn -> PDF toolchain développé par Asciidoctor, ou vous pouvez utiliser l'ancien AsciiDoc -> DocBook -> FOP - toolchain . Il s'agit de procédures de rendu/publication, alors que Pandoc fournit principalement la conversion et est préférable pour la conversion à partir d'un ou d'un autre type de format source.
Un autre flux de travail, que j'utilise beaucoup, consiste à créer du HTML à partir de votre fichier AsciiDoc à l'aide du processeur AsciiDoctor, en liant une feuille de style CSS personnalisée avec des règles de style d'impression:
asciidoctor -a stylesheet=path-to-stylesheet.css file.adoc
Vous pouvez ensuite ouvrir le fichier HTML dans votre navigateur et imprimer au format PDF.
Pour un style plus avancé, comme la numérotation des pages, les en-têtes, les pieds de page, les sauts de page et les colonnes, vous pouvez utiliser PrinceXML (ou d'autres produits similaires). Il s'agit d'un processeur de ligne de commande qui convertira le fichier HTML en PDF en utilisant les règles de style dans le CSS utilisé par le fichier HTML. PrinceXML applique des règles de style qui sont dans la norme CSS3 mais qui ne le sont pas pourtant pris en charge par les navigateurs, vous permettant de créer des mises en page de style fin.
Si Docker est installé, vous pouvez utiliser le AsciiDoctor Docker Image . Ensuite, vous pouvez utiliser l'image de manière interactive ou en mode batch comme expliqué ci-dessous:
Conditions préalables
Installez l'image Docker:
$ docker pull asciidoctor/docker-asciidoctor
Créez le pdf en exécutant la commande suivante:
$ cd [directory to where my book.adoc is located]
$ docker run --rm -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf mybook.adoc
docker run
Démarre un conteneur Docker--rm
Nettoyage - supprime le conteneur Docker après l'exécution de la commande-v
monter un volume à l'image$(pwd)
récupère le chemin du répertoire courant, par ex. la valeur de [directory to where my book.adoc is located]
ci-dessusdocuments
le nom du volume monté dans le conteneur en cours d'exécutionasciidoctor/docker-asciidoctor
Le nom de l'image Docker utilisée pour créer le conteneur Dockerasciidoctor-pdf
La commande qui déclenche réellement la génération du pdfmybook.adoc
Le nom du fichier source AsciiDoc à partir duquel générer le pdfVoir aussi la documentation docker run
Suite à la réponse de @ Remis, j'ai utilisé le backend pdf d'asciidoctor.
Je n'arrivais pas à comprendre comment installer asciidoctor-pdf
sur nixos, mais a réussi à trouver l'alternative suivante qui a fonctionné:
asciidoctor -r asciidoctor-pdf -b pdf or asciidoctor-pdf