Як конвертувати TXT у PDF?


45

Я хочу конвертувати .txtфайли в .pdf. Я використовую це:

ls | while read ONELINE; do convert -density 400 "$ONELINE" "$(echo "$ONELINE" | sed 's/.txt/.pdf/g')"; done

Але це призводить до однієї "помилки" - якщо в текстовому файлі є дуже довгий рядок, він не перетворюється.

Введення тексту

Знімок екрана вхідного файлу

Вихідний PDF

Знімок екрана вихідного PDF

-

Також було б чудово, якби вихідний PDF міг містити текст, а не зображення тексту.

У мене є багато-багато-багатьох файлів TXT. Тому не хочеться робити це вручну. Мені потрібно автоматичне рішення, як те, про яке я згадував вище.


1
Ви повинні використовувати for ONELINE in *замість ls | while read ONELINE. Прочитайте це .

У мене немає достатньої кількості відповідей, але я просто хочу додати, що в редакторі Kate в KDE kubuntu ви можете надрукувати на PDF "принтер", що дозволяє вибрати ім'я файлу, і він створює .pdf.
mathreadler

Відповіді:


21

Один з методів - використовувати CUPS та PDF-пседедо-принтер для «друку» тексту у PDF-файл.

Інше - використовувати енскрипт для кодування до postscript, а потім конвертувати з postscript у PDF, використовуючи файл ps2pdf з пакета ghostscript.



3
чи ні в кого немає підтримки UTF-8 для власноруч?
LanceBaynes


34

pandoc може це зробити. Він більше орієнтований на перетворення розміченого тексту в різні формати, але у нього не повинно виникнути проблем із простим простим текстом.

pandoc input.txt -o output.pdf

3
Виглядає добре, але величезна кількість залежностей від haskell pandoc хоче
налякати

1
@Ikraav Так, це шлях надмірності для цієї мети, але якщо у вас є розмітка або HTML (або будь-яка інша націнка, яку він може прийняти як вхід), Pandoc - це шлях. Фактично PDF вимагає ще більшої залежності - внутрішньо pandoc використовує LaTeX для перетворення в PDF, тому вам також потрібно встановити цей матеріал - але якість дуже хороша (я використовую його для перетворення тексту відмітки в PDF та EPUB, насамперед ).
злий

pandoc (1.16.0.2) замінює мої нові рядки вкладками.
Sparhawk

17

LibreOffice / OpenOffice, як і більшість інших текстових процесорів (Abiword), можуть це зробити досить легко.

Існує невелика утиліта, unoconvяка використовує базу коду LibreOffice для перетворення формату файлів у командному рядку. Вона може читати і писати будь-яку комбінацію форматів , які LibreOffice може і робить його дуже легко зробити такі речі , як docдля pdfперетворення в командному рядку. Простий txtв pdfбуде легко для нього.


Цікаво. Не знав unoconvі навіть не знав, що у ОО є API.
Faheem Mitha

Дає результати високої якості, але для мене (я використовую версію 0.5-1 (Debian Wheezy)), я повинен спершу запустити unoconv --listener &команду.
Digger

12

Ви можете надрукувати текст у файл PostScript за допомогою Vim, а потім перетворити його в PDF, доки Vim був скомпільований з цією +postscriptфункцією.

Для цього ви використовуєте :hardcopy > {filename}команду. Наприклад, ви можете відкрити example.txtта виконати

:hardcopy > example.ps

який створить файл, example.psщо містить увесь текст у example.txt. Заголовок кожної сторінки у файлі PostScript міститиме оригінальну назву файлу та номер сторінки.

Потім ви можете конвертувати файл PostScript у PDF, використовуючи наступну команду

ps2pdf example.ps

який створить example.pdf.

Ви можете зробити те саме безпосередньо з терміналу (без взаємодії з Vim), використовуючи наступну команду

vim example.txt -c "hardcopy > example.ps | q"; ps2pdf example.ps

Це відкривається example.txtу Vim та виконує команду, передану до -cпараметра, яка в даному випадку є hardcopyкомандою, за якою слідує команда quit ( q). Потім він виконується ps2pdfдля створення остаточного файлу.

Для отримання додаткових опцій див. Довідкові файли з :help :hardcopy.


:hardcopyстворює файл PostScript, незалежно від того, я додаю розширення .pdf або .ps. Я зробив, :hardcpy > example.pdfі за допомогою less example.pdfоболонки я міг бачити, що заголовок файлу був %!PS-Adobe-3.0.
таро

@taro, ти маєш рацію. У той час, коли я це писав, я цього не помічав. Я оновив свою відповідь. Остаточну команду можна було б вдосконалити, але я не можу це написати зараз. Можна зробити це пізніше.
Gonçalo Ribeiro

10

Просто використовуйте text2pdf , який є безкоштовним та відкритим. За посиланням ви можете завантажити джерело або попередньо складений бінарний файл для windows, solaris, dos.

Я можу без проблем використовувати його в AIX OS. Дуже просто компілювати, просто збережіть text2pdf.c та Makefile в одному каталозі та введіть make. (тут я встановлюю змінну CC = gcc на AIX, в Linux це не буде проблемою)

$ ./text2pdf  -h

text2pdf [options] [filename]

  text2pdf makes a 7-bit clean PDF file (version 1.1) from any input file.
  It reads from standard input or a named file, and writes the PDF file
  to standard output.

  There are various options as follows:

  -h            show this message
  -f<font>      use PostScript <font> (must be in standard 14, default: Courier)
  -I            use ISOLatin1Encoding
  -s<size>      use font at given pointsize (default 10)
  -v<dist>      use given line spacing (default 12 points)
  -l<lines>     lines per page (default 60, determined automatically
                if unspecified)
  -c<chars>     maximum characters per line (default 80)
  -t<spaces>    spaces per tab character (default 8)
  -F            ignore formfeed characters (^L)
  -A4           use A4 paper (default Letter)
  -A3           use A3 paper (default Letter)
  -x<width>     independent paper width in points
  -y<height>    independent paper height in points
  -2            format in 2 columns
  -L            landscape mode

  Note that where one variable is implied by two options, the second option
  takes precedence for that variable. (e.g. -A4 -y500)
  In landscape mode, page width and height are simply swapped over before
  formatting, no matter how or when they were defined.

text2pdf v1.1 (c) Phil Smith, 1996
$ ./text2pdf  -f"Courier" -s6 -c216 -v6 -L -A4 ./rep3.txt >rep3.pdf

3
чи є у цьому спроможність utf8?
Вольфганг Фал

7

Існує також перетворювач UTF-8 в PostScript, який називається paps.


3
Це працює і з шрифтами TrueType, але слід зазначити, що він створює документ із растровими зображеннями, а не використовує шрифти. (Гадаю, це через Postscript?)
njsg

Не вдалося скласти його на Cygwin32 на моєму Windoze ...
texnezio

5

Використовуйте власні записи для створення .ps-файлу, а потім ps2pdf (або ps2pdfwr) для перетворення у .pdf

Наведений нижче сценарій створює .pdf-файл з лівим і правим полями 10 пт і використовує кур'єрський шрифт, шириною 7,3 бали та висотою 10 балів, тому роздруківка 132 стовпчиків вміщується на сторінці 8 1/2 X 11. Використовуйте власні записи для налаштування сторінки, шрифтів тощо.

$ enscript -B --margins=10:10: -o outputfile.ps -f Courier@7.3/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps

5
Що слід зазначити: вказівник не підтримує utf-8.
maxschlepzig

3

LibreOffice для цього працює. Використання:

libreoffice --convert-to "pdf" file.txt

Вихід буде викликаний file.pdf.


Чи є спосіб змінити розмір шрифту в отриманому PDF?
Євг

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