我正在尝试将图像从ioComp iPlotX对象打印到PDF打印机。该对象具有iPlotX.SaveToBitmap,它可以正常工作,我可以将文件“发送”到PDF打印机,但是图像模糊,位图为96 DPI。
该控件具有iPlotX.PrintChart方法,该方法应该直接进入打印机。还有一种方法可以指示将输出定向到哪个Windows打印机。我摸索着看是否可以工作,有几次我在PDF文件中生成了非常清晰的图像。但是打印到页面上的其他项目都不见了,我只有一页而不是3页。大多数情况下,PDF文件中什么都没有。
下面是我的相关代码的片段。
Me.SinglePlotObject1(iIndex).PlotControl.PrintShowDialog = False
Me.SinglePlotObject1(iIndex).PlotControl.Printername = modNovaPDFConstants.NOVAPDF_PRINTER_NAME
Me.SinglePlotObject1(iIndex).PlotControl.PrintOrientation = poLandscape
Me.SinglePlotObject1(iIndex).PlotControl.PrintChart
此注释来自ioComp.Help:
注意:如果已将PrintShowDialog设置为TRUE并已设置 PrinterName为非空字符串,然后由打印机选择 用户将被忽略! PrinterName属性将始终覆盖 用户打印机选择(如果使用的是我们的打印机对话框) 您打算最终显示我们的内置打印机选择对话框 用户,则应将PrinterName属性设置为空字符串 使一切正常工作。
从他们的帮助中也是:
属性
PrintXStart
:Double用于指定起始x轴最小值 实现多页打印时的价值。说明:使用PrintXStart获取或设置起始x轴最小值 实现多页打印时的价值。默认情况下, PrintXStart和PrintXStop初始化为最小和最大 x轴显示在屏幕上,仅打印一页。您 必须在OnBeforePrint中操纵PrintXStart和PrintXStop或 OnBeforePrintPage事件,以在打印过程中打印出多个页面 一次打印会话。
他们显示的唯一示例是将XStart属性设置为0。我不确定这是否意味着同一个图形有多个页面,即该图形是否延伸到多个页面上,或者这与使用不同的iPlots有关在不同的页面上。过去,我们一直只使用iPlotX.SaveToBitmap进行打印。当时的情节和文字就足够了。
如果任何人对ioComp绘图控件和打印有任何经验,我愿意尝试任何建议。
现在,我正在尝试使用尽可能少的代码创建一个测试应用程序,以测试其所有其他打印机选项。
我尝试了他们的“常见问题”部分,但找不到与使用VB6和ActiveX控件进行打印有关的任何内容。当我向他们发送消息时,出现了smtp错误。
DaveInCaz:好主意。我尝试使用其他PDF打印机,结果是相同的。我尝试了一种名为iPrintToDC的控件方法,该方法传入Printer.hDC。这取得了一些进展。我可以在两页上打印两个图形,但是这些图形大约是我的拇指大小。如果更改宽度或高度,只会以某种方式将图的底部放在标题上方,并删除图本身的所有内容,从而使情况变得更糟。好像该图被缠绕在圆柱体上一样,我所看到的只是顶部和底部相交的位置。当我使用.PrintChart方法时,仅会打印两个图表的最后一个,而不会显示我打印的其他任何内容。
谢谢。