converter um buffer de texto em um arquivo pdf?

15

Como podemos converter o buffer de texto atual em um arquivo pdf, preferencialmente transformando os títulos iniciados com * em marcadores do arquivo pdf. Por exemplo, transformando o tutorial integrado do Emacs (mostrado por Ch t) em um arquivo pdf marcado. Obrigado.

Tim
fonte
2
especificamenteorg-latex-export-to-pdf
casey
6
Apenas por uma questão de diversidade: você pode fazer C-u M-x ps-print-buffere converter o arquivo PostScript resultante em PDF (se os arquivos não forem arquivos Org e você quiser apenas ter um texto em PDF sem formatação). Da mesma forma, ps-print-buffer-with-facesé o que parece.
Wvxvw
@PythonNut:C-c C-e is undefined
Tim
@casey: o comando não foi encontrado
Tim

Respostas:

13

Você pode colocar o abaixo em seu init.ele vincular a função a um vínculo de sua escolha.

A função imprime o arquivo no buffer atual como um PDF na mesma pasta por padrão.

Aqui, a função requer o binário ps2pdfpara converter .pspara .pdf. Mas você pode substituí-lo por qualquer gerador de pdf disponível no seu 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"))))
Kaushal Modi
fonte
2

Isso não trata do problema específico de indicadores no PDF, mas trata do problema geral de converter buffers em PDF.

Se você deseja obter uma "captura de tela" em PDF do buffer como realmente o vê - não mostrando texto oculto -, uma boa alternativa é dimensionar o buffer em html e converter o resultado de HTML para PDF. Você pode usar isso, por exemplo, para criar uma versão em PDF da sua Agenda organizacional. (Observe que a ps-printresposta baseada em Kaushal Modi mostraria o conteúdo oculto do buffer.)

receita

M-x htmlize-buffer RET, C-x C-w buf.html RET; em seguida, execute na linha de comando:

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

exemplo (captura de tela)

insira a descrição da imagem aqui

Veja também

Há uma discussão interessante sobre "capturas de tela de vetores" aqui: Posso tirar capturas de tela de vetores (SVG) do Emacs? (o que descrevi pode ser visto como um exemplo muito limitado de uma "captura de tela de vetor".)

Joe Corneli
fonte
2

Você pode fazer isso C-u M-x ps-print-bufferpara imprimir o buffer atual em um arquivo PS e depois passar por ele ps2pdf.

Arne
fonte