Java iText-如何获取用于打印的PDF二进制文件
我想在我的Android项目中将pdf字节发送到打印机。我观看了一个应用程序的tcp包,这个应用程序以前做过这个。确实如此: 1-)使用PLC命令发送纸张大小、页面大小、页边距 2-)然后发送PDF字节。(我为你做了标记) 发送这样的字节Java iText-如何获取用于打印的PDF二进制文件,java,android,pdf,printing,itext,Java,Android,Pdf,Printing,Itext,我想在我的Android项目中将pdf字节发送到打印机。我观看了一个应用程序的tcp包,这个应用程序以前做过这个。确实如此: 1-)使用PLC命令发送纸张大小、页面大小、页边距 2-)然后发送PDF字节。(我为你做了标记) 发送这样的字节 .*b20W.................... 这是如何发送字节的示例。(W后20个字节) 如果我尝试发送使用Adobe创建的pdf,字节如下所示: 这对我不起作用。因为它发送的字节数组与上面的不同,并且包含许多不必要的内容 我的问题就是:如何获得
.*b20W....................
这是如何发送字节的示例。(W后20个字节)
如果我尝试发送使用Adobe创建的pdf,字节如下所示:
这对我不起作用。因为它发送的字节数组与上面的不同,并且包含许多不必要的内容
我的问题就是:如何获得上面提到的pdf字节?我能帮我做这个吗
这是我的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而不需要不必要的信息。因为那样打印机就不懂字节了
编辑2:我创建了一个新的iText Pdf
val pdf = PdfDocument(PdfWriter(file.path))
val document = Document(pdf)
val line = "Hello! Welcome to iTextPdf"
document.add(Paragraph(line))
document.close()
现在我试着把它分成字节。但同样,它包含了很多不必要的信息
您可以共享这两个PDF文件吗?一个由Android应用程序创建,另一个由Adobe创建。此外,代码使用的方式是其他人可以复制的。实际上,我不需要发送示例文件。因为我唯一的问题是如何像上面那样从itext pdf中获取字节。pdf文件的格式不重要。请检查我的编辑。感谢您尝试
byte[]pdf=Files.readAllBytes(pdfPath)代码>