印刷プレビュー

  目次







  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>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ