印刷プレビュー


  目次



  InternetExplorer.Application




strTarget に自フレームや他フレームの location を引き渡す事によって印刷プレビューが
可能となるので、印刷目的のページは method=GET で表示されている必要があります

  

<%
Call Response.AddHeader( "Content-Type", "text/html; Charset=shift_jis" )
Response.ExpiresAbsolute=#May 31,2000 23:59:59#
%>
<SCRIPT language=VBScript>

Dim Ie
Const OLECMDID_PRINTPREVIEW = 7
Const OLECMDEXECOPT_DODEFAULT = 0

'***********************************************************
' 印刷プレビュー
'***********************************************************
function PrintPreview( strTarget )

	if IsEmpty( Ie ) then
		Set Ie = CreateObject("InternetExplorer.Application")
		Ie.Visible = False
	end if

	Ie.Navigate(strTarget)
	TimerPreview()

end function

'***********************************************************
' ドキュメントロード完了待ち処理
'***********************************************************
function TimerPreview()

	if Ie.Busy then
		Call window.setTimeout( _
			"Call TimerPreview()", _
			100, _
			"VBScript" _
		)
	else
		Call Ie.ExecWB( _
			OLECMDID_PRINTPREVIEW, _
			OLECMDEXECOPT_DODEFAULT _
		)
	end if

end function

</SCRIPT>

<BODY>
<INPUT type=text name=url style='width:400'>
<INPUT
	type=button
	value="印刷プレビュー"
	onClick='Call PrintPreview( document.all("url").value )'
>
</BODY>

<SCRIPT for=window event=onunload language=VBScript>

	if not IsEmpty( Ie ) then
		Ie.Quit()
	end if

</SCRIPT>
  

  印刷ページの作成

単票であれば、印刷時の用紙サイズさえ考慮していれば特にどのようなページでも問題ありませんが、
連続用紙を想定した昔ながらの印刷では、全角固定ピッチフォントを使用する事を前提とします

以下参考 ( Microsoft へのリンク )
Windows XP での全角固定ピッチフォントの仕様

また、印字ページの作成を簡単にする為に改行コードがそのまま反映されるよう PRE タグ内でデータを
作成し、改ページには style='page-break-before:always' を使用します

  

<STYLE type=text/css>
	PRE{
		font-family: "MS 明朝";
		font-size:16px
	}
</STYLE>
  

  

' **********************************************************
' データ読出し
' **********************************************************
Function GetData( )

	Query = "select * from 商品分類マスタ"

	Call DBGet( Cn, Rs, Query, false )

	OutData = ""
	bFirst = true
	nRow = 0

	Do While not DBEof( Rs )

		' 初回ヘッダー印刷
		if bFirst then
			bFirst = false
			Call HeadPrint()
		end if

		' 改頁ヘッダー印刷
		if nRow > nMax then
			OutData = OutData & "</PRE>"
			OutData = OutData & "<PRE style='page-break-before:always'>"
			OutData = OutData & vbCrLf
			Call HeadPrint()
		end if

		Call DetailPrint( )
		Rs.MoveNext

	Loop

End Function
  

以下サンプルイメージ
                           ** 得意先別商品別売上管理表 **    99/99/99    Z9頁
得意先 9999 J−−−−−−−−−−−−−−−−−−−−−−−J
     商品コード  商品名                                                     金額  商品区分
------------------------------------------------------------------------------------------------------------------
商品分類 XXX J−−−−−−−−−−−−−−−−−−−−−−−J
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
     9999        J−−−−−−−−−−−−−−−−−−−−−−−J   ZZ,ZZZ,ZZ9  JJ
                                                                合計 ZZZ,ZZZ,ZZ9
                                                            得意先計 ZZZ,ZZZ,ZZ9












また、スペーシングで位置合わせをする場合は文字列のバイト数を取得する必要があるので
以下のような関数を作成して対応します

  

' **********************************************************
' 文字列のバイト計算
' **********************************************************
function ByteLen( strTarget )

	Dim i,nLen,nRet,strMoji,nAsc

	nRet = 0

	nLen = Len( strTarget )

	For i = 1 to nLen
		nRet = nRet + 2
		strMoji = Mid( strTarget, i, 1 )
		nAsc = Asc( strMoji )
		if &H20 <= nAsc and nAsc <= &H7E then
			nRet = nRet - 1
		end if
		if &HA1 <= nAsc and nAsc <= &HDF then
			nRet = nRet - 1
		end if
	Next

	ByteLen = nRet

end function
  

位置指定やフォントを使用した効果を期待する場合は以下のように SPAN タグを使用すると良いでしょう

  

<SPAN style='position:absolute;left:位置'>文字列</SPAN>
<SPAN style='font-weight:bold'>文字列</SPAN>
<SPAN style='font-size:サイズ'>文字列</SPAN>
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[asp]
claudebot
24/03/28 17:28:00
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube