convertir un tampon de texte en fichier pdf?

15

Comment pouvons-nous convertir le tampon de texte actuel en un fichier pdf, en transformant de préférence ces en-têtes commençant par * en signets du fichier pdf. Par exemple, transformer le didacticiel intégré Emacs (illustré par Ch t) en un fichier pdf marqué d'un signet. Merci.

Tim
la source
2
Regardez l' exportation de org-modevers LaTeX / PDF .
PythonNut
2
spécifiquementorg-latex-export-to-pdf
casey
6
Juste pour des raisons de diversité: vous pouvez le faire C-u M-x ps-print-buffer, puis convertir le fichier PostScript résultant en PDF (si vos fichiers ne sont pas des fichiers Org et que vous souhaitez simplement avoir un PDF en texte brut). De même, ps-print-buffer-with-facesc'est à quoi ça ressemble.
wvxvw
@PythonNut:C-c C-e is undefined
Tim
@casey: la commande est introuvable
Tim

Réponses:

13

Vous pouvez mettre ce qui suit dans votre init.elet lier la fonction à une liaison de votre choix.

La fonction imprime le fichier dans le tampon actuel au format PDF dans le même dossier par défaut.

Ici, la fonction nécessite le binaire ps2pdfpour la conversion .psen .pdf. Mais vous pouvez le remplacer par n'importe quel générateur de pdf disponible sur votre système.

(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
la source
2

Cela ne résout pas le problème spécifique des signets dans le PDF, mais résout le problème général de la conversion des tampons au format PDF.

Si vous voulez obtenir une "capture d'écran" PDF du tampon tel que vous le voyez réellement - sans afficher de texte masqué - alors une bonne alternative est d' htmlize le tampon et de convertir le résultat de HTML en PDF. Vous pouvez par exemple l'utiliser pour créer une version PDF de votre agenda organisationnel. (Notez que la ps-printréponse basée sur Kaushal Modi montrerait le contenu du tampon caché.)

recette

M-x htmlize-buffer RET, C-x C-w buf.html RET; puis exécutez sur la ligne de commande:

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

exemple (capture d'écran)

entrez la description de l'image ici

Voir également

Il y a une discussion intéressante sur les "captures d'écran vectorielles" ici: Puis-je prendre des captures d'écran vectorielles (SVG) d'Emacs? (ce que j'ai décrit pourrait être considéré comme un exemple très limité de "capture d'écran vectorielle".)

Joe Corneli
la source
2

Vous pouvez faire C-u M-x ps-print-bufferpour imprimer le tampon actuel dans un fichier PS, puis le diriger ps2pdf.

Arne
la source