我想将 pdf 字节发送到我的 Android 项目中的打印机。我看过以前这样做的应用程序的 tcp 包。正是这样做的:
1-) 使用 PLC 命令发送纸张尺寸、页面尺寸、边距。
2-) 然后它发送 PDF 字节。(我给你标记了)
像这样发送字节
.*b20W....................
这是如何发送字节的示例。(W 后 20 个字节)
如果我尝试发送使用 Adobe 创建的 pdf,则字节如下所示:
这对我不起作用。因为它发送了一个与上面不同的字节数组,并且包含许多不必要的东西。
我的问题正是这样:我如何获得像上面这样的 pdf 字节?iText 会帮我解决这个问题吗?
这是我的 pdf 文件(我对两个 tcp 包都使用了相同的文件):
注意:我的打印机是 HP Deskjet 2630
编辑:我将 adobe pdf 文件发送到打印机,如下所示
fun connect() {
GlobalScope.launch(Dispatchers.IO) {
try{
val soc = Socket("192.168.1.22", 9100)
val dout = DataOutputStream(soc.getOutputStream())
dout.writeUTF("1")
val buffer = ByteArray(8192) // or 4096, or more
while (file.inputStream().read(buffer).also({ count = it }) > 0) {
dout.write(buffer, 0, count)
}
dout.flush()
dout.close()
soc.close()
}
catch (e:Exception){
e.printStackTrace()
}
}
}
这里的文件是用adobe创建的pdf文件。当我将其字节发送到打印机时,它会发送很多不必要的信息。我想知道如何在没有不必要信息的情况下通过 iText 发送相同的 pdf。因为那样打印机不理解字节。
EDIT2:我创建了一个新的 iText Pdf。
val pdf = PdfDocument(PdfWriter(file.path))
val document = Document(pdf)
val line = "Hello! Welcome to iTextPdf"
document.add(Paragraph(line))
document.close()
现在我正在尝试将其拆分为字节。但同样,它包含很多不必要的信息。



