[Delphi] 웹브라우져 컨트롤을 이용하여 출력하기

 
웹브라우져 컨트롤을 이용하여 출력하기
델파이로 프로그램 작업을 하다가
출력물이 필요해서 웹브라우져 컨트롤을 이용한 출력 프로그램을 만들었습니다.
델파이 스타터 버전에는 퀵리포트나 패스트 리포트가 없어서
HTML 을 디자인 하고 웹브라우져 컨트롤로 표시한후 출력하면 되겠다는 생각에
만들어 보게 되었습니다.

출력 데이터 생성

---- 소스코드
var
  htmltext, errmsg: String;
  Fp: TextFile;
  IOError : integer;
begin
  htmltext := '<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">' + #10#13;

  htmltext := htmltext + '<table border="1">';
  htmltext := htmltext + '<tr><td>성명</td><td>' + Edit1.Text + '</td></tr>';
  htmltext := htmltext + '<tr><td>생년월일</td><td>' + Edit2.Text + '</td></tr>';
  htmltext := htmltext + '<tr><td>연락처</td><td>' + Edit3.Text + '</td></tr>';
  htmltext := htmltext + '</table>';

  AssignFile(fp, 'C:\TEMP\tmp.html');
  {$I-}
  ReWrite(Fp);
  {$I+}

  IOError := IOResult;
  if IOError <> 0 then begin
    errmsg := '파일 쓰기 실패. IOResult = ' + IntToStr(IOError);
    exit;
  end;

  Writeln(Fp, htmltext);
  CloseFile(Fp);

  frmPrint := TfrmPrint.Create(Application);
  frmPrint.ShowModal;
  frmPrint.Free;
end;
---- 소스코드 끝

출력물 폼 디자인


---- 소스코드

//form show 이벤트에서 tmp.html 불러오기
WebBrowser1.Navigate('C:\TEMP\tmp.html');

// 출력버튼
var
  vIn, vOut: OleVariant;
begin
  // 출력
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, vIn, vOut);
end;

// 프린터 설정
var
  vIn, vOut: OleVariant;
begin  
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_PROMPTUSER, vIn, vOut);
end;
---- 소스코드 끝

HTML 파일로 저장하고 웹브라우져 컨트롤에서 읽어 오면 
출력 컴포넌트 없이 간단하 출력물 작성이 가능합니다.

댓글

이 블로그의 인기 게시물

2025년 7월 다이어리

1. 대학교 축제 전시 프로젝트