|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"Webアプリから印刷"
こんにちは、HIRAOです。今仕事でイントラネットなるものに取り組んでます。
このサンプルは、Webアプリからの印刷です。
Webサーバーには,MS IIS4.0 + ASP を使ってます。
サンプル自体は過去のログのいいこと取りです。
アップした目的は、Delphiで普通使う Printer オブジェクトだとWebアプリから
印刷ができなかったということです。(僕だけかも?)
APIを使ってゴリゴリ書く方法しかないようです。
ASP側
<%
Set Obj=Server.CreateObject(".....")
Obj.TEST_PRINT 12,"テストの文字"
%>
Delphi側(3.1Pro版を使ってます)
function Char10ToPixel(X : Integer) : Integer;
begin
Result := Round(X * (PixelsPerInchX / 10));
end;
function Line6ToPixel(Y : Integer) : Integer;
begin
Result := Round(Y * (PixelsPerInchY / 6));
end;
procedure TCENTER_PRINT.TEST_PRINT(const FONT_SIZE:Integer;
const STR: WideString);
const
FONT_NAME='MS ゴシック';
var
hDC : THandle;
DocInfo: TDocInfo;
logfont:Tlogfont;
hf,hfold:HFont;
PRINTER_INFO_5:array[0..10] of TPrinterInfo5;
pcbNeeded, pcReturned:DWORD;
S: array[0..80] of Char;
ST:string;
begin
EnumPrinters(PRINTER_ENUM_LOCAL,nil,5,@PRINTER_INFO_5,
sizeof(PRINTER_INFO_5),
pcbNeeded, pcReturned);
StrECopy(S,PRINTER_INFO_5[0].pPrinterName);
FillChar( DocInfo, SizeOf(DocInfo), #0 );
DocInfo.cbSize := SizeOf(DocInfo);
DocInfo.lpszDocName := 'SAMPLE';
DocInfo.lpszOutput := nil;
hDC:=CreateDC('WINSPOOL',S,nil,nil);
PixelsPerInchX:=GetDeviceCaps(hDC,LOGPIXELSX);
PixelsPerInchY:=GetDeviceCaps(hDC,LOGPIXELSY);
fillchar(logfont,sizeof(logfont),#0);
with logfont do begin
lfHeight := -MulDiv(FONT_SIZE,PixelsPerInchX,72);
lfWidth := 0; // Integer;
lfEscapement := 0 ; // Integer; r=0..3600
lfWeight :=550; // Integer;
lfCharSet :=ShiftJIS_Charset;// Byte;
lfPitchAndFamily:=Fixed_Pitch or ff_Modern;// Byte;
strcopy(lfFaceName,FONT_NAME);// pchar;
end;
hf:=CreateFontIndirect(logfont);
StartDoc( hDC, DocInfo );
hfold:=SelectObject(hDC,hf);
StartPage(hDC);
ST:=Copy(STR,1,Length(STR));
TextOut(hDC,Char10ToPixel(10),Line6ToPixel(5),PChar(ST),Length(ST));
EndPage(hDC);
EndDoc(hDC);
SelectObject(hDC,hfold);
DeleteObject(hf);
DeleteDC(hDC);
end;
HIRAO(HHE01131)
#しかし、ここのログは大変参考になります。(^^)/
Original document by HIRAO 氏 ID:(HHE01131)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|