MamDoc(WEB用帳票システム)Ver1.2
mamdoc12.zip(2,505KB)ダウンロード
~PHP、Java等からXMLテキストを出力して帳票をクライアントでプレビュー、印刷させる
MamDocはPHPやJava等のWEBシステムからXMLテキストを出力して帳票印刷を行うアプリケーションです。
ダウンロードしたファイルを解凍したファイルの1つであるsetup_mamdoc.exeを実行してインストールすると、拡張子.mamdocのファイルとレジストリで関連付けされ、
拡張子.mamdocのファイルをWEBからダウンロードして開いたり、ダブルクリックして開くことで帳票をプレビュー、印刷します。
拡張子.mamdocのファイルはXMLテキストファイルなので、PHPやJavaなどから帳票を生成してUTF-8又はShift-JISで出力することができます。
PHPでmamdoc形式のファイルを出力してプレビュー、印刷するサンプルプログラム。
header("Content-type: application/mamdoc; charset=UTF-8"); header("Content-Disposition:inline;filename=test.mamdoc"); header("Cache-Control: public"); header("Pragma: public"); print<<<EOF <?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1"> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> </page> </mamdoc> EOF;
mamdocファイル(XML形式)のフォーマットについて
(1)ファイルの先頭には必ずファイルの文字エンコードに合わせて以下の何れかの1行が必要です。
<?xml version="1.0" encoding="Shift-JIS" ?> <?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="EUD-JP" ?>(例)
<?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1"> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> </page> </mamdoc>
(2)mamdocタグ
mamdoc形式であることをしているタグです。このタグでは用紙サイズの指定と用紙方向の指定を行えます。
属性 papersize:用紙サイズ
8:A3
9(デフォルト):A4
11:A5
12:B4
13:B5
属性 orientation:用紙方向
1:縦
2:横
属性 page:初期表示位置
1~ページ数:最初に表示されるページ数
(デフォルト1)
title:タイトル
例:以下を文字エンコードUTF8保存して拡張子を.mamdocにして保存する
<?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1" page="2" title="sample"> <page> <header position="12 align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> </page> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">解説</text> </page> </mamdoc>
(3)pageタグ
ページを指定します。属性はありません。
例1:以下を文字エンコードUTF8保存して拡張子を.mamdocにして保存する。2ページのサンプル。
<?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1" page="2" title="sample"> <page> <header position="12 align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> </page> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">解説</text> </page> </mamdoc>例2:以下を文字エンコードUTF8保存して拡張子を.mamdocにして保存する。3ページのサンプル。
<?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1"> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> <text x="20" y="100">その1</text> </page> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> <text x="20" y="100">その2</text> </page> <page> <header position="12" align="left">MamDoc</header> <text x="20" y="50">MamDocについて</text> <text x="20" y="100">その3</text> </page> </mamdoc>
(4)jpegタグ
Base64エンコードしたJPEGデータです。drawjpegタグを使って実際のJPEGを出力します。
pageタグ内ではjpegタグを使えません。pageタグ内ではdrawjpegタグを使います。
属性 name:一意の名前(必須)
例:
<?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1"> <jpeg name="Icon"> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcH BwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6KvIb430/l3DKrzI6Q7hlkGzcR3A65H09ebuvazp/h7RbrVtbu47PT7VPMmmkPCjp 0HJJJAAGSSQACSBWRfBf7VuJDfBJFuIQI/wXjOM85boccnPeue+O+m3V34Qs9QtYhLFo13/aN0v22S0byBBNG7LJGCw2iTeQOSqsACSFOtTZHn4Npznbv3v1Z5/e6z4P urNtZ1RPBOqa/fTSS30d22m3swZ4QYVSR7uNBFAAkLdDKYywC7y5p23jXQ/Bvi6fXNF8PeHrnSY7MWX2vRALVpUQs91cJCkbB1d4tiK8h4tndWEZkkHBf8LA8Of8/v8A 5c2s/wDxiux+HHhTVPFviaS8hsbjT/DsptZ7ia7a5uVvogVdgkl0is8c6COJlUYIhDM20Ik2R6B7P438Q6Z4cu3+1Wd1duyLeXEsM1tElmgeNE82SeWNUEjjCjJLFHx9 044qXWbrxhrs2jazf+JNMtdS1CWyjsdPk0m6ggECqWjn2ebKc7QZAw2L5wjbKnLbXh7xDA011rGor4tstSv5vMlt4/Dl24jgV18mAlrZyNsaMGVHK77i4ZT8yMrLTQfF PiLVpfEtlrq6aqWj6Zpw1fRHe7iRTh7sxs8axyyOC2BGFMaxZXqobbe5nGnGDbS3K1lquu6lqmuaFaeINQv7S7u/7ItbqZIY7iHygTfXKNDHGYwgPlKWRh5xhO7a+K9b tLaGztYbWzhjgtoUWOKKJQqRoowFVRwAAAABXnfhvQdF8Lhm8OaVptnKkbW0k8FrGJYohIqgNIBubIG4lyclcnODXTWOo3E00QnuvLXjy/3efP8AnYf+ghTkYAzk8Vq6 MkrnFHMqUpKKTu/T/M//2Q== </jpeg> <page> <drawpage name="Icon" x="10" y="10" width="20 /> </page> </mamdoc>
(5)drawjepgタグ
jpegタグのJPEG画像データを出力します。
属性 name:jpegタグで指定した名前
属性 x:用紙左上を0とする横位置(ミリ単位)
属性 y:用紙左上を0とする縦位置(ミリ単位)
属性 width:表示する画像の幅(ミリ単位)
属性 height:表示する画像の高さ(ミリ単位)省略可能。
省略すると、属性widthから縦横比を保持して自動的に高さが割り当てられます。
(6)textタグ
テキストを出力するときに使います。
属性 x:用紙左上を0とする横位置(ミリ単位)文字列左上位置基準。
属性 y:用紙左上を0とする縦位置(ミリ単位)文字列左上位置基準。
属性 align:left,center,middleの何れかを指定
属性 valign:top,middle,bottomの何れかを指定
属性 width:出力範囲幅(ミリ単位)
属性 height:出力範囲の高さ(ミリ単位)
属性 size:文字のサイズ(ポイント単位)
属性 font:フォントの名前を指定する(MS ゴシック 等)
属性 color:フォントの色を#RRGGBBで指定する。#FF0000等
属性 italic:0(デフォルト)又は1を指定します。1で斜体。
属性 bold:0(デフォルト)又は1を指定します。1で太字。
属性 wrap:0(デフォルト)又は1を指定します。1で文字を折り返します。
属性 clip:0(デフォルト)又は1を指定します。1でwidth、height範囲外の文字をクリッピングします。
属性 orientation:文字の回転角度。反時計回りが正方向。ただし、wrapとclipの指示がない又は両方0の場合のみ機能します。
例1:
<text x="10" y="50" size="10" font="MS P明朝" bold="1" italic="1">出力例1</text>例2:クリップを行い、途中で改行を入れる例
<text x="10" y="50" width="30" height="8" align="center" clip="1" valign="top">あいうえおかきくけこ さしすせそ</text>例3:ラップを行う例
<text x="10" y="50" width="30" height="5" align="center" wrap="1" valign="top">あいうえおかきくけこ< さしすせそ</text>
(7)headerタグ
ヘッダーを出力するときに使用します。
属性 align:left,center,right
属性 position:用紙上端からの距離(ミリ単位)を指定します。
属性 size:文字サイズ(ポイント)
属性 font:フォント名(MS ゴシック 等)
属性 color:フォントの色を#RRGGBBで指定する。#FF0000等
属性 italic:0(デフォルト)又は1を指定します。1で斜体。
属性 bold:0(デフォルト)又は1を指定します。1で太字。
(8)footerタグ
フッターを出力するときに使用します。
属性 align:left,center,right
属性 position:用紙上端からの距離(ミリ単位)を指定します。
属性 size:文字サイズ(ポイント)
属性 font:フォント名(MS ゴシック 等)
属性 color:フォントの色を#RRGGBBで指定する。#FF0000等
属性 italic:0(デフォルト)又は1を指定します。1で斜体。
属性 bold:0(デフォルト)又は1を指定します。1で太字。
(9)lineタグ
属性 x:用紙左上を0とする始点のx座標(ミリ単位)
属性 y:用紙左上を0とする始点のy座標(ミリ単位)
属性 width:始点から終点までのx方向長さ(ミリ単位)
属性 height:始点から終点までのy方向長さ(ミリ単位)
属性 weight:線の太さ(ミリ単)
属性 linestyle:線のスタイル
0:透明(線を引かない)
1:実線
2:点線
3:短い点の点線
4:一点鎖線
5:二点鎖線
属性 color:線の色を#RRGGBBで指定する。#FF0000等
(10)rectタグ
始点座標(x,y)から終点座標(x+width,y+height)の長方形を描きます。
属性 x:用紙左上を0とする長方形の左上のx座標(ミリ単位)
属性 y:用紙左上を0とする長方形の左上のy座標(ミリ単位)
属性 width:長方形の幅(ミリ単位)
属性 height:長方形の高さ(ミリ単位)
属性 weight:長方形の線の太さ(ミリ単)
属性 linestyle:長方形の線のスタイル
属性 linestyle:線のスタイル
0:透明(線を引かない)
1:実線
2:点線
3:短い点の点線
4:一点鎖線
5:二点鎖線
属性 color:線の色を#RRGGBBで指定する。#FF0000等
属性 fill:塗りつぶしの色を#RRGGBBで指定する。#FF0000等
属性 fillstyle:塗りつぶしのスタイル
属性 linestyle:線のスタイル
0:透明(色を塗らない)
1:べた塗(デフォルト)
2:横ハッチ
3:縦ハッチ
4:右下45度ハッチ
5:右上45度ハッチ
6:縦横クロスハッチ
7:斜めクロスハッチ
(11)ellipseタグ
楕円を描きます。
属性 x:用紙左上を0とする楕円の左上のx座標(ミリ単位)
属性 y:用紙左上を0とする楕円の左上のy座標(ミリ単位)
属性 width:楕円の幅(ミリ単位)
属性 height:楕円の高さ(ミリ単位)
属性 weight:楕円の線の太さ(ミリ単)
属性 linestyle:楕円の線のスタイル
属性 linestyle:楕円の線のスタイル
0:透明(線を引かない)
1:実線
2:点線
3:短い点の点線
4:一点鎖線
5:二点鎖線
属性 color:線の色を#RRGGBBで指定する。#FF0000等
例:
<ellipse x="10" y="10" width="20" height="10" color="#FF0000" weight="1" linestyle="2" />
(12)frameタグ
frameタグを用いれば、用紙出力フォーマットのデフォルトを作成できます。
pageタグ内でdrawframeタグを使ってframeでの設定を出力できます。
属性 name:frameの名前
例:
<?xml version="1.0" encoding="UTF-8" ?> <mamdoc papersize="9" orientation="1"> <frame name="testframe"> <header position="10" align="center">{date(ggee"年"mm"月"dd"日")}</header> <footer position="10" align="center">{page}/{pages}</footer> <line x="20" y="80" width="100" height="100" /> </frame> <page> <drawframe name="testframe" /> <text x="20" y="80" width="100" height="100"">文字を出力1</text> </page> <page> <drawframe name="testframe" /> <text x="20" y="80" width="100" height="100"">文字を出力2</text> </page> <page> <drawframe name="testframe" /> <text x="20" y="80" width="100" height="100"">文字を出力3</text> </page> </mamdoc>
(13)テキストで出力する特殊記号
textタグ、headerタグ、footerタグでは一部特殊な記号を使うことが出来ます。
{page} 現在のページ
{pages} 総ページ数
{date(フォーマット)}
mamdocファイルを開いた日時。
yyyy又はyy 西暦
mm又はm 月
dd又はd 日
gg 和暦の年の元号
ee 和暦の年
hh 時間の時
nn 時間の分
ss 時間の秒
aaaa 曜日(月曜日 など)
aaa 曜日(月 など)
ダブルクォート""で囲った文字はそのまま出力されます。
例:
<header position="10" align="center">[[{]]date(ggee"年"mm"月"dd"日")[[}]]</header> <footer position="10" align="center">[[{]]page[[}]]/[[{]]pages[[}]]</footer>
帳票出力の例
Windows10(R)、Windows8(R)をお使いの場合
インターネットからダウンロードした実行ファイル(圧縮ファイルを解凍して生成された実行ファイルも)は全て実行時に以下のように警告されます。
「WindowsによってPCが保護されました」 Windows SmartScreenは認識されないアプリの起動を停止しました。このアプリを実行すると、PCに問題が起こる場合があります。
警告されないようにするには、
ダウンロードしたZIPファイルを右クリック⇒プロパティーを左クリック⇒「全般」タブの右下にある「ブロックの解除(K)」をクリックし、
「OK」ボタンをクリックします。
その後、解凍後に実行ファイルをダブルクリックして起動すると警告表示されなくなります。
(怪しいファイルは上記設定を行わないでください。あくまで自己責任でお願いします。)