convertire un buffer di testo in un file pdf?


15

Come possiamo convertire l'attuale buffer di testo in un file pdf, preferibilmente trasformando quelle intestazioni iniziate con * in segnalibri del file pdf. Ad esempio, trasformando il tutorial integrato di Emacs (mostrato da Ch t) in un file pdf con segnalibro. Grazie.



2
in particolareorg-latex-export-to-pdf
casey,

6
Solo per motivi di diversità: puoi fare C-u M-x ps-print-buffere quindi convertire il file PostScript risultante in PDF (se i tuoi file non sono file Org e vuoi solo avere un tipo di PDF di testo normale). Allo stesso modo, ps-print-buffer-with-facesè come sembra.
wvxvw,

@PythonNut:C-c C-e is undefined
Tim

@casey: il comando non è stato trovato
Tim

Risposte:


13

Puoi inserire il seguito nel tuo init.ele associare la funzione a un'associazione di tua scelta.

La funzione stampa il file nel buffer corrente come PDF nella stessa cartella per impostazione predefinita.

Qui la funzione richiede il binario ps2pdfper la conversione .psin .pdf. Ma puoi sostituirlo con qualsiasi generatore di pdf disponibile sul tuo sistema.

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

2

Questo non risolve il problema specifico dei segnalibri nel PDF, ma risolve il problema generale della conversione dei buffer in PDF.

Se vuoi ottenere uno "screenshot" PDF del buffer come lo vedi effettivamente - senza mostrare il testo nascosto - allora una buona alternativa è quella di htmlize il buffer e convertire il risultato da HTML a PDF. È possibile utilizzarlo, ad esempio, per creare una versione PDF dell'agenda della propria organizzazione. (Nota che la ps-printrisposta basata su Kaushal Modi mostrerebbe il contenuto nascosto del buffer.)

ricetta

M-x htmlize-buffer RET, C-x C-w buf.html RET; quindi esegui dalla riga di comando:

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

esempio (screenshot)

inserisci qui la descrizione dell'immagine

Guarda anche

C'è un'interessante discussione sui "screenshot vettoriali" qui: posso prendere screenshot vettoriali (SVG) di Emacs? (quello che ho descritto potrebbe essere visto come un esempio molto limitato di "screenshot vettoriale".)


2

È possibile eseguire la C-u M-x ps-print-bufferstampa del buffer corrente su un file PS e quindi reindirizzarlo ps2pdf.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.