it-swarm-ru.tech

Как преобразовать TXT в PDF?

Я хочу конвертировать .txt файлы в .pdf. Я использую это:

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

Но это приводит к одной "ошибке" - если в текстовом файле есть очень длинная строка, она не переносится.

Введите текст

Screenshot of the input file

Результатной PDF

Screenshot of the output PDF

-

Также было бы неплохо, если бы вывод PDF мог содержать текст вместо изображений текста).

У меня есть много-много-много TXT файлов. Поэтому я не хочу делать это вручную. Мне нужно автоматическое решение, подобное тому, которое я упомянул выше.

45
LanceBaynes

Одним из методов является использование CUPS и PDF psuedo-printer для "печати" текста в PDF файл.

Другой способ - использовать enscript для кодирования в postscript, а затем конвертировать из postscript в PDF с использованием файла ps2pdf из пакета ghostscript).

22
Keith

Пандок может сделать это. Он больше ориентирован на преобразование размеченного текста в различные форматы, но у него не должно быть проблем с простым открытым текстом.

pandoc input.txt -o output.pdf
39
evilsoup

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

Существует небольшая утилита под названием unoconv, которая использует базу кода LibreOffice для преобразования форматов файлов в командной строке. Он может читать и записывать любые комбинации форматов, которые LibreOffice может, и позволяет очень легко выполнять такие вещи, как преобразование doc в pdf в командной строке. Простое txt to pdf будет легко для него.

18
Caleb

Вы можете распечатать текст в файл 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, за которой следует команда выхода (q). Затем он выполняет ps2pdf для создания окончательного файла.

Дополнительные параметры см. В файлах справки с :help :hardcopy.

15
Gonçalo Ribeiro

Просто используйте text2pdf , это бесплатно и с открытым исходным кодом. По ссылке вы можете скачать исходный код или предварительно скомпилированный бинарный файл для windows, solaris, dos.

Я могу использовать его в ОС AIX без проблем. Очень просто скомпилировать, просто сохраните 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
9
ceinmart

Существует также конвертер UTF-8 в PostScript, называемый paps .

7
tunit

Используйте enscript для создания файла .ps, а затем ps2pdf (или ps2pdfwr) для преобразования в формат .pdf.

Следующий скрипт создает файл .pdf с полями по 10 пунктов слева и справа и использует курьерский шрифт шириной 7,3 пункта и высотой 10 пунктов, поэтому распечатка размером в 132 столбца помещается на странице размером 8 1/2 X 11. Используйте enscript для настройки вашей страницы, шрифтов и т.д.

$ enscript -B --margins=10:10: -o outputfile.ps -f [email protected]/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps
5
Dan Walker

LibreOffice работает для этого. Применение:

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

Выход будет называться file.pdf.

3
jbrock

Так как он включен по умолчанию во многих дистрибутивах, более короткий способ вызвать libreoffice из cli:

soffice --convert-to pdf input.txt

Поддерживаемые расширения soffice, мы можем конвертировать из/в:

ODF Spreadsheet                   .ods
ODF Spreadsheet Template          .ots
Flat XML ODF Spreadsheet          .fods
Unified Office Format Spreadsheet .uos
Microsoft Excel 2007-2013 XML     .xlsx
Microsoft Excel 2003 XML          .xml
Microsoft Excel 97-2003           .xls
Microsoft Excel 97-2003 Template  .xlt
Data Interchange Format           .dif
dBase                             .dbf
HTML Document (Calc)              .html
SYLK                              .slk
Text CSV                          .csv
Office Open XML Spreadsheet       .xlsx
Microsoft Excel 2007-2016 XML     .xlsm
2
NVRM