从C#到Python

时间:2018-05-03 10:01:57

标签: c# python win32com bartender

使用Python,我正在尝试创建一个可以打印条形码标签的exe。这将与BarTender标签软件互动。我知道这是可能的,但我是Python新手,不知道如何解决这个问题。 我在C#中有它,但我需要转换为Python。对于知道这两种语言的人来说,这是一个简单的转换吗?)

// Declare a BarTender application variable
BarTender.Application btApp;
// Declare two BarTender document variables
BarTender.Format btFormat1;
BarTender.Format btFormat2;
// Create a new instance of BarTender
btApp = new BarTender.Application();
// Set the BarTender application visible
btApp.Visible = true;
// Open a BarTender document
btFormat1 = btApp.Formats.Open("c:\\Format1.btw", false, "");
// Open a second BarTender document
btFormat2 = btApp.Formats.Open("c:\\Format2.btw", false, "");
// Set focus to the first opened document
btFormat1.Activate();
// End the BarTender process
btApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);

到目前为止我已经

import win32.com.client

btApp = win32com.client.Dispatch("BarTender.Application")
btApp.Visible = 1
btFormat = btApp.Formats.Open(r"C:\Users\kmoe\Desktop\Print-Self_Labels.btw", false, "")

第一个参数是必需的,是一个字符串,包含要打开的文档的路径和文件名。第二个参数是布尔值:如果为true,则该方法将关闭BarTender启动时自动打开的名为“Document1”的默认空白文档。它无法关闭具有任何其他名称的文档。第三个参数指定要使用的打印机。

但是,这只会打开正确的标签模板,但不会打印到默认打印机

可在此处找到更多信息

http://help.seagullscientific.com/2016/en/#../Subsystems/ActiveX/Content/opening_format.htm%3FTocPath%3DAutomating%2520BarTender%7CAutomation%2520with%2520ActiveX%7CGetting%2520Started%7CExamples%2520Using%2520ActiveX%2520Automation%7C_____1

提前致谢!

1 个答案:

答案 0 :(得分:0)

我必须从Web服务器上实现Bartender标签打印,并且无法使用已安装的Bartender的集成生成器版本,因此我决定继续使用ActiveX。 旧帖子,但是如果有人需要它,这里是经过测试的代码。

import win32com.client as win32

btApp = win32.Dispatch("BarTender.Application")
btApp.Visible = True


btFormat = btApp.Formats.Open("C:\\Users\\someUser\\Desktop\\YourLabel.btw", False, "PrinterName")

btFormat.SetNamedSubStringValue("btField1", "Data1")
btFormat.SetNamedSubStringValue("btField2", "Data2")
btFormat.SetNamedSubStringValue("btField3", "Data3")

btFormat.IdenticalCopiesOfLabel = 1
btFormat.PrintOut(False, False)
btFormat.Close(1)
btApp.Quit(1)