Delphi Print in MS-Word using Staples



我正在尝试在MS-Word中打印文档。无论是通过TWordApplication还是OleVariant 对我来说都可以。我们的打印机可以选择打印。我们使用具有订书钉卡懒汉的施乐打印机。当我手动完成所有操作时,它当然可以正常工作。当我从代码中执行此操作时,我似乎无法使其工作。

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

我尝试导入注册表文件,但失败了。我尝试从注册表文件中导入值并使用 WriteBinaryData 写入它,但这删除了 DevMode 条目。我尝试从注册表中保存我创建的配置文件信息的另一个注册表值复制注册表值。不过,当我尝试这样做时,似乎什么也没发生。

任何人都可以帮我解决这个问题,据我所知,我尝试了一切,但我似乎无法让它工作。也可能是我在WriteBinaryData和ReadBinaryData上做错了什么。如果有人能给我一个工作的例子,我会非常伟大。

我与Delphi XE2合作。

蒂亚

DEVMODE结构由打印机驱动程序内部使用,它包括内部数据(甚至是驱动程序堆),除非您有制造商提供的详细 HOWTO 表,否则不得修改。您试图实现的目标需要比通过 OLE 到达打印机更接近硬件的观点,而且 - 糟糕的是 - 如果制造商没有直接为此目的提供 API,则无法保证甚至可以做到这一点。(通常他们不会。

在 Word 中创建一个宏,该宏可以执行您想要的操作,然后将此宏复制到程序中。显然,您将不得不对语法进行一定程度的更改。此外,Word(和Excel)中的宏使用在这些程序中定义的常量,而不是在Delphi中定义的常量,因此您必须发现它们的值是什么,然后在程序中使用这些值。

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

最新更新