使用PrintWriter通过Socket连接将PDF文件打印到打印机

我必须使用具有特定IP地址的打印机打印PDF文件。 我能打印一个特定的文本,但我想打印一个文件或一个HTMLparsing文本。

我的代码:

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

也请给出投票的理由

编辑

很多人都在build议PDL,但如何将PDF转换为PDL?

发送到打印机的数据必须使用页面描述语言(PDL),语言打印机才能理解。 在这里你可以find一些基本的理解。 ASCIIstring被大多数打印机所理解,这就是为什么您能够打印string。 但是,当涉及复杂的文档格式(如PDF,Excels,HTML页面等)时,您必须将文档转换为其中一个PDL。 我使用的最常见的PDL是PostScript(PS)和PCL(打印机命令语言)。

现在为了以确切的格式打印PDF(需要解决scheme),您必须将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似乎是更好的select的表格。 它提供了很多方便的apis来达到同样的效果。 你可以参考他们的网站的完整工作的例子。

注意:我不代表pdftron,也不代表我们为他们工作。