Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique

Bad Request

Chose que tu veux faire

Convertissez le code source comme hogehoge.py en un fichier pdf avec une coloration syntaxique

Contexte

Comme l'a2ps que j'ai utilisé il y a longtemps

% cat hogehoge.txt | a2ps | lpr -Pprinter_name

Je cherchais un outil qui pourrait facilement imprimer pendant un certain temps. Mais, Je ne trouve pas d'outil comme celui-ci, alors j'ai dû le fabriquer moi-même.

J'ai pensé à utiliser un tuyau pour alimenter le fichier pdf dans l'imprimante sans le gaspiller, mais je ne pouvais pas y penser. Pour le moment, j'ai décidé de sortir le pdf.

politique

  1. Créez un fichier pdf avec une seule commande
  2. Appelez pandoc depuis python pour le traitement
  3. Ajouter le numéro de ligne au code

Mon environnement

Matériel et OS

  1. Macbook Pro (13-inch 2019, Four Thunderbolt 3 ports)
  2. 2.8GHz Quad Core Intel Core i7
  3. RAM 16GB
  4. macOS Catalina 10.15.4

Logiciel

  1. LuaLaTeX (This is LuaTeX, Version 1.10.0 (TeX Live 2019))
  2. pandoc (pandoc 2.2.3.2)
  3. python (Python 3.7.7 (default, Mar 23 2020, 17:31:31))

Créé

Je vais coller la source. C'est mieux si vous faites des choses bizarres ou faites ça! Nous vous serions reconnaissants de bien vouloir nous donner votre avis.

code2pdf


#!/usr/bin/env python
import sys
import os
import subprocess

if len(sys.argv) < 2:
    print('Usage: %s FILENAME' % (sys.argv[0]))
    sys.exit()

args = sys.argv
filename = sys.argv[1]
extension = filename.rsplit('.',1)

if extension[1] == 'py':
    LANG = '{.python .numberLines}'
elif extension[1] == 'sh':
    LANG = '{.sh .numberLines}'
elif extension[1] == 'html':
    LANG = '{.html .numberLines}'
elif extension[1] == 'htm':
    LANG = '{.html .numberLines}'
else:
    LANG = ''

f = open(filename)
body = f.read()
f.close()
data_out = '# ' + filename + '\n' + '```'+ LANG +'\n' + body + '\n```'

subprocess.run(['pandoc',\
                '-o',extension[0]+'.pdf',\
                '--pdf-engine=lualatex',\
                '-V', 'documentclass=bxjsarticle',\
                '-V', 'classoption=pandoc,jafont=ipaex',\
                '--highlight-style=kate',\
#                '-H', '~/local/header.tex', #Écrire dans le préambule
                '-V', 'linestretch:0.75',\
                '-V', 'pagestyle:empty',\
                '-V', 'geometry:top=8truemm',\
                '-V', 'geometry:bottom=12truemm',\
                '-V', 'geometry:left=20truemm',\
                '-V', 'geometry:right=12truemm',\
                '-V', 'papersize=a4',\
                '-V', 'fontsize:9pt'],\
                input=data_out, text=True, encoding='UTF-8')

Comment utiliser

$ code2pdf hogehoge.py

terminer

J'ai fait une capture d'écran du code ci-dessus en pdf.

スクリーンショット 2020-04-10 7.19.23.png

La couleur de la surbrillance de la syntaxe peut être modifiée.

Les paramètres actuellement disponibles peuvent être trouvés avec l'option --list-highlight-styles. Le résultat de l'exécution dans mon environnement est le suivant.

$ pandoc --list-highlight-styles
pygments
tango
espresso
zenburn
kate
monochrome
breezedark
haddock

Il y a un échantillon de couleur sur cette page.

pandoc_highlight

Veuillez également vérifier.

Tâches futures

  1. Utilisez un tuyau pour verser directement dans l'imprimante
  2. Vérifiez les paramètres de police pour en faciliter la lecture

Recommended Posts

Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique
Convertissez l'image au format .zip en PDF avec Python
Convertir Markdown en PDF en Python
Convertir des fichiers PDF en fichiers PNG avec GIMP
Convertir le fichier FBX en ASCII <-> BINARY en Python
Convertir un PDF en image (JPEG / PNG) avec Python
Convertissez des PDF en images en masse avec Python
Conversion par lots de fichiers PSD du répertoire en PDF
Comment convertir / restaurer une chaîne avec [] en python
Intégrez des fichiers PDF avec Python
Comment ajouter des numéros de page à un fichier PDF (en Python)
Convertir la liste en DataFrame avec python
Lire des fichiers en parallèle avec Python
Convertir un PDF en image avec ImageMagick
Convertir un script Python écrit dans PyTorch en exe avec PyInstaller
Essayez de vous connecter à qiita avec Python
Convertir un mémo à la fois avec Python 2to3
Convertir de PDF en CSV avec pdfplumber
Convertir un fichier psd en png en Python
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Comment utiliser BigQuery en Python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Convertir des nombres chinois en nombres arabes avec Python
Pour faire fonctionner la station d'horodatage en Python
Convertir de Markdown en HTML en Python
Convertir une URL absolue en URL relative en Python
Exemple de conversion en ondelettes d'images en Python
[COMMENT FAIRE] Un moyen facile de déboguer lors de la génération d'un fichier PDF avec PHP, etc.
Ajouter des points forts de la syntaxe du langage Kv à Spyder dans Python IDE
Je souhaite convertir une table convertie en PDF en Python en CSV
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
avec syntaxe (Python)
Convertissez les fichiers téléchargés vers Cloud Storage avec Cloud Functions (Python) afin qu'ils ne soient pas déformés dans Excel
[Python] Récupérez les fichiers dans le dossier avec Python
[REAPER] Comment jouer à Reascript avec Python
Introduction à la vérification de l'efficacité Chapitre 3 écrit en Python
Résumé de la façon d'importer des fichiers dans Python 3
[Automation] Extraire le tableau en PDF avec Python
Convertir un fichier svg en png / ico avec Python
Lire les données de la table dans un fichier PDF avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
Convertir des fichiers CSV UTF-8 pour les lire dans Excel
Connectez-vous à Yahoo Business avec Selenium Python
Gérer les fichiers zip avec des noms de fichiers japonais dans Python 3
Encodage de caractères lors du traitement de fichiers en Python 3
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
Convertissez plusieurs fichiers jpg en un seul fichier PDF
Télécharger des fichiers sur Google Drive avec Lambda (Python)
Convertir un float exponentiel en str en Python
Convertissez plusieurs fichiers proto à la fois avec python
Introduction à la vérification de l'efficacité Chapitre 2 écrit en Python
Convertir le code de maillage cubique en WKT en Python
Convertir une chaîne au format de liste caractère par caractère avec python
Créez une API pour convertir des fichiers PDF en images TIF avec FastAPI et Docker
Présentation du "jsii" magique qui exécute des programmes écrits en TypeScript avec Python, etc.
Comment obtenir une liste de fichiers dans le même répertoire avec python
Convertir la date et l'heure zonées en temps Unixtime dans Python2.7