0

我有一个用 VB6 编写的程序的 BEAST。它使用 ActiveReports 来生成信件。

报告循环处理;带有冗长的循环和(一大堆)嵌套的“if”和“case”语句。丑陋!

报告被发送到打印机,如下所示:

Function PrintIt(ltrobj as Object)

    Set ltrobj = MyARdocument '(.Dsr file)
    ltrobj.txtfield1 = strVerbage           'This string was populated somewhere else
    ltrobj.Printer.DisplayProgressDialog = False
    ltrobj.PrintReport False

End Function

现在这是奇怪的部分:每次循环迭代时,从打印机中物理出来的页面都会旋转 90 度。更奇怪的是——这只发生在我的 VB6 应用程序中——其他 Word 文档、报告、批处理作业,无论是正常的。

所以第一页像往常一样出来,标题在前(指向北方)。第二页从侧面出来(标题指向西方)。第三个像第一个一样从打印机中出来,第四个像第二个一样出来,然后……

打印机:理光Aficio MP5000

我找不到打印机上的设置,或 ActiveReports 中控制它的属性。

任何想法、帮助或一般方向将不胜感激!

谢谢,

杰森

4

1 回答 1

0

ActiveReports 中没有“旋转”设置。可能影响这一点的最接近的事情是页面大小和方向,但在最坏的情况下,我希望它们来回翻转而不是实际旋转页面。我会尝试做一些事情:

  1. 在打印报告时跟踪与方向和页面大小相关的打印机和页面设置。
  2. 尝试打印到另一台打印机,看看它是在所有打印机上发生还是仅在这台打印机上发生。
  3. 在屏幕上预览报告并查看它们是否在预览中旋转(或使用 report.Export(...) 将它们导出为 PDF 并查看它们是否在此处旋转)。

要跟踪页面设置,您应该在几个地方进行。一个在打印机上,另一个在报告的每一页(或 Canvas)上。还有可能相关的 ActiveReport.PrintWidth(报告的宽度,而不是页面的宽度)。因此,在打印每个报告之前,请尝试追踪以下值:

report.PrintWidth
' the default settings for the report
report.PageSettings.TopMargin
report.PageSettings.RightMargin
report.PageSettings.BottomMargin
report.PageSettings.LeftMargin
' actual printer's current settings:
report.Printer.PaperSize
report.Printer.PaperHeight
report.Printer.PaperWidth
report.Printer.Orientation
' settings for a specific page:
for each page in report.Pages:
  report.Pages(...).Width
  report.Pages(...).Height
  report.Pages(...).Orientation

顺便说一句:ActiveReports COM 帮助在这里

如果预览/PDF 测试看起来不错,那么我将专注于打印机本身。显然,打印到另一台打印机也是如此。否则,请关注 ActiveReports 设置。

希望这可以帮助

Scott Willeke
GrapeCity
于 2011-08-13T20:31:06.220 回答