Làm cách nào để chuyển đổi TXT sang PDF?


45

Tôi muốn chuyển đổi .txttập tin sang .pdf. Tôi đang sử dụng cái này:

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

Nhưng điều này tạo ra một "lỗi" - nếu có một dòng rất dài trong tệp văn bản, nó sẽ không được gói.

Nhập ký tự

Ảnh chụp màn hình của tập tin đầu vào

PDF đầu ra

Ảnh chụp màn hình của PDF đầu ra

-

Ngoài ra, cũng sẽ rất tuyệt nếu PDF đầu ra có thể chứa văn bản, thay vì hình ảnh của văn bản.

Tôi có nhiều tập tin TXT. Vì vậy, không muốn làm điều đó bằng tay. Tôi cần một giải pháp tự động, giống như giải pháp tôi đã đề cập ở trên.


1
Bạn nên sử dụng for ONELINE in *thay vì ls | while read ONELINE. Đọc này .

Tôi không có đủ đại diện để trả lời, nhưng tôi chỉ muốn thêm rằng trình soạn thảo Kate trong KDE kubfox bạn có thể in ra "máy in" PDF cho phép bạn chọn tên tệp và nó tạo ra một tệp .pdf.
mathreadler

Câu trả lời:


21

Một phương pháp là sử dụng CUPS và máy in psuedo PDF để "in" văn bản thành tệp PDF.

Khác là sử dụng enscript để mã hóa để postscript và sau đó chuyển đổi từ postscript sang PDF bằng cách sử dụng tập tin ps2pdf từ gói GhostScript.



3
Có ai có hỗ trợ UTF-8 cho bản ghi không?
LanceBaynes


34

pandoc có thể làm điều này. Nó tập trung hơn vào việc chuyển đổi văn bản được đánh dấu sang các định dạng khác nhau, nhưng nó không có vấn đề gì với văn bản đơn giản.

pandoc input.txt -o output.pdf

3
Trông thật tuyệt, nhưng số lượng lớn phụ thuộc haskell pandoc muốn làm tôi sợ: /
lkraav

1
@Ikraav yeah, đó là cách quá mức cần thiết cho mục đích này, nhưng nếu bạn có markdown hoặc HTML (hoặc bất kỳ đánh dấu nào khác, nó có thể chấp nhận làm đầu vào) sẽ là cách tốt nhất. PDF thực sự đòi hỏi nhiều sự phụ thuộc hơn - trong nội bộ, pandoc sử dụng LaTeX để chuyển đổi sang PDF, vì vậy bạn cũng cần cài đặt nội dung đó - nhưng chất lượng rất tốt (tôi sử dụng nó để chuyển đổi văn bản markdown'd sang PDF và EPUB, chủ yếu ).
evilsoup

pandoc (1.16.0.2) thay thế các dòng mới của tôi bằng các tab.
Sparhawk

17

LibreOffice / OpenOffice cũng như hầu hết các trình xử lý văn bản khác (Abiword) có thể thực hiện việc này khá dễ dàng.

Có một tiện ích nhỏ được gọi là unoconvsử dụng cơ sở mã LibreOffice để thực hiện chuyển đổi định dạng tệp trên dòng lệnh. Nó có thể đọc và viết bất kỳ sự kết hợp của các định dạng mà LibreOffice có thể và làm cho nó rất dễ dàng để làm những việc như docđể pdfchuyển đổi trên dòng lệnh. Đơn giản txtđể pdfcó thể dễ dàng cho nó.


Hấp dẫn. Không biết unoconvvà thậm chí không biết OO có API.
Faheem Mitha

Tạo ra kết quả chất lượng cao, nhưng đối với tôi (tôi đang sử dụng phiên bản 0.5-1 (Debian Wheezy)), trước tiên tôi phải chạy một unoconv --listener &lệnh.
Thợ lặn

12

Bạn có thể in văn bản thành tệp PostScript bằng Vim và sau đó chuyển đổi nó thành PDF, miễn là Vim được biên dịch với +postscripttính năng này.

Đối với điều này, bạn sử dụng :hardcopy > {filename}lệnh. Ví dụ, bạn có thể mở example.txtvà thực thi

:hardcopy > example.ps

Nó sẽ tạo ra một tập tin example.pschứa tất cả các văn bản trong example.txt. Tiêu đề của mỗi trang trong tệp PostScript sẽ chứa tên tệp gốc và số trang.

Sau đó, bạn có thể chuyển đổi tệp PostScript thành PDF bằng cách sử dụng lệnh sau

ps2pdf example.ps

mà sẽ tạo ra example.pdf.

Bạn có thể làm tương tự trực tiếp từ một thiết bị đầu cuối (mà không tương tác với Vim) bằng cách sử dụng lệnh sau

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

Điều này mở ra example.txttrong Vim và thực thi lệnh được truyền cho -ctùy chọn, trong trường hợp này là một hardcopylệnh theo sau là lệnh Thoát ( q). Sau đó, nó thực thi ps2pdfđể sản xuất các tập tin cuối cùng.

Để biết thêm tùy chọn, xem các tập tin trợ giúp với :help :hardcopy.


:hardcopytạo tệp PostScript bất kể tôi thêm phần mở rộng .pdf hoặc .ps. Tôi đã làm :hardcpy > example.pdfvà với less example.pdfshell tôi có thể thấy rằng tiêu đề tệp là %!PS-Adobe-3.0.
khoai môn

@taro, bạn đúng rồi. Tại thời điểm tôi viết điều này, tôi đã không nhận thấy điều đó. Tôi cập nhật câu trả lời của tôi. Lệnh cuối cùng có thể được cải thiện, nhưng tôi không thể viết nó ngay bây giờ. Có thể làm điều đó sau.
Gonçalo Ribeiro

10

Chỉ cần sử dụng text2pdf , miễn phí và mã nguồn mở. Tại liên kết, bạn có thể tải xuống nguồn hoặc nhị phân được biên dịch sẵn cho windows, solaris, dos.

Tôi có thể sử dụng nó vào hệ điều hành AIX mà không gặp vấn đề gì. Rất đơn giản để biên dịch, chỉ cần lưu text2pdf.c và Makefile vào cùng thư mục và gõ make. (ở đây tôi đặt biến CC = gcc trên AIX, trên linux điều này sẽ không thành vấn đề)

$ ./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
Có một ngã ba utf8 có khả năng này?
Wolfgang Fahl

7

Ngoài ra còn có một trình chuyển đổi UTF-8 sang PostScript được gọi paps.


3
Nó hoạt động và với các phông chữ TrueType, nhưng cần lưu ý rằng nó tạo ra một tài liệu có bitmap, thay vì sử dụng các phông chữ nguyên bản. (Tôi đoán đó là vì
Postcript

Không thể biên dịch nó trên Cygwin32 trên Windoze của tôi ...
texnezio

5

Sử dụng bản ghi để tạo tệp .ps và sau đó ps2pdf (hoặc ps2pdfwr) để chuyển đổi sang .pdf

Kịch bản sau đây tạo tệp .pdf với lề trái và phải 10 pt và sử dụng phông chữ chuyển phát rộng rộng 7,3 điểm và cao 10 điểm, do đó, bản in 132 col phù hợp với trang 8 1/2 X 11. Sử dụng ký hiệu để thiết lập trang, phông chữ, v.v.

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

5
Một điều cần lưu ý: bản ghi không hỗ trợ utf-8.
maxschlepzig

3

LibreScript hoạt động cho việc này. Sử dụng:

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

Đầu ra sẽ được gọi file.pdf.


Có cách nào để thay đổi kích thước phông chữ trong tệp PDF kết quả không?
Evg

@Evg Tôi không biết cách nào để làm như vậy với phương pháp sử dụng LibreOffice này.
jbrock
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.