konwertować bufor tekstowy do pliku pdf?

15

Jak przekonwertować bieżący bufor tekstowy na plik pdf, najlepiej zamieniając nagłówki zaczynające się na * na zakładki pliku pdf. Na przykład przekształcenie zintegrowanego samouczka Emacsa (pokazanego przez Ch t) w plik pdf z zakładkami. Dzięki.

Tim
źródło
2
Spójrz na eksport org-modedo z LaTeX / PDF .
PythonNut,
2
konkretnieorg-latex-export-to-pdf
Casey
6
Ze względu na różnorodność: możesz zrobić, C-u M-x ps-print-buffera następnie przekonwertować wynikowy plik PostScript do formatu PDF (jeśli twoje pliki nie są plikami organizacji, a chcesz mieć zwykły tekst w formacie PDF). Podobnie ps-print-buffer-with-facesto brzmi.
wvxvw
@PythonNut:C-c C-e is undefined
Tim
@ casey: polecenie nie zostało znalezione
Tim

Odpowiedzi:

13

Możesz umieścić poniżej w swoim init.eli powiązać funkcję z wybranym wiązaniem.

Funkcja domyślnie drukuje plik w bieżącym buforze jako plik PDF w tym samym folderze.

Tutaj funkcja wymaga binarny ps2pdfdo przekształcania .pssię .pdf. Ale możesz to zastąpić dowolnym dostępnym generatorem pdf w twoim systemie.

(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
źródło
2

Nie rozwiązuje to konkretnego problemu z zakładkami w pliku PDF, ale rozwiązuje ogólny problem konwersji buforów do formatu PDF.

Jeśli chcesz uzyskać „zrzut ekranu” pliku PDF z bufora w takiej postaci, w jakiej go widzisz - nie pokazując ukrytego tekstu - dobrą alternatywą jest htmlize bufora i przekonwertowanie wyniku z HTML na PDF. Możesz to wykorzystać na przykład do stworzenia wersji PDF swojej Agendy. (Zauważ, że ps-printodpowiedź oparta na Kaushal Modi pokazywałaby zawartość ukrytego bufora.)

Przepis

M-x htmlize-buffer RET, C-x C-w buf.html RET; następnie uruchom w wierszu poleceń:

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

przykład (zrzut ekranu)

wprowadź opis zdjęcia tutaj

Zobacz też

Interesująca jest dyskusja na temat „zrzutów ekranu wektorów”: Czy mogę zrobić zrzuty ekranu Emacsa (SVG)? (to, co opisałem, może być postrzegane jako bardzo ograniczony przykład „zrzutu ekranu wektorowego”).

Joe Corneli
źródło
2

Możesz zrobić, C-u M-x ps-print-bufferaby wydrukować bieżący bufor do pliku PS, a następnie przepuścić przez niego ps2pdf.

Arne
źródło