перетворити текстовий буфер у pdf-файл?


15

Як ми можемо перетворити поточний текстовий буфер у pdf-файл, бажано перетворивши заголовки, розпочаті з *, у закладки файлу pdf. Наприклад, перетворення інтегрованого підручника Emacs (показаного Ch t) у pdf-файл із закладками. Дякую.


2
Подивіться на експорт з org-modeLaTeX / PDF .
PythonNut

2
конкретноorg-latex-export-to-pdf
casey

6
Просто заради різноманітності: ви можете зробити, C-u M-x ps-print-bufferа потім конвертувати отриманий файл PostScript у PDF (якщо ваші файли не є файлами Org, а ви просто хочете мати PDF-текст із звичайним текстом). Так само, ps-print-buffer-with-facesяк це звучить.
wvxvw

@PythonNut:C-c C-e is undefined
Тім

@casey: команду не знайдено
Тім

Відповіді:


13

Ви можете помістити нижче в свою init.elфункцію і прив’язати функцію до обов'язкової прив'язки.

Функція друкує файл у поточному буфері як PDF у тій самій папці за замовчуванням.

Тут функція вимагає двійкового ps2pdfдля перетворення .psв .pdf. Але ви можете замінити це будь-яким доступним генератором PDF у вашій системі.

(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

Це не стосується конкретного питання закладок у PDF, але вирішує загальну проблему перетворення буферів у PDF.

Якщо ви хочете отримати PDF "скріншот" буфера таким, який ви насправді бачите, - не показуючи прихований текст - то гарною альтернативою є htmlize буфера та перетворення результату з HTML у PDF. Ви можете скористатися цим, наприклад, для створення PDF-версії свого Порядку денного організації. (Зверніть увагу, що ps-printвідповідь на основі Kaushal Modi відображатиме прихований вміст буфера.)

рецепт

M-x htmlize-buffer RET, C-x C-w buf.html RET; потім запустіть у командному рядку:

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

приклад (скріншот)

введіть тут опис зображення

Дивіться також

Тут є цікава дискусія про "векторні скріншоти": Чи можу я зробити векторні (SVG) скріншоти Emacs? (те, що я описав, можна розглядати як дуже обмежений приклад "векторного скріншота".)


2

Ви можете зробити C-u M-x ps-print-bufferдрук поточного буфера до файлу PS, а потім передати його через ps2pdf.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.