2016-09-19 13 views
9

Tôi phải in tệp pdf bằng máy in có địa chỉ IP cụ thể. Tôi có thể in một văn bản cụ thể nhưng tôi muốn in một tệp hoặc văn bản được phân tích cú pháp html.In tệp PDF sang máy in bằng PrintWriter qua kết nối Ổ cắm

Mã của tôi:

try { 
    Socket sock = new Socket("192.168.0.131", 9100); 
    PrintWriter oStream = new PrintWriter(sock.getOutputStream()); 
    oStream.println("HI,test from Android Device"); 
    oStream.println("\n\n\n"); 
    oStream.close(); 
    sock.close(); 
} catch (UnknownHostException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Cũng xin cho biết lý do xuống bỏ phiếu

Sửa

Nhiều người đang đề xuất về PDLs nhưng làm thế nào để chuyển đổi pdf để PDL?

+0

http://stackoverflow.com/questions/29472618/send-printer-commands-via-socket-in-java – Techidiot

+0

@Techidiot, không hữu ích –

+0

Bạn đang đọc tệp ở đâu? – Techidiot

Trả lời

2

Bạn cần sử dụng thư viện PDFBox cũng có sẵn cho Android.

Bạn có thể sử dụng nó để có được những văn bản PDF và sau đó sử dụng nó cho mục đích của bạn -

Một mẫu java -

import java.io.File; 
import java.io.IOException; 
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.text.PDFTextStripper; 
import org.apache.pdfbox.text.PDFTextStripperByArea; 

public class myProgram{ 

    public static void main(String[] args) 
    try { 
     PDDocument document = null; 
     document = PDDocument.load(new File("my_file.pdf")); 
     document.getClass(); 
     if (!document.isEncrypted()) { 
     PDFTextStripperByArea stripper = new PDFTextStripperByArea(); 
     stripper.setSortByPosition(true); 
     PDFTextStripper Tstripper = new PDFTextStripper(); 
     String st = Tstripper.getText(document); 
     System.out.println("Text:" + st); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

PdfBox-For-Android

Hoặc sử dụng MuPDF

+0

thư viện này là tốt cho việc đọc văn bản của pdf nhưng tôi muốn in pdf vì nó giống như các bảng và tất cả được hiển thị bằng cách sử dụng thư viện này tôi chỉ có thể in các văn bản từ pdf không phải là pdf thực tế –

+0

http: // stackoverflow.com/questions/3203790/parsing-pdf-files-đặc biệt-với-bảng-với-pdfbox – Techidiot

0

Như đã đề cập ở trên, bạn có thể thử pdfbox để trích xuất văn bản nhưng bạn cũng cần phải duy trì định dạng đặc biệt, xung quanh các bảng mà pdftron có vẻ là một lựa chọn tốt hơn. Nó cung cấp rất nhiều apis thuận tiện để đạt được như vậy. Bạn có thể tham khảo trang web của họ cho các ví dụ làm việc đầy đủ.

Lưu ý: Tôi không đại diện cho pdftron cũng như tôi không làm việc cho họ.

3

Dữ liệu được gửi tới máy in phải nằm trong Ngôn ngữ mô tả trang (PDL's), máy in ngôn ngữ hiểu được. Here bạn có thể tìm thấy một số hiểu biết cơ bản về những thứ đó. Chuỗi ASCII được hiểu bởi hầu hết các máy in, đó là lý do tại sao bạn có thể in chuỗi. Nhưng khi nói đến các định dạng tài liệu phức tạp như (PDF, Excels, HTML page, vv), bạn phải chuyển đổi tài liệu thành một trong các PDL. Các PDL phổ biến nhất mà tôi đã làm việc là PostScript (PS) và PCL (Printer Command Language).

Bây giờ để in PDF với định dạng chính xác (mà bạn yêu cầu giải pháp), bạn phải chuyển đổi tài liệu PDF sang PCl hoặc Postscript rồi gửi dữ liệu PCL hoặc postscript đó tới máy in. Bạn có thể sử dụng ghostscript để chuyển đổi PDF sang PS hoặc PCL.

Tôi đã không thực hiện chính xác những gì bạn đang cố gắng làm, nhưng tôi nghĩ những gì tôi đã giải thích ở trên là sự khởi đầu cho bạn.

Tôi rất muốn biết liệu bạn có thể làm được không. Cho tôi biết.

+0

Tôi googled rất nhiều nhưng tôi không thể tìm thấy bất kỳ thư viện để chuyển đổi pdf sang PDL, vì vậy nếu bạn biết bất kỳ xin vui lòng chia sẻ liên kết –

+0

@VishwajitPalankar Tôi sợ không có thư viện java/android nào. Tôi đã sử dụng ghostscript được biên dịch cho android để chuyển đổi ps sang pdf. Bạn có thể làm tương tự và chuyển đổi pdf thành ps. Đây là liên kết đến câu hỏi. Nhìn vào câu trả lời của chrisl http://stackoverflow.com/questions/37478507/cross-compiling-ghostscript-for-android-what-host-should-i-use. Sử dụng câu trả lời này để xây dựng ghostscript cho android. Để làm cho công việc này tôi phải root thiết bị của tôi và một quá trình dài của nó – Zartha

+0

@VishwajitPalankar Cách dễ dàng hơn là tải tệp pdf của bạn lên máy chủ, sau đó chuyển nó sang PS hoặc PCL bằng ghostscript cho Linux và sau đó sử dụng PS đó tập tin. Sẽ luôn có độ trễ mạng. Hãy cho tôi biết những gì bạn làm. – Zartha

Các vấn đề liên quan