关于FastReport打印自定义纸张问题,总是先打一张空页,然后才输入正常的数据...(100分)

  • 主题发起人 主题发起人 lovered
  • 开始时间 开始时间
L

lovered

Unregistered / Unconfirmed
GUEST, unregistred user!
我在适用FastReport打印自定义的票据时,总是先打一张空页,然后才打印出正常页。
我的FastReport是2.47版。设置如下:
报表设置—>选择了虚拟打印机,装入报表时选择,未选两遍报表。
纸张类型->自定义,大小150×95
打印机:Epson 300K+
操作系统:win2000
烦恼的是在Win98、Win95上,Epson300K+有自定义纸张大小功能,直接定义150×95即可。
但是在Win2000上却不行。据Epson技术人员讲使用“文件”下的“服务器属性”功能自定
义,定义是成功了,但是就是选择纸张时看不到!如果选择已有的纸张类型,打印正常,
一页。请高手指点,难道FastReport在自定义报表上有Bug,还是需要其它什么设置。注意
我是指在Win2000操作系统上,请高手出招,分不够再加!
 
你的打印内容
size太大了
 
to hfghfghfg:忘了说单位了
150mm×95mm=15cm×9.5cm=15厘米×9.5厘米
欢迎大家讨论,参看dfw们昔日的回答,好像也未解决,欢迎高手赐招!
 
我用的就是2.47
2000下自定义也能看到,
估计是你的fr版本有问题,重新Build一下试试
要不然就是你的2000有问题
 
我也碰到同样的问题,解决方法是
1.在打印机属性中新建一个纸张
2.在编译前在报表的Report Options里选择那个打印机
OK!
问题是如果你选择那个打印机的话,就出现你那种情况!!![:(!]
 
你可以从纸张格式的下拉列表框中选择当前打印杨所支持的纸张格式。如果当前打印支持自定义纸张格式,你就可以从列表中选择“自定义”,你需要输入自定义纸张格式的宽度和高度。
其他的选择纸张格式,你能够确定纸张方向和设置“Unlimited height”(无限高度)-增加纸张高度(如果你想在页面上放置更多的band)。 注意:不是所有的打印机驱动或打印机都支持自定义纸张格式,(例如,打印机驱动“HP LaserJet 6L”就不支持定义为76*127mm的尺寸;打印机驱动“HP LaserJet 4L”不支持所有的自定义尺寸)。
 
自定义的好象是不好用,我以前打印381纸时在qr中自定义怎么也打印不了,如果是常用的打印纸我想应该有这种纸张,看看rb有没有上面挺多的。
 
自定义纸的确是一个麻烦的问题(尤其在win2000下),倾听.
 
欢迎继续讨论。问题还未解决。请高手出招
 
如何在WINDOWS中控制打印字体的长宽,而不受限于SIZE 的限制

首先为了达到这个功能,可以采用Windows的逻辑字体(LogFont)
可以使用 CreateFont 或 CreateFontIndirect 这两个Windows API
函数来定义任何想要的字体,由于 CreateFont 所需的参数甚多通常
我们使用 CreateFontIndirect 来建立所需的逻辑字体,这个API函数
在Delphi中的声明为
function CreateFontIndirect(const p1: TLogFont): HFONT;
stdcall;
其中只有一个参数 p1: TLogfont
所有有关字体的参数完全通过这个
TLogfont结构来传送,Windows将根据结构中的内容创建出相应的逻辑
字体,在Delphi的Windows.pas中TLogFont是这样定义的

TLogFontA = packed record
lfHeight: Longint;
lfWidth: Longint;
lfEscapement: Longint;
lfOrientation: Longint;
lfWeight: Longint;
lfItalic: Byte;
lfUnderline: Byte;
lfStrikeOut: Byte;
lfCharSet: Byte;
lfOutPrecision: Byte;
lfClipPrecision: Byte;
lfQuality: Byte;
lfPitchAndFamily: Byte;
lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
end;

TLogFontW = packed record
lfHeight: Longint;
lfWidth: Longint;
lfEscapement: Longint;
lfOrientation: Longint;
lfWeight: Longint;
lfItalic: Byte;
lfUnderline: Byte;
lfStrikeOut: Byte;
lfCharSet: Byte;
lfOutPrecision: Byte;
lfClipPrecision: Byte;
lfQuality: Byte;
lfPitchAndFamily: Byte;
lfFaceName: array[0..LF_FACESIZE - 1] of WideChar;
end;

TLogFont = TLogFontA;

其中涉及到很多参数,其中

lfHeight: Longint;
指定以逻辑单位标定的字体高度,取值可为正负或零,对于需要随意
定义字体高度的情况下通常取负值,以保证获得实际尺寸的字体。

lfWidth: Longint;
用于指定字体的平均宽度,由于Windows系统下的大多数字体都是比例
字体因而采用平均宽度这个表示方法。若指定为0,则系统会自动根据
适当的比例自动处理宽度。

lfEscapement: Longint;
指定输出方向与当前坐标系X轴之间的以十分之一度为单位的角度。

lfOrientation: Longint;
指定每个字符与当前坐标系X轴之间的以十分之一度为单位的角度。在
Windows95中这个值等同于lfEscpement。

lfWeight: Longint;
指定范围为从0至1000的字体加重程度,400是标准字体700为加重字体,
0表示采用默认值。

lfItalic: Byte;
不为0表示采用斜体字。

lfUnderline: Byte;
不为0表示带下划线。

lfStrikeOut: Byte;
不为0表示带穿透线。

lfCharSet: Byte;
指定字体集。

lfOutPrecision: Byte;
指定输出精度。用于确定对前面一些设定值的精确程度。

lfClipPrecision: Byte;
指定裁剪精度。裁剪是Windows图形环境下的一种特殊处理,简单说就是
去掉图形中落在视图以外的部分,有助于提高图形的处理速度。

lfQuality: Byte;
指定输出质量。

lfPitchAndFamily: Byte;
指定字体的Pitch和Family。

lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
指定采用的字体名称。

在建立逻辑字体时,我们通常使用

lfHeight和lfWidth来确定字体的尺寸,使用lfEscapement和lfOrientation
来确定字体的输出方向,使用lfWeight
lfItalic
lfUnderline

lfStrikeOut
来确定字体的加重,斜体,下划线和穿透线,使用lfCharSet
来确定字体的字符集,通常采用系统默认的字符集。
对于lfOutPrecision
lfClipPrecision
lfQuality一般应用于对屏幕之外
的输出设备,通常采用默认值。采用lfPitchAndFamily来确定采用定宽或可
变字体和字体的家族。以lfFaceName来通过名称选择采用的字体。
另外应当注意在Windows环境下,每种字体具体输出为何种形式取决于很多
因素,需要对以上这些参数进行有效的组合才能达到所要的效果。
 
拜托,诸位都是神仙,不要答非所问,期待高手出招...
 
我刚解决这个问题,不是自定义纸张的事,只要指定一个能容纳纸张尺寸的打印机驱动就可以啦。一用虚拟打印机就出问题,我也搞不清。只好这样解决啦。我用A3,lq1600驱动
 
lp1600的驱动能装上的话,就没有问题,但需要所有的客户端都用这个驱动
 
我也碰到一模一样的问题,我是打(width=240.0mm,length=109.7mm),win2k下我所有属性都按这个值设置好了,就是一打就出三张票据纸,只有一张有内容,我怀疑打印机不支持
我用的是star_5400,但我到哪里去找他的驱动呢,哎。。。。。。
 
可以用FASTREPORT2.5试试。www.playicq.com有下。
 
我的问题已解决,升级QReportV3.62,再在win2k中设一下打印机,两个都是必需的
 
fastReport控件包的安装过程中出现了问题,我用的delphi7,提示信息没有找到dsgnintf.dcu,请大家帮个忙,谢谢
 
多人接受答案了。
 

Similar threads

后退
顶部