[英]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();
}
}
或者使用MuPDF
如上所述,您可以嘗試使用pdfbox提取文本,但您還需要特別保留格式,圍繞表格,pdftron似乎是更好的選擇。 它提供了很多方便的apis來實現同樣的目標。 您可以參考他們的網站以獲取完整的工作示例。
注意:我不是代表pdftron,也不是為他們工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.