Delphi使用Staples在MS-Word中打印

时间:2013-09-17 06:12:30

标签: delphi printing ms-word

我正在尝试在MS-Word中打印文档。通过TWordApplication或OleVariant可以和我一起使用。我们的打印机可以选择打印。 我们使用具有钉书机功能的Xerox打印机。 当我手动完成所有操作时,它当然可以正常工作。 当我从代码中执行此操作时,我似乎无法使其正常工作。

据我所知,Delphi本身与直接设置订书钉无关。不是来自代码,不是来自MS-Word。 我在打印机上设置了两种类型的打印作业(高级设置)。一个用于普通打印,另一个用于打印1个订书钉。 对于这两个设置,我进行了导出。然后我尝试导入我需要它们的设置。 不幸的是,打印机驱动程序似乎不喜欢我正在做的事情。每次我尝试导入订书钉的设置时,驱动程序似乎从注册表中删除导入并使用其默认值。在我尝试以任何方式覆盖条目'DevMode'后,注册表中的条目将被删除,打印机将进入默认模式。

我尝试导入一个注册表文件,但是失败了。 我尝试从注册表文件中导入值并使用WriteBinaryData写入,但删除了DevMode条目。 我试图从注册表中某处保存我创建的配置文件信息的另一个注册表值复制注册表值。当我尝试这一点时似乎没有发生任何事情。

任何人都可以帮助我,据我所知,我尝试了一切,但我似乎无法使它工作。也可能是我对WriteBinaryData和ReadBinaryData做错了。如果有人能给我一个有效的例子,我会非常感激。

我使用Delphi XE2。

TIA

3 个答案:

答案 0 :(得分:0)

DEVMODE结构由打印机驱动程序在内部使用,它包含内部数据(甚至驱动程序堆),除非您有制造商提供的详细HOWTO表,否则不得修改。您要实现的目标需要更多的硬件关闭视点,而不是通过OLE到达您的打印机,并且 - 很差 - 无法保证它甚至可以完成如果制造商没有直接为此提供API。 (通常他们没有。)

答案 1 :(得分:0)

在Word中创建一个可以执行所需操作的宏,然后将此宏复制到您的程序中。显然,您必须更改一定量的语法。此外,Word(和Excel)中的宏使用在这些程序中定义但不在Delphi中的常量,因此您必须发现它们的值,然后在程序中使用这些值。

答案 2 :(得分:0)

您可以使用打印机驱动程序配置启用订书钉吗?如果是这样,通过在Windows上安装两次te打印机,一次使用和不使用订书钉,以及在打印时选择所需的te打印机来解决问题。 Word在COM API中有一个属性。我自己使用这种方法来选择不同的papertray。