Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung

Bad Request

Was du machen willst

Konvertieren Sie Quellcode wie hogehoge.py in eine PDF-Datei mit Syntaxhervorhebung

Hintergrund

Wie die a2ps, die ich vor langer Zeit benutzt habe

% cat hogehoge.txt | a2ps | lpr -Pprinter_name

Ich suchte nach einem Werkzeug, mit dem ich eine Weile problemlos drucken konnte. Aber, Ich kann so ein Werkzeug nicht finden, also musste ich es selbst machen.

Ich dachte darüber nach, die PDF-Datei mit einer Pipe in den Drucker einzuspeisen, ohne sie zu verschwenden, aber ich konnte mir das nicht vorstellen. Vorerst habe ich beschlossen, pdf auszugeben.

Politik

  1. Erstellen Sie eine PDF-Datei mit einem Befehl
  2. Rufen Sie pandoc aus Python zur Verarbeitung auf
  3. Fügen Sie dem Code die Zeilennummer hinzu

Meine Umgebung

Hardware & Betriebssystem

  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

Software

  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))

Erstellt

Ich werde die Quelle einfügen. Es ist besser, wenn Sie seltsame Dinge tun oder dies tun! Wir würden uns freuen, wenn Sie uns Ihre Meinung mitteilen könnten.

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', #Schreiben Sie in die Präambel
                '-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')

Wie benutzt man

$ code2pdf hogehoge.py

Fertig

Ich habe einen Screenshot des obigen Codes im PDF-Format erstellt.

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

Die Farbe der Syntaxhervorhebung kann geändert werden.

Derzeit verfügbare Einstellungen können mit der Option "--list-Highlight-Styles" gefunden werden. Das Ausführungsergebnis in meiner Umgebung ist wie folgt.

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

Auf dieser Seite befindet sich ein Farbmuster.

pandoc_highlight

Bitte überprüfen Sie auch.

Zukünftige Aufgaben

  1. Gießen Sie mit einem Rohr direkt in den Drucker
  2. Überprüfen Sie die Schriftarteinstellungen, um das Lesen zu erleichtern

Recommended Posts

Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung
Konvertieren Sie das Bild in .zip mit Python in PDF
Konvertieren Sie Markdown in Python in PDF
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
Konvertieren Sie die FBX-Datei in Python in ASCII <-> BINARY
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Konvertieren Sie PDFs mit Python in Massenbilder
Stapelkonvertierung von PSD-Dateien im Verzeichnis in PDF
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Integrieren Sie PDF-Dateien in Python
So fügen Sie einer PDF-Datei Seitenzahlen hinzu (in Python)
Konvertieren Sie die Liste mit Python in DataFrame
Lesen Sie Dateien parallel zu Python
Konvertieren Sie PDF in Image mit ImageMagick
Konvertieren Sie in PyTorch geschriebenes Python-Skript mit PyInstaller in exe
Versuchen Sie, sich mit Python bei qiita anzumelden
Konvertieren Sie Memos sofort mit Python 2to3
Konvertieren Sie mit pdfplumber von PDF in CSV
Konvertieren Sie die psd-Datei in Python in png
Konvertieren Sie Excel-Daten mit Python in JSON
Konvertiere Hiragana mit Python (Beta) in Romaji
So arbeiten Sie mit BigQuery in Python
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
So betreiben Sie die Zeitstempelstation in Python
In Python von Markdown in HTML konvertieren
Konvertieren Sie die absolute URL in eine relative URL in Python
Beispiel für die Wavelet-Konvertierung von Bildern in Python
[HOW TO] Einfache Möglichkeit zum Debuggen beim Generieren einer PDF-Datei mit PHP usw.
Hinzufügen von Kv-Sprachsyntax-Highlights zu Spyder in Python IDE
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
mit Syntax (Python)
Konvertieren Sie Dateien, die mit Cloud-Funktionen (Python) in den Cloud-Speicher hochgeladen wurden, so, dass sie in Excel nicht verstümmelt werden
[Python] Holen Sie sich die Dateien mit Python in den Ordner
[REAPER] Wie man Reascript mit Python spielt
Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
Zusammenfassung zum Importieren von Dateien in Python 3
[Automatisierung] Extrahieren Sie die Tabelle als PDF mit Python
Konvertieren Sie die SVG-Datei mit Python in png / ico
Lesen Sie Tabellendaten in einer PDF-Datei mit Python
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Konvertieren Sie UTF-8-CSV-Dateien in Excel
Melden Sie sich mit Selenium Python bei Yahoo Business an
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
Zeichenkodierung beim Umgang mit Dateien in Python 3
So erhalten Sie die Dateien im Ordner [Python]
Wie man tkinter mit Python in Pyenv benutzt
Konvertieren Sie mehrere JPG-Dateien in eine PDF-Datei
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Konvertieren Sie den exponentiellen Float in Python in str
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
Einführung in die Überprüfung der Wirksamkeit Kapitel 2 in Python geschrieben
Konvertieren Sie kubischen Netzcode in Python in WKT
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Erstellen Sie eine API zum Konvertieren von PDF-Dateien in TIF-Bilder mit FastAPI und Docker
Einführung in das magische "jsii", mit dem in TypeScript geschriebene Programme mit Python usw. ausgeführt werden.
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7