Delphi 使用Brother打印机将PDF打印为垃圾

Delphi 使用Brother打印机将PDF打印为垃圾,delphi,pdf,printing,delphi-4,Delphi,Pdf,Printing,Delphi 4,可能重复: 在不同的打印机上打印时,我遇到了不同的行为。 在我的打印机上,PDF打印是正确的,但在“兄弟”打印机上,相同的PDF打印为乱码(打印文件内容)。如果使用Adobe Reader将同一PDF文件直接发送到打印机,则其也会在brother打印机上正确打印 为了打印PDF文件,我使用LoadFromFile函数读取TMemoryStream对象中的内容。指定的docinfo值如下所示- DocInfo.pDocName := pChar('My Document'); DocInfo.p

可能重复:

在不同的打印机上打印时,我遇到了不同的行为。 在我的打印机上,PDF打印是正确的,但在“兄弟”打印机上,相同的PDF打印为乱码(打印文件内容)。如果使用Adobe Reader将同一PDF文件直接发送到打印机,则其也会在brother打印机上正确打印

为了打印PDF文件,我使用LoadFromFile函数读取TMemoryStream对象中的内容。指定的docinfo值如下所示-

DocInfo.pDocName := pChar('My Document');
DocInfo.pOutput := Nil;
DocInfo.pDatatype := pChar('RAW');
在使用WritePrinter函数之后,命令被发送到打印机句柄

在我看来,brother printer似乎无法读取PDF编码格式

在此方面的任何帮助都将不胜感激

注:我的申请表是Delphi4。

是给你的

有些打印机懂PDF,有些不懂

您应该有一个理解PDF的应用程序,可以将其打印到打印机上

当然,许多应用程序都可以做到这一点,其中最突出的就是


:Adobe Reader ActiveX、Adobe Reader应用程序、GhostView/GhostPrint。它还引用了其他一些方法。

@Jeroen,我尝试过使用ShellExecute命令打印相同的pdf,如下所示:ShellExecute(Application.Handle,'printto','Filename',PChar(printerInfo),nil,SW_HIDE);然而,有了这个,我可以打印它,但另一方面,它会打开一个AdobeReader弹出窗口,这很烦人。是否有我错过的隐藏此弹出窗口的选项。谢谢。@Vic欢迎来到stackoverflow。请阅读我的答案中提到的其他选项。此外:你应该对答案发表评论,而不是对问题发表评论。这是发布答案的人收到评论通知的唯一方式。谢谢Jeroen。我关心的是,当我使用WritePrinter读取和发送命令时,所有内容都被打印为垃圾,但直接将文档发送到打印机没有问题。这只发生在Brother打印机上,其他打印机没有问题。此外,我还试图检查文章中提供的其他选项,但不幸的是,我的应用程序在Delphi 4中,因此没有很多第三方组件可用,并且不确定是否允许我购买第三方组件。我可以直接将文档发送到打印机,但生成的Adobe弹出窗口看起来不太好。@Vic我回答中提到的Adobe Reader解决方案很可能也适用于Delphi 4,但请记住,Delphi 4是Delphi有史以来最有缺陷的版本之一。