Cách in tệp thông thường sang pdf từ dòng lệnh


34

Trong gedit, in một tệp cung cấp tùy chọn in thành tệp trong đó tệp có thể được lưu dưới dạng pdf. Làm thế nào tôi có thể làm điều tương tự từ dòng lệnh?

Câu trả lời:


43

Đây là một giải pháp không liên quan đến OpenOffice:

  1. sudo apt-get install enscript

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

Có nhiều tùy chọn hơn enscript, ví dụ như -Bbỏ qua tiêu đề trang. Xem man enscriptcho tất cả các tùy chọn.


1
Tốt thay thế Stefano đặc biệt cho bất cứ ai không sử dụng open / libreoffice vì unoconv phụ thuộc vào một trong hai được cài đặt.
Allan

+1 cho câu trả lời hay, câu trả lời tôi sắp đưa ra, tôi chỉ quyết định đưa ra một câu tôi nghĩ sẽ thêm một cái gì đó vào những gì đã có ở đây.
Sabacon

Không có bất kỳ chương trình bash hoặc lệnh nào để làm điều này?
kashminder

1
Cảm ơn! Nó hoạt động với hầu hết các văn bản, tuy nhiên, bản ghi chỉ hoạt động với mã hóa cũ, ví dụ, nó không hoạt động với UTF-8 vì vậy bạn không thể chuyển đổi văn bản nếu nó bao gồm ký hiệu euro (€) chẳng hạn ...
Antoinealeighéaux

20

mà không cần cài đặt bất kỳ phần mềm nào được đề cập ở trên, người ta có thể chỉ cần thực hiện các thao tác sau với cài đặt đã được cài đặt cupsfilter:

cupsfilter foo.txt > foo.pdf

(để biết các tùy chọn, v.v. vui lòng tham khảo trang man của cupfilter :-))


2
Câu trả lời duy nhất ở đây đã xử lý các tệp văn bản UTF8 của tôi mà không gặp vấn đề gì :) cộng với dễ thực hiện hơn mà hầu như không phụ thuộc
Axel Advento 22/2/2017

13

CÁCH MẠNG ĐƠN GIẢN

sudo apt-get install cup-pdf

Sau đó chạy bản ghi trên tệp của bạn bằng công tắc -P và bản mô tả máy in PDF trong trường hợp này.

bản ghi -B -PPDF test.txt

Một máy in có mô tả PDF đã được tạo khi bạn cài đặt cup-pdf, khi bạn sử dụng bản in với máy in đó, tài liệu của bạn sẽ được gửi đến máy in PDF và sẽ được in thành tệp, được tạo dưới dạng .pdf trong thư mục / home / PDF của bạn, lệnh ở trên sẽ in tệp văn bản test.txt dưới dạng pdf trong thư mục PDF.

SỬ DỤNG UNOCONV

sudo apt-get cài đặt unoconv

Bạn có thể sử dụng unoconv trong chế độ độc lập, điều này có nghĩa là nếu không có trình nghe OpenOffice, nó sẽ tự khởi động:

Trong thư mục chứa tệp của bạn chạy:

unoconv -f pdf test.txt

điều này sẽ tạo ra một pdf test.txt đẹp mắt. trong thư mục hiện tại


enscript foo.txt -o bar.pdfhoạt động khá tốt; cảm ơn!
Thufir 23/2/2015

6

Có một chương trình dòng lệnh có thể chuyển đổi giữa tất cả các định dạng được hỗ trợ văn phòng open / libre được gọi là unoconv, vì vậy nếu bạn cần chuyển đổi hàng loạt với một tập lệnh thì nó sẽ có ích.

sudo apt-get install unoconv

Không phải những gì OP yêu cầu.
enzotib

2
? OP? OP là ai và tại sao bỏ phiếu này khi nó trả lời câu hỏi?
RolandiXor

5

paps là một thay thế tốt hơn so với enscript

paps file.txt | ps2pdf - output.pdf

7
Chào mừng bạn đến hỏi Ubuntu hwc! Trong khi bài đăng của bạn trả lời câu hỏi, tốt hơn là bao gồm nhiều thông tin hơn. Ví dụ, tại sao papsmột sự thay thế tốt hơn? Và nếu papskhông được cài đặt theo mặc định, lệnh để cài đặt nó là gì? Bạn luôn có thể chỉnh sửa câu trả lời của mình bằng cách nhấp vào editbên phải bên dưới thân câu trả lời. Cảm ơn!
Alaa Ali

5

Pandoc là một công cụ dao swiss phải có khi chuyển đổi giữa các ngôn ngữ đánh dấu khác nhau. Để giúp bạn bắt đầu cài đặt trình chuyển đổi pandoc đầu tiên:

sudo apt-get install pandoc

Cú pháp chung và được sử dụng thường xuyên nhất cho pandoc là:

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

Xin lưu ý rằng bạn cần cài đặt gói texlive-latex-base trước khi bạn có thể chuyển đổi sang định dạng PDF. Nếu không, bạn sẽ nhận được một lỗi sau:

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

Để cài đặt nó:

sudo apt-get install texlive-latex-base

Bây giờ bạn có thể dễ dàng chuyển đổi bất kỳ tập tin sang pdf.

pandoc -t txt -t pdf source.txt

thay thế txt bằng định dạng văn bản của bạn (odt - html - ....)


1
So với các câu trả lời khác, pandoc plus texlive tạo ra đầu ra xấu (không tôn trọng các dòng mới), và quá mức cần thiết và khó hiểu để khởi động. Cần nhiều gói hơn, kéo theo texlive, texlive-phông chữ được đề xuất, ruby, v.v. Ví dụ: tôi nhận được pandoc: Unknown writer: pdfcho đến khi tôi cài đặt texlive-latex-base. Đây là trên đáng tin cậy. Xem github.com/jgm/pandoc/issues/1155 Sau đó, tôi gặp lỗi về một phông chữ bị thiếu, sau đó là về url.sty, v.v.
nealmcb 14/03/2015

2

Như đã đăng ở trên, enscriptlà một cách phổ biến để chuyển đổi văn bản thành postcript, sau đó có thể được chuyển đổi thành PDF.
Một công cụ tương tự, đã có từ rất lâu, là a2ps. Nó có một số lượng lớn các tùy chọn, bao gồm đặt nhiều trang trên một trang vật lý. Cài đặt ap2s với sudo apt-get install a2ps.

AFAIK, conscript và a2ps làm cùng một công việc, nhưng giao diện của chúng khác nhau và YMMV với mỗi cái.


Một ví dụ về việc sử dụng a2ps sẽ giúp ích. Tùy chọn --delegate dường như cần thiết cho pdf, nhưng trang man không thực sự giúp ích ở đó.
nealmcb

2

Tôi đã có một số vấn đề với tiếng Đức Umlaute () với các giải pháp được đề cập ở trên. Hoặc, trong trường hợp paps, PDF kết quả không có lớp văn bản.

Giải pháp tốt nhất cho tôi là sử dụng wkthmltopdf . Nó dường như không được ghi lại, nhưng bạn có thể dễ dàng chuyển đổi tệp văn bản thành tệp PDF bằng cách sử dụng cú pháp này:

wktmltopdf <textfile> <pdffile>

wkhtmltopdf có thể xử lý các tệp UTF-8 (không giống như bản ghi). Tất cả các ký tự có vấn đề như ÄÖÜß, vv sẽ được hiển thị chính xác.


Điều này đã được sửa trong phiên bản mới nhất của paps, có thể xuất pdf có thể chọn. Xem: github.com/dov/paps .
Dov Grobgeld

1

Bạn có thể sử dụng a2x

a2x - chuyển đổi tệp văn bản Asciidoc thành PDF, XHTML, Trợ giúp HTML, ODF, manpage hoặc văn bản thuần túy

Để cài đặt a2x:

sudo apt-get install asciidoc

ví dụ:

 a2x -f pdf testfile.txt

0

Bạn cũng có thể sử dụng u2ps .

Điều này tạo ra cả ps và pdf. Điều này chấp nhận văn bản UTF-8 và hỗ trợ đánh dấu cú pháp thông qua đánh dấu Pango.

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.