如何用程序控制打印文本文件

lldwolf 2001-05-09 10:07:00
有一个文本文件,如何用程序将它发给打印机
...全文
238 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rh 2001-05-11
  • 打赏
  • 举报
回复
上面是就近转载过江项羽老大的~~~
rh 2001-05-11
  • 打赏
  • 举报
回复
下面是一个将数据直接发送到打印机的示例,大家看看对位图打印是否有用(c++builder开发者):

记得在文件中加上#include winspool.h

bool Print(char* szPrinterName, char* szBuffer)// szBuffer是我们希望发送到打印机的数据缓冲
{
HANDLE hPrinter; //打印机句柄
int iLen = strlen(szBuffer);// 发送数据的长度
DWORD dwWritten; // 已经向打印机写了多少

if(OpenPrinter(szPrinterName, &hPrinter, NULL))
//Open打印机并赋给一个句柄(已经保存在hPrinter)
{
DOC_INFO_1 Info;//文档信息
memset(&Info, 0, sizeof(Info));
Info.pDocName = "My PrintJob";
//文档名(which is shown in the PrintManager)
Info.pOutputFile = NULL;
//不须要向一个文件写,设为NULL
Info.pDatatype = "RAW";
//数据以RAW格式发送(Win9x和WinNT都支持RAW和EMF格式,WinNT还支持TEXT格式

if(!StartDocPrinter(hPrinter, 1, (LPBYTE)&Info))//文档开始
return false;

// 告诉打印机开始新页
StartPagePrinter(hPrinter);

// 向打印机写数据
if(!WritePrinter(hPrinter, szBuffer, iLen, &dwWritten))
{
//当发送数据时出现错误
//用最后的错误指出发生了什么错误
}
EndPagePrinter(hPrinter);//告诉打印机已经完成当前页
if(!EndDocPrinter(hPrinter))//文档结束
return false;
ClosePrinter(hPrinter);//关闭打印机
return true;
}
else
{
return false;
}
}

假如你的打印机直接与计算机相连(LPT1-LPT3)或者影射为网络打印机(你可以通过象"\\MainServer \MatrixPrinter" 形式的路径来使用它),那你就可以直接用fopen函数来实现。
eg. fopen("lpt1", "wt") 或 fopen("\\\\MainServer\\MatrixPrinter", "wt"
hxygx 2001-05-10
  • 打赏
  • 举报
回复
在用的时候将pinters单元加入use列表
伪代码:
assignfile(filename)
reset(filename)
assignprn(printfile)
rewrite(printfile)
printer.canvas.font := font
try
while eof(filename) do
begin
readln(...)//取一行
writeln(...)//往打印机送一行
end
finally
closefile(filename)
closefile(printfile)
end;
lldwolf 2001-05-09
  • 打赏
  • 举报
回复
能否说得详细点儿
sundayboys 2001-05-09
  • 打赏
  • 举报
回复
Printer()->BeginDoc();
在这之前要指出打印对象。
xycleo 2001-05-09
  • 打赏
  • 举报
回复
TprintDialog就可以吧



lldwolf 2001-05-09
  • 打赏
  • 举报
回复
这么简单的问题怎么没人回答

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧