Как напечатать обычный файл в pdf из командной строки


34

В gedit печать файла дает возможность печати в файл, где файл может быть сохранен в формате PDF. Как я могу сделать то же самое из командной строки?

Ответы:


43

Вот решение, которое не включает OpenOffice:

  1. sudo apt-get install enscript

  2. enscript my_text_file.txt -o - | ps2pdf - output.pdf

Есть и другие варианты enscript, например, -Bчтобы опустить заголовок страницы. Смотрите man enscriptдля всех вариантов.


1
Хорошая альтернатива Stefano, особенно для тех, кто не использует open / libreoffice, так как unoconv зависит от того, какой из них установлен.
Аллан

+1 за хороший ответ, который я собирался дать, я просто решил дать тот, который, я думаю, добавит что-то к тому, что уже здесь.
Сабакон

Разве нет встроенной программы или команды bash для этого?
Кашминдер

1
Благодарность! Он работает для большинства текстов, однако enscript работает только со старой кодировкой, он не работает, например, с UTF-8, поэтому вы не можете конвертировать текст, если он включает, например, символ евро (€) ...
Антуан Дюссо

20

без установки вышеупомянутого программного обеспечения можно просто сделать следующее с уже установленным cupsfilter:

cupsfilter foo.txt > foo.pdf

(варианты и т. д. см. на страницах справки cupsfilter :-))


2
Единственный ответ здесь, который обрабатывал мои текстовые файлы UTF8 без проблем :) плюс проще делать практически без зависимостей
Axel Advento

13

ПРОСТОЙ СПОСОБ ЗАПИСИ

sudo apt-get установить cups-pdf enscript

Затем запустите enscript для вашего файла с ключом -P и описанием принтера PDF в этом случае.

enscript -B -PPDF test.txt

Принтер с описанием PDF был создан при установке cups-pdf, когда вы используете enscript с этим принтером, ваш документ будет отправлен на принтер PDF и будет напечатан в файл, созданный в формате .pdf в каталоге / home / PDF, Команда выше напечатает текстовый файл test.txt в формате PDF в каталоге PDF.

ИСПОЛЬЗОВАНИЕ UNOCONV

sudo apt-get установить unoconv

Вы можете использовать unoconv в автономном режиме, это означает, что при отсутствии прослушивателя OpenOffice он запустит свой собственный:

В каталоге, где находится ваш файл, запустите:

unoconv -f pdf test.txt

это создаст красивый файл pdf файла test.txt. в текущем каталоге


enscript foo.txt -o bar.pdfработает довольно хорошо; Благодарность!
Thufir

6

Существует программа командной строки, которая может конвертировать все поддерживаемые форматы open / libre office, называемая unoconv, поэтому, если вам нужно выполнить пакетное преобразование с помощью скрипта, это пригодится.

sudo apt-get install unoconv

Не то, что ОП попросил.
энзотиб

2
? OP? кто такой ОП и зачем голосовать, когда он отвечает на вопрос?
RolandiXor

5

paps это лучшая альтернатива, чем enscript

paps file.txt | ps2pdf - output.pdf

7
Добро пожаловать в Спросите Ubuntu HWC! Хотя ваш пост действительно отвечает на вопрос, всегда лучше включать больше информации. Например, почему papsлучшая альтернатива? А если papsне установлен по умолчанию, какая команда для его установки? Вы всегда можете отредактировать свой ответ, нажав editсправа внизу тела ответа. Благодарность!
Алаа Али

5

Pandoc - обязательный инструмент для швейцарских ножей, когда дело доходит до конвертации между различными языками разметки. Чтобы начать, сначала установите конвертер pandoc:

sudo apt-get install pandoc

Общий и наиболее часто используемый синтаксис для pandoc:

pandoc -f <from format> -t <to format> <source file>

Обратите внимание, что вам нужно сначала установить пакет texlive-latex-base, прежде чем вы сможете конвертировать его в формат PDF. В противном случае вы получите следующую ошибку:

pandoc: pdflatex not found. pdflatex is needed for pdf output.

Чтобы установить его:

sudo apt-get install texlive-latex-base

Теперь вы можете легко конвертировать любой файл в PDF.

pandoc -t txt -t pdf source.txt

замените текст на ваш текстовый формат (odt - html - ....)


1
По сравнению с другими ответами, pandoc plus texlive выдает плохой вывод (не учитывая символы новой строки), и излишне запутан и сбивает с толку при загрузке. Нужно еще много пакетов, включая texlive, texlive-fonts-рекомендуемые, ruby ​​и т. Д. Например, я получаю, pandoc: Unknown writer: pdfпока не установлю texlive-latex-base. Это на верном. См. Github.com/jgm/pandoc/issues/1155 Затем я получил ошибку об отсутствующем шрифте, затем об url.sty и т. Д.
nealmcb

2

Как указано выше, enscriptэто популярный способ преобразования текста в postscript, который затем можно преобразовать в PDF.
Аналогичный инструмент, который существует уже давно, есть a2ps. Он имеет большое количество опций, включая размещение нескольких страниц на физической странице. Установите ap2s с помощью sudo apt-get install a2ps.

AFAIK, enscript и a2ps выполняют одну и ту же работу, но их интерфейс отличается и YMMV с каждым из них.


Пример использования a2ps поможет. Опция --delegate, по-видимому, необходима для pdf, но страница справки не очень помогает.
nealmcb

2

У меня были некоторые проблемы с немецким Umlaute (ÄÖÜ) с вышеупомянутыми решениями. Или, в случае paps, полученный PDF не имеет текстового слоя.

Лучшим решением для меня было использовать wkthmltopdf . Кажется, это не документировано, но вы можете легко конвертировать текстовые файлы в PDF-файлы, используя этот синтаксис:

wktmltopdf <textfile> <pdffile>

wkhtmltopdf может обрабатывать файлы UTF-8 (в отличие от enscript). Все проблемные символы, такие как ÄÖÜß и т. Д., Будут отображаться правильно.


Это было исправлено в последней версии paps, которая может выводить выбираемый pdf. Смотрите: github.com/dov/paps .
Дов Гробгельд

1

Вы можете использовать a2x

a2x - конвертирует текстовый файл Asciidoc в PDF, XHTML, HTML Help, ODF, manpage или обычный текст

Чтобы установить a2x:

sudo apt-get install asciidoc

например:

 a2x -f pdf testfile.txt

0

Вы также можете использовать u2ps .

Это генерирует как PS и PDF. Это принимает текст UTF-8 и поддерживает подсветку синтаксиса с помощью разметки Pango.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.