web-dev-qa-db-fra.com

Exportation sans effort du wiki github (?)

Je collectionne pas mal de matériel dans un wiki GitHub. J'aime vraiment utiliser le wiki pour coopérer avec d'autres personnes et à mon humble avis, la plate-forme est vraiment agréable, je l'aime!

Donc, j'aimerais continuer à utiliser le wiki GH pour collecter des éléments, modifier, enregistrer, etc., mais j'aimerais également exporter le contenu afin de créer un fichier pdf que nous pourrons appeler "un manuel" . tiens à générer automatiquement une version mise à jour du manuel chaque fois que je veux exécuter quelques scripts, je ne peux pas y mettre trop d’efforts.

J'imagine qu'il est possible d'exporter le contenu d'une manière ou d'une autre et d'utiliser pandoc ( http://johnmacfarlane.net/pandoc/ ) pour créer le fichier PDF en ajoutant éventuellement un index et un fichier de style.

Une autre idée intéressante pourrait être de publier un site Web une fois par mois en vidant directement le contenu du wiki.

Je suppose que d'autres personnes ont déjà fait quelque chose comme ça mais je n'ai rien trouvé. Une idée?

37
BigG

Mais ... le wiki Github d'un dépôt GitHub est un dépôt Git en lui-même ( introduit en août 2010 ).

Vous pouvez le cloner, y pousser ou en tirer.

Chaque wiki est un référentiel Git, vous pouvez donc le pousser et le tirer comme n'importe quoi d'autre.
Chaque wiki respecte les mêmes autorisations que le référentiel source.
Ajoutez simplement ".wiki" à n'importe quel nom de référentiel dans l'URL, et vous êtes prêt. 

Cela rend la partie "exportation" de votre question vraiment triviale.

À partir de là, vous trouverez des tonnes de scripts pour convertir des pages de démarques en pdf:

50
VonC

J'ajoute à cette réponse, au cas où cela aiderait les nouveaux lecteurs :), voici ce que j'ai fait:

J'ai installé GitHub Desktop: https://desktop.github.com/

Ensuite, sur la page wiki de mon référentiel, j'ai cliqué sur "Cloner dans le bureau"  Clone

Cela a sauvegardé le wiki localement en tant que fichier .md (après avoir suivi les étapes à l'écran)

J'ai ensuite utilisé http://www.markdowntopdf.com/ pour le convertir en pdf .__ (Remarque: j'ai renommé les fichiers pour supprimer les caractères qui ne fonctionneraient pas dans un nom de fichier pdf avant mise en ligne sur le site)

Le résultat final était vraiment sympa.

8
Sophia

J'ai trouvé de nombreuses solutions difficiles à reproduire/obtenir la bonne version/comprendre/corriger/etc ... Je vais donc vous présenter une solution de docker en patchwork pour convertir sans effort sur Windows (avec git bash)/MacOS/Linux dans 5 commandes "faciles"

git clone {project_url}.wiki .

# Convert *.md to *.md.html using the actual github pipeline
docker run --rm -e DOCKER_USER_ID=`id -u` -e DOCKER_GROUP_ID=`id -u` \
            v "`pwd`:/src" -v "`pwd`:/out" andyneff/github-markdown-preview

# Fix hyperlinks, since wkhtmltopdf is stricter than github servers
docker run --rm -v `pwd`:/src -w /src Perl \
    Perl -p -i -e 's|(<a href=")([^/"#]+?)(#[^"]*)?(">.*?</a>)|\1\L\2\E.md.html\L\3\E\4|g'\
                  *.html

# Lowercase all filename so that hyperlink match
docker run --rm -v `pwd`:/src -w /src python \
    python -c 'import sys;import os; [os.rename(f, f.lower()) for f in sys.argv[1:]]' \
               *.md.html

#Convert html to pdf using QT webkit
docker run -it --rm -e DOCKER_USER_ID=`id -u` -e DOCKER_GROUP_ID=`id -u`\
           -v `pwd`:/work -w /work andyneff/wkhtmltopdf \
           wkhtmltopdf --encoding utf-8 --minimum-font-size 14 \
           --footer-left "[date]" --footer-right "[page] / [topage]" \
           --footer-font-size 10 \
           toc \
           *.html document.pdf

Le Perl est la partie principale qui peut échouer sans une meilleure solution. Pandoc a une très bonne solution de filtrage, mais n'utilise pas le pipeline github.

Bogues

  • Les blocs de code extra-larges seront rendus avec une barre de défilement et seront essentiellement coupés dans le pdf. Il serait préférable que le bloc de code ne déborde pas, mais vous pouvez ajouter --user-style-sheet user.css à la commande wkhtmltopdf (avant la toc/cover) et l'ajouter à votre user.css.

    .markdown-body .highlight pre,
    .markdown-body pre{
      overflow:visible !important;
    }
    
  • Certains liens dans le pdf final sont décalés de +1 page, d'autres non. Je ne sais pas quel est le motif. Mais les ancres avec ids (#) ne semblent pas avoir ce problème

3
Andy

C'est précisément ce que j'ai fait lors de la création de la documentation portable pour Barcode Writer en langage PostScript pur :

GitHub Wiki + Makefile + pandoc → PDF

Le processus est décrit dans ce blog post .

1
Terry Burton

Vous pouvez également essayer html_links_to_pdf !

Il s’agit d’un script Python 3 conçu uniquement pour convertir un wiki GitHub en formulaire PDF, en utilisant le même style que GitHub, mais légèrement plus propre.

0
user3773048

Une autre option une fois que vous clonez le wiki, en particulier si vous utilisez déjà Atom, consiste à utiliser ce Markdown dans PDF package. A bien fonctionné pour moi. 

0
davidheller