Mam's WebSite
無料フリーソフト ダウンロード

トップページ自作ソフトダウンロード(バラエティ)⇒MamDoc(WEB用帳票システム)

MamDoc(WEB用帳票システム)Ver1.2

~PHP、Java等からXMLテキストを出力して帳票をクライアントでプレビュー、印刷させる

mamdoc12.zip(2,505KB)ダウンロード

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>

帳票出力の例

PHPとMySQLデータベースと連携した帳票出力(MamDocクライアントをインストールしてから押してください)
Mam's WebSite