簡體   English   中英

使用PrintWriter通過Socket連接將PDF文件打印到打印機

[英]Print a PDF file to a printer using PrintWriter via Socket connection

我必須使用具有特定IP地址的打印機打印pdf文件。 我能夠打印特定的文本,但我想打印文件或HTML解析文本。

我的代碼:

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();
}

還請說明投票的原因

編輯

很多人都建議PDL,但如何將pdf轉換為PDL?

發送到打印機的數據必須是頁面描述語言(PDL),語言打印機才能理解。 在這里你可以找到一些基本的理解。 大多數打印機都能理解ASCII字符串,這就是您能夠打印字符串的原因。 但是當談到復雜的文檔格式(如PDF,Excel,HTML頁面等)時,您必須將文檔轉換為其中一個PDL。 我使用過的最常見的PDL是PostScript(PS)和PCL(打印機命令語言)。

現在,為了打印具有精確格式的PDF(您需要解決方案),您必須將PDF文檔轉換為PCl或Postscript,然后將該PCL或postscript數據發送到打印機。 您可以使用ghostscript將PDF轉換為PS或PCL。

我還沒有完全按照你要做的去做,但我認為我上面解釋的是你的開始。

我非常有興趣知道你是否能夠做到這一點。 讓我知道。

您需要使用也適用於Android的PDFBox庫。

您可以使用它來獲取PDF文本,然后將其用於您的目的 -

一個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

或者使用MuPDF

如上所述,您可以嘗試使用pdfbox提取文本,但您還需要特別保留格式,圍繞表格,pdftron似乎是更好的選擇。 它提供了很多方便的apis來實現同樣的目標。 您可以參考他們的網站以獲取完整的工作示例。

注意:我不是代表pdftron,也不是為他們工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM