Einen Textpuffer in eine PDF-Datei konvertieren?

15

Wie können wir den aktuellen Textpuffer in eine PDF-Datei konvertieren und die mit * beginnenden Überschriften vorzugsweise in Lesezeichen der PDF-Datei umwandeln? Beispiel: Das in Emacs integrierte Lernprogramm (gezeigt von Ch t) wird in eine PDF-Datei mit Lesezeichen umgewandelt. Vielen Dank.

Tim
quelle
2
Schauen Sie sich den Export von org-modenach LaTeX / PDF an .
PythonNut
2
speziellorg-latex-export-to-pdf
casey
6
Nur aus Gründen der Vielfalt: Sie können C-u M-x ps-print-bufferdie resultierende PostScript-Datei in eine PDF-Datei konvertieren (wenn Ihre Dateien keine Org-Dateien sind und Sie nur PDF-Dateien im Nur-Text-Format haben möchten). Genauso ps-print-buffer-with-faceshört es sich an.
wvxvw
@ PythonNut:C-c C-e is undefined
Tim
@casey: Der Befehl wurde nicht gefunden
Tim

Antworten:

13

Sie können das Folgende in Ihre einfügen init.elund die Funktion an eine Bindung Ihrer Wahl binden.

Die Funktion druckt die Datei im aktuellen Puffer standardmäßig als PDF im selben Ordner.

Hier benötigt die Funktion die Binärdatei ps2pdffür die Konvertierung .psnach .pdf. Sie können dies jedoch durch jeden verfügbaren PDF-Generator auf Ihrem System ersetzen.

(require 'ps-print)
(when (executable-find "ps2pdf")
  (defun modi/pdf-print-buffer-with-faces (&optional filename)
    "Print file in the current buffer as pdf, including font, color, and
underline information.  This command works only if you are using a window system,
so it has a way to determine color values.

C-u COMMAND prompts user where to save the Postscript file (which is then
converted to PDF at the same location."
    (interactive (list (if current-prefix-arg
                           (ps-print-preprint 4)
                         (concat (file-name-sans-extension (buffer-file-name))
                                 ".ps"))))
    (ps-print-with-faces (point-min) (point-max) filename)
    (shell-command (concat "ps2pdf " filename))
    (delete-file filename)
    (message "Deleted %s" filename)
    (message "Wrote %s" (concat (file-name-sans-extension filename) ".pdf"))))
Kaushal Modi
quelle
2

Hiermit wird nicht das spezifische Problem der Lesezeichen in der PDF-Datei behoben, sondern das allgemeine Problem der Konvertierung von Puffern in PDF.

Wenn Sie einen PDF- "Screenshot" des Puffers erhalten möchten, wie er tatsächlich angezeigt wird - ohne verborgenen Text -, ist es eine gute Alternative, den Puffer zu htmlisieren und das Ergebnis von HTML in PDF zu konvertieren. Sie können dies beispielsweise verwenden, um eine PDF-Version Ihrer Org-Agenda zu erstellen. (Beachten Sie, dass die ps-print-basierten Antwort von Kaushal Modi würde zeigen Pufferinhalt verborgen.)

Rezept

M-x htmlize-buffer RET, C-x C-w buf.html RET; Führen Sie dann in der Befehlszeile Folgendes aus:

pandoc --from=html --to=latex --variable geometry="landscape" -o buf.pdf buf.html

Beispiel (Screenshot)

Bildbeschreibung hier eingeben

Siehe auch

Es gibt hier eine interessante Diskussion über "Vektor-Screenshots": Kann ich Vektor-Screenshots (SVG) von Emacs machen? (Was ich beschrieben habe, kann als sehr begrenztes Beispiel für einen "Vektor-Screenshot" angesehen werden.)

Joe Corneli
quelle
2

Sie können C-u M-x ps-print-bufferden aktuellen Puffer in eine PS-Datei drucken und dann weiterleiten ps2pdf.

Arne
quelle