StartMe 发表于 2009-6-17 21:27:00

[求助]夺取打印机纸张类型名称问题

<p>我一般用A3纸打印,原先的打印机我在CAD中读图纸类型也从没出错,因为这个打印机的A3纸名称就叫“A3“,可最近换了一台打印机,它的A3纸类型名称叫“A3(297*420)”,可CanonicalMediaName读出的图纸名称任然是“A3”,名称后面并不带那个“(297*420)”部分,这下惨了!我在其它空间设置打印纸时设成“A3“是说什么都不对了,就是“这个图纸类型不存在”。各位,这个问题有解决办法么?怎么才能读取A3图纸的全称“A3(297*420)”?</p>

StartMe 发表于 2009-6-17 23:30:00

顶上,等待。

Saging 发表于 2009-6-18 12:42:00

<p>图纸名称应该是这个函数得出的一个数组 GetCanonicalMediaNames,</p><p>图纸信息应该是GetLocaleMediaName(m_paper_name(i))得出的。</p><p>在打印时,应该是使用图纸名称即m_paper_name(i),而不是用GetLocaleMediaName(m_paper_name(i))得出的值。</p><p>但是有些打印设备的图纸名称与用GetLocaleMediaName(m_paper_name(i))得出的信息是一样的,特别是常的介质如A3,A4等。</p><p>不知道我讲清楚没有。</p><p></p>

StartMe 发表于 2009-6-18 21:28:00

<p>谢楼上。</p><p>不知是不是我理解问题,我就想问,怎么确定当前图形中所存储的是m_paper_name(i)中的哪一个?即i是多少?</p>

StartMe 发表于 2009-6-24 21:06:00

我知道了,是我没说明白,我不是要在我自己的程序内部<font color="#ff0000"><strong>设定</strong></font>打印纸张,而是想要<font color="#ff3300"><strong>读取</strong></font>图形中上次打印时用的纸张名称(即CAD打印界面上选择的打印纸的名称,不是GetCanonicalMediaNames得到的纸张名称列表中的名称,这个与打印界面上显示的纸张名是不一样的),这个怎么得到?请指教一下,谢谢了。

3xxx 发表于 2013-6-10 21:37:20

本帖最后由 3xxx 于 2013-6-10 21:40 编辑

   就是我们手工设置打印机的时候,看到的是A3A2A1纸张列表,可是在vba中,不能使用这样的文字。需要用   CanonicalMediaName获得纸张列表,然后对应。比如,有时候A0对应的是user270之类。
'打印配置
         ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo '刷新打印设备信息
         MediaName = Layouts.Item(0).CanonicalMediaName 'item(0)代表第一个图纸空间
         ThisDrawing.ActiveLayout.ConfigName = Layouts.Item(0).ConfigName '"Hewlett-Packard HP-GL_2 Plotter.pc3" 'Adobe PDF"pdfFactory Pro.pc3" '打印机名称
         ThisDrawing.ActiveLayout.StyleSheet = Layouts.Item(0).StyleSheet '"acad.ctb"'打印样式

      '获得纸张列表
      ThisDrawing.ActiveLayout.CanonicalMediaName = MediaName '
页: [1]
查看完整版本: [求助]夺取打印机纸张类型名称问题