Unit1.pas
上传用户:sh_weigang
上传日期:2013-04-17
资源大小:179k
文件大小:3k
源码类别:

打印编程

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, OleCtrls, ECompositeViewer_TLB, ExpressViewerDll_TLB, StdCtrls,
  6.   EPlotViewer_TLB, ExtCtrls, Printers;
  7. const
  8. WM_MyMSG = WM_USER + $1;
  9. type
  10.   Tw_Main = class(TForm)
  11. CADViewer: TCExpressViewerControl;
  12. procedure FormCreate(Sender: TObject);
  13.     procedure FormShow(Sender: TObject);
  14.   private
  15. { Private declarations }
  16. procedure PrintFile;
  17. procedure OnMyMsg(var message:TMessage); message WM_MyMSG;
  18.   public
  19. { Public declarations }
  20.   end;
  21. var
  22.   w_Main: Tw_Main;
  23. implementation
  24. uses AdCommon_TLB, EPlotRenderer_TLB;
  25. {$R *.dfm}
  26. procedure Tw_Main.FormCreate(Sender: TObject);
  27. begin
  28. Application.Title := Caption;
  29. if ParamStr(1) = '' then begin
  30. MessageBox( Handle,'达乐文企业传真中心专用工具,只能在达乐文传真服务器中使用。' +
  31. char(13) + char(10) + char(13) + char(10) + 'http://www.midpal.com.cn',
  32. '提示',MB_ICONINFORMATION+MB_OK);
  33. Application.ShowMainForm := false;
  34. Application.Terminate;
  35. exit;
  36. end else if not FileExists(ParamStr(1)) then begin
  37. MessageBox(Handle,PChar('文件 ' + ParamStr(1) + ' 不存在。'),PChar(Caption),MB_ICONINFORMATION+MB_OK);
  38. Application.ShowMainForm := false;
  39. Application.Terminate;
  40. exit;
  41. end;
  42. CADViewer.SourcePath := ParamStr(1);
  43. end;
  44. procedure Tw_Main.OnMyMsg(var message:TMessage);
  45. begin
  46. PrintFile;
  47. end;
  48. procedure Tw_Main.PrintFile;
  49. var
  50. View : IAdPageViewer2;
  51. i : Integer;
  52. pageCol : IAdCollection;
  53. newPage : OleVariant;
  54. CurView : IAdPageView;
  55. hPrintDC: Integer;
  56. dL : Real;
  57. dB : Real;
  58. dR : Real;
  59. dT : Real;
  60. di : DOCINFO;
  61. begin
  62. View := CADViewer.DocumentHandler AS IAdPageViewer2;
  63. View.WaitForPageLoaded;
  64. pageCol := View.Pages AS IAdCollection;
  65. hPrintDC := CreateDC('WINSPOOL','达乐文传真机',nil,nil);
  66. if hPrintDC = 0 then
  67. MessageBox(Handle,'达乐文传真机不存在,请安装后再转换。','提示',MB_ICONERROR + MB_OK)
  68. else begin
  69. Sleep(2000);
  70. StartDoc(hPrintDC,di);
  71. for i:=1 to pageCol.Count  do
  72. begin
  73. newPage := pageCol.Item[i];
  74. View.Page := newPage;
  75. View.WaitForPageLoaded;
  76. CurView := View.View AS IAdPageView;
  77. dL := CurView.Left;
  78. dB := CurView.Bottom;
  79. dR := CurView.Right;
  80. dT := CurView.Top;
  81. try
  82. //View.SimplePrint(true,true);
  83. View.PrintEx(hPrintDC,dL,dB,dR,dT,true);
  84. except
  85. end;
  86. end;
  87. EndDoc(hPrintDC);
  88. DeleteDC(hPrintDC);
  89. end;
  90. Close();
  91. Application.Terminate;
  92. end;
  93. procedure Tw_Main.FormShow(Sender: TObject);
  94. begin
  95. PostMessage(Handle,WM_MYMSG,0,0);
  96. end;
  97. end.