Як надрукувати звичайний файл у 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
Спасибі! Він працює для більшості текстів, однак власноруч працює лише зі старим кодуванням, він не працює, наприклад, з UTF-8, тому ви не можете конвертувати текст, наприклад, якщо він містить символ євро (€) ...
Антуан Дюсо

20

не встановлюючи жодного з вищезгаданих програм, можна просто виконати наступне з уже встановленим cupsfilter:

cupsfilter foo.txt > foo.pdf

(для варіантів тощо, будь ласка, зверніться до сторінок "cupsfilter" :-))


2
Єдина відповідь тут, яка без проблем обробляла мої текстові файли UTF8: плюс простіше зробити практично без залежностей
Axel Advento

13

ПРОСТИЙ ПІДХОДНИЙ ШЛЯХ

sudo apt-get install cups-pdf enccript

Потім запустіть власні записи у вашому файлі за допомогою перемикача -P та опису принтера в цьому випадку.

протокол -B -PPDF test.txt

Принтер з описом PDF був створений при встановленні чашок-pdf, коли ви використовуєте енскрипт із цим принтером, ваш документ буде надісланий на принтер PDF і буде надрукований у файл, створений у форматі .pdf у вашому / домашньому / PDF-каталозі, команда вище буде надрукувати текстовий файл test.txt у вигляді PDF у каталозі PDF.

ВИКОРИСТАННЯ UNOCONV

sudo apt-get install unoconv

Ви можете використовувати unoconv в автономному режимі, це означає, що за відсутності слухача OpenOffice він запустить свій власний:

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

unoconv -f pdf test.txt

це створить приємний вигляд PDF-файла test.txt. у поточному каталозі


enscript foo.txt -o bar.pdfпрацює досить добре; Спасибі!
Туфір

6

Існує програма командного рядка, яка може конвертувати між усіма форматами, що підтримуються відкритим / вільним офісом під назвою unoconv, тому якщо вам потрібно пакетне перетворення зі сценарієм, це стане в нагоді.

sudo apt-get install unoconv

Не те, що просили ОП.
enzotib

2
? ОП? хто є ОП і навіщо голосувати за це, коли він відповідає на питання?
RolandiXor

5

paps є кращою альтернативою, ніж enscript

paps file.txt | ps2pdf - output.pdf

7
Ласкаво просимо до Ask 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

замініть txt текстовим форматом (odt - html - ....)


1
У порівнянні з іншими відповідями, pandoc plus texlive видає поганий вихід (не дотримуючись нових рядків) і є надмірним та заплутаним при завантаженні. Потрібно багато більше пакетів, потягнувши texlive, рекомендується texlive-шрифти, рубін тощо. Наприклад, я отримую, pandoc: Unknown writer: pdfпоки не встановлю texlive-latex-base. Це по-справжньому. Дивіться github.com/jgm/pandoc/isissue/1155 Тоді я отримав помилку про відсутній шрифт, потім про url.sty тощо
nealmcb

2

Як зазначено вище, enscriptце популярний спосіб перетворення тексту в постскрипт, який потім може бути перетворений у PDF.
Подібний інструмент, який існує вже давно, є a2ps. Він має велику кількість варіантів, включаючи розміщення декількох сторінок на фізичній сторінці. Встановіть ap2s за допомогою sudo apt-get install a2ps.

AFAIK, enccript і a2ps виконують ту саму роботу, але їх інтерфейс різний і YMMV з кожним із них.


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

2

У мене були проблеми з німецьким Umlaute (ÖÖÜ) з вищезазначеними рішеннями. Або, у випадку з папками, отриманий PDF не має текстового шару.

Найкращим рішенням для мене було використання wkthmltopdf . Здається, це не документально, але ви можете легко конвертувати текстові файли у PDF-файли, використовуючи цей синтаксис:

wktmltopdf <textfile> <pdffile>

wkhtmltopdf може обробляти файли UTF-8 (на відміну від протоколу). Усі проблемні символи, наприклад ÄÖÜß тощо, будуть відображені правильно.


Це було зафіксовано в останній версії 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.