Java iText-如何获取用于打印的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,字节如下所示: 这对我不起作用。因为它发送的字节数组与上面的不同,并且包含许多不必要的内容 我的问题就是:如何获得

我想在我的Android项目中将pdf字节发送到打印机。我观看了一个应用程序的tcp包,这个应用程序以前做过这个。确实如此:

1-)使用PLC命令发送纸张大小、页面大小、页边距

2-)然后发送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)