在DELPHI 文 本 和 图 形 的 打 印

对 于 每 一 个WINDOWS 应 用 程 序 开 发 者 来 说, 打 印 功 能 的 实 现 都 是 极 为 棘 手 的, 因 为 要 涉 及 到 相 当 多 的 代 码 而 且 常 常 是 相 当 的 复 杂, 但 是 在DELPHI 中 实 现 文 本 和 图 象 的 打 印 功 能 却 是 非 常 容 易 的。

1、 文 本 的 打 印 功 能。DELPHI 中 文 本 的 打 印 功 能 就 如 同 在DOS 中 实 现 文 本 的 打 印 功 能 一 样 容 易, 需 要 做 的 一 切 只 是 取 得 打 印 参 数, 打 开 打 印 机, 然 后 发 送 文 本 的 每 一 行 内 容。 在DELPHI 中 提 供 了 一 个PRINTERS 程 序 单 元, 它 说 明 了 一 个TPRINTER 对 象, 封 装 了WINDOWS 打 印 工 作 和 输 出 打 印 机 之 间 的 接 口, 并 提 供 常 用 的 属 性 和 方 法, 其 中 画 布CANVAS 是 一 个 非 常 有 用 的 属 性, 它 代 表 了 当 前 打 印 文 件 的 表 面, 是 以 图 形 方 式 来 工 作 的, 整 个 的 打 印 输 出 工 作 仅 仅 是 将 你 打 印 的 内 容 输 出 到TPRINTER 的 属 性CANVAS 上, 当 全 部 的 输 出 工 作 完 成 以 后, 打 印 对 象(TPRINTER) 把CANVAS 的 属 性 值 送 到 打 印 机 上 去。

下 面 举 例 来 说 明 如 何 通 过DELPHI 实 现 文 本 内 容 的 打 印。 在DELPHI 中 提 供 了PRINTDIALOG、PRINTERSETUPDIALOG 两 个 控 件 允 许 我 们 进 行 打 印 机 以 及 其 他 影 响 打 印 输 出 的 选 择, 此 外 最 重 要 的 一 点 是 要 想 实 现 打 印 功 能 必 须 在 编 译 程 序 以 前 将PRINTERS 加 入 到INTERFACE 或 者IMPLEMENTATION 的UESE 语 句 当 中, 因 为PRINTER 单 元 包 括ASSIGNPRN 和 其 他 控 制 打 印 机 的 过 程。

首 先 在FORM 当 中 加 入MEMO、PRINTDIALOG、PRINTERSETUPDIALOG 和 两 个BUTTON 控 件, 两 个 BUTTON 的CAPTION 分 别 为“ 打 印 设 置” 和“ 打 印”。 然 后 编 写BUTTON 的 事 件 驱 动 程 序( 代 码 在 下 面), 这 个 简 单 的 例 子 中 只 要 单 击“ 打 印” 按 钮 时 便 可 以 在 打 印 机 上 输 出 文 件0S2.TXT, 打 印 事 件 的 清 单 如 下:

implementation

uses printers;

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

printersetupdialog1.execute;

//选择输出的打印机以及其他打印控制选项

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var

lines:integer;

prntext:system.text;

//将PRNTEXT声名为一个在SYSTEM程序单元当中定义的文本文件

begin

if printdialog1.execute then

assignprn(prntext);

//将PRNTEST分配给打印机

rewrite(prntext);

//调用REWRITE函数,为输出打开已分配的文件

printer.canvas.font:=memo1.font;

//把当前MEMO1的字体指定给打印对象的CANVAS的字体属性

for lines:=0 to memo1.lines.count-1do

writeln(prntext

memo1.lines[lines]);

//把MEMO的内容写到打印机对象

system.close(prntext);

//关闭打印文件

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

memo1.lines.loadfromfile('c:/dos/os2.txt');

//在FORM建立时读入C:/DOS/OS2.TXT文件

end;

end.

2、 图 形 的 打 印 功 能

简 单 的 图 形 打 印 功 能 也 如 打 印 文 本 一 样 的 容 易, 只 是 告 诉 打 印 机 对 象(TPRINTER) 开 始 打 印, 把 图 形 简 单 的 复 制 到 打 印 机 上 去, 最 后 告 诉 打 印 机 结 束 打 印 工 作。

举 例 说 明: 将 上 面 的 例 子 的MEMO 控 件 换 成IMAGE 控 件, 再 经 过 一 些 简 单 的 修 改, 图 形 打 印 的 代 码 如 下:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if printdialog1.execute then

begin

printer.begin

doc;

printer.canvas.draw(0

0

image1.picture.graphic);

printer.enddoc;

end;

end;

在 这 种 情 况 下, 使 用 的 是 打 印 机 的 分 辨 率, 图 形 在 页 面 的 左 上 角 开 始 打 印 输 出, 打 出 的 图 形 很 小, 在 很 多 的 情 况 下 不 能 符 合 要 求, 但 是 打 印 机 画 布CANVAS 的STRETHDRAW 的 方 法, 可 以 让 我 们 对 图 形 进 行 灵 活 的 处 理, 画 布(CANVAS) 的STRETCHDRAW 方 法 声 名 为:

procedure StretchDraw(const Rect: TRect;

Graphic: TGraphic);

其中的RECT参数代表图形输出区域的大小,TRECT的类型声名为:

TRect = record

case Integer of

0: (Left

Top

Right

Bottom: Integer);

1: (TopLeft

BottomRight: TPoint);

end;

因 此 我 们 只 要 调 整RECT 的 大 小 及 其 在 打 印 页 面 上 的 位 置, 进 而 达 到 自 己 满 意 的 效 果, 下 面 的 代 码 是 不 断 的 放 大 图 形, 充 满 我 们 定 义 的 矩 形 区 域, 并 将 其 定 位 在 打 印 机 画 布(CANVAS) 的 中 央 进 行 输 出。 代 码 如 下:

procedure TForm1.Button1Click(Sender: TObject);

VAR

strect:Trect;

//定义打印输出矩形框的大小

temhi

temwd:integer;

begin

if printdialog1.execute then

begin

temhi:=image1.picture.height;

temwd:=image1.picture.width;

while (temhi printer.pageheight div 2)and

//将图形放大到打印页面的1/2大小

(temwd printer.pagewidth div 2)do

begin

temhi:=temhi+temhi;

temwd:=temwd+temwd;

end;

with strectdo

//定义图形在页面上的中心位置输出

begin

left:=(printer.pagewidth -temwd) div 2;

top:=(printer.pageheight-temhi) div 2;

right:=left+temwd;

bottom:=top+temhi;

end;

with printerdo

begin

begin

doc;

//将放大的图形向打印机输出

canvas.stretchdraw(strect

image1.picture.graphic);

enddoc;

end;

end;

end;

打印Html用同样的办法,Do your self!

html文本怎么打印出来,如何把一个html文件直接打印出来(200分)相关推荐

  1. 关于一个CUE文件及多个分轨APE合并成CUE及APE文件的办法

    有CUE文件,就比没有简单多了. 1. 用monkey把多个分轨APE文件解压缩成wav格式. 2. 修改原cue文件内容,把对应的ape全改成wav 3. 用虚拟光驱载入这个cue文件. 4. 用E ...

  2. Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。

    写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z 多线程编程:使用Runnable接口实例创建线程.使用线程等待方法wait(): pack ...

  3. linux用echo显示欢迎信息,我使用过的Linux命令之echo - 显示文本、打印信息

     用途说明 echo命令用来打印信息,是一个最常用的命令.在命令行中常用来打印环境变量的值,已确定当前环境中是否设置了指定的环境变量.在shell脚本中,常用来打印信息和帮助调试程序. 常用参数 ...

  4. html用dom显示xml,html DOM文件引用一个XML文件将不会在浏览器中打印

    我完全不熟悉这一点,我正在上课,现在变成了一个令人头疼的问题.我有这个HTML DOM文件,它引用了一个XML文件,我需要在浏览器中显示在屏幕上.它应该只打印标题,标题,第一个,最后一个,位置,描述的 ...

  5. excel每行按模板导出为一个excel文件,可以指定列文本生成二维码或者条形码

    程序修改了bug,增加了功能.(20220825) 该程序可以把一个excel文件中每行数据按指定模板生成一个单独excel文件. 1. 模板文件为tpl\template.xlsx. 2. 从左侧数 ...

  6. java将多个文件写入到一个文件流中再有规律的取出_编写java程序,往一个txt文件里写入学生的基本信息,然后再读出这些信息并打印出来,最后把该文件拷贝到指...

    满意答案 azonyb 2014.02.18 采纳率:59%    等级:12 已帮助:13223人 import java.io.BufferedInputStream; import java.i ...

  7. 一个文本框输入中文,另一个显示拼音

    <script type="text/javascript"></script> <script type="text/javascript ...

  8. 打印log4j日志 : 超过一定大小新建日志文件 每天新建一个日志文件

    # Settings dir=. file=opc-client.log target=${dir}/${file} #target=${file}# Set root logger level to ...

  9. 3d打印英语文献_3D打印新突破:一个喷头打印多种材质(有视频)

    点击上方蓝字,关注我们! 原文作者:Johannes T. B. Overvelde 最新设计的多喷头系统能用多种粘性材料进行3D打印,在亚毫米尺度上控制打印物体的材料性质. 增材制造(又称3D打印) ...

最新文章

  1. Ubuntu 16.04 安装arm-linux-gcc交叉编译
  2. 关于 MSDN 收藏夹
  3. Struts2 ognl表达式
  4. 在Win7中怎样打开摄像头?
  5. 操作系统之文件管理:8、文件系统实例
  6. NAC、NAP及TNC安全接入技术对比分析
  7. 滴滴公司多次被下架的原因是什么,深挖测试员究竟还该不该去滴滴?
  8. send/receive h264/aac file/data by rtp/rtsp over udp/tcp
  9. oracle导入多sheet的excel,excel表格数据导入oracle数据库-一个excel表格中有多个sheet,如何将其导入oracle数......
  10. laravel 中Predis使用手册
  11. java开发kpi考核_如何量化考核技术人的KPI?
  12. Robo3T操作MongoDB数据库常用命令
  13. MyBatis_1_MaBatis入门
  14. 北航计算机博士后,北京航空航天大学博士后待遇
  15. Java Web 开发后续(二)
  16. 多传感器信息融合及应用(何友等著)一至四章节读书笔记
  17. mysql结果作为另一次查询_MySql中一次查询结果用作二次查询条件
  18. 在ros中使用glog
  19. iOS二维码代码实现
  20. 各种数据库总结与页面传值及小技巧等杂汇

热门文章

  1. 混合云管平台排名您知道吗?看这里
  2. python爬取校花网的图片
  3. 公司php笔试题实习生2018,2018 新浪校招 PHP 实习生 电话面试总结
  4. 著名ai换脸网站_AI如何从著名的死去艺术家那里删除新音乐
  5. 文本溢出显示省略号效果
  6. 微博的10大特征包括哪些?
  7. 使用openocd调试Linux内核,OpenOCD-JTAG调试(示例代码)
  8. 前后端分离项目,请求头中包含Authorizaton:XX,但是后端getHeader(Authorizaton) 获取不到
  9. SpringSecurityOauth中token(Basic、Bearer)
  10. python3可视化-pyecharts图形库,利用Map进行地图的创建和使用