見積書(単票)

1枚構成の見積書のサンプルです。

ポイント

  • 単票の場合は,template要素の値としてテンプレートのパス名を直接指定することができます。
  • このサンプルでは,フィールドの値をすべて整形済みの文字列で指定しています。
  • ボタンフィールドには,iconエントリにより画像ファイルを指定できます。
  • 0, 1, 2,…と命名されたテーブル形式のフィールドでは,配列を利用することで,部分フィールド名の指定を省略できます。
  • 「御見積金額合計」と「税込合計」の欄は,同名のフィールド“total”を配置することで,context要素の指定が1箇所で済んでいます。

Python

#!/usr/bin/env python
# coding: utf-8

import sys
from field import reports

param = {
    # テンプレート
    "template": "./mitumori.pdf",

    # フィールド値
    "context": {
        "date": "平成23年1月22日",
        "number": "10R0001",
        "to": "△△△惣菜株式会社",
        "title": "肉じゃがの材料",
        "delivery_date": "平成23年1月22日",
        "delivery_place": "貴社指定場所",
        "payment_terms": "銀行振込",
        "expiration_date": "発行から3ヶ月以内",
        "stamp1": {"icon": "./stamp.png"},
        "table": [
            ["1", "N001", "牛肉(切り落とし)", "200g", "250円", "500円"],
            ["2", "Y001", "じゃがいも(乱切り)", "3個", "30円", "90円"],
            ["3", "Y002", "にんじん(乱切り)", "1本", "40円", "40円"],
            ["4", "Y003", "たまねぎ(くし切り)", "1個", "50円", "50円"],
            ["5", "Y004", "しらたき", "1袋", "80円", "80円"],
            ["6", "Y005", "いんげん", "1袋", "40円", "40円"]
        ],
        "sub_total": "800円",
        "tax": "40円",
        "total": "840円"
    }
}

if __name__ == "__main__":
    if len(sys.argv) == 2:
        reports.set_log_level(3)
        reports.render(param, sys.argv[1])
    else:
        print("usage: %s " % (sys.argv[0], ))

Ruby

#!/usr/bin/env ruby
# coding: utf-8

require 'rubygems'
require 'field/reports'

$param = {
    # テンプレート
    "template" => "./mitumori.pdf",

    # フィールド値
    "context" => {
        "date" => "平成23年1月22日",
        "number" => "10R0001",
        "to" => "△△△惣菜株式会社",
        "title" => "肉じゃがの材料",
        "delivery_date" => "平成23年1月22日",
        "delivery_place" => "貴社指定場所",
        "payment_terms" => "銀行振込",
        "expiration_date" => "発行から3ヶ月以内",
        "stamp1" => {"icon" => "./stamp.png"},
        "table" => [
            ["1", "N001", "牛肉(切り落とし)", "200g", "250円", "500円"],
            ["2", "Y001", "じゃがいも(乱切り)", "3個", "30円", "90円"],
            ["3", "Y002", "にんじん(乱切り)", "1本", "40円", "40円"],
            ["4", "Y003", "たまねぎ(くし切り)", "1個", "50円", "50円"],
            ["5", "Y004", "しらたき", "1袋", "80円", "80円"],
            ["6", "Y005", "いんげん", "1袋", "40円", "40円"]
        ],
        "sub_total" => "800円",
        "tax" => "40円",
        "total" => "840円"
    }
}

if ARGV.length == 1 then
    Field::Reports.set_log_level(3)
    Field::Reports.render($param, ARGV[0])
else
    p "usage: %s " % $0
end

Perl

#!/usr/bin/env perl
# coding: utf-8

use utf8;
use Field::Reports;

my $param = {
    # テンプレート
    "template" => "./mitumori.pdf",

    # フィールド値
    "context" => {
        "date" => "平成23年1月22日",
        "number" => "10R0001",
        "to" => "△△△惣菜株式会社",
        "title" => "肉じゃがの材料",
        "delivery_date" => "平成23年1月22日",
        "delivery_place" => "貴社指定場所",
        "payment_terms" => "銀行振込",
        "expiration_date" => "発行から3ヶ月以内",
        "stamp1" => {"icon" => "./stamp.png"},
        "table" => [
            ["1", "N001", "牛肉(切り落とし)", "200g", "250円", "500円"],
            ["2", "Y001", "じゃがいも(乱切り)", "3個", "30円", "90円"],
            ["3", "Y002", "にんじん(乱切り)", "1本", "40円", "40円"],
            ["4", "Y003", "たまねぎ(くし切り)", "1個", "50円", "50円"],
            ["5", "Y004", "しらたき", "1袋", "80円", "80円"],
            ["6", "Y005", "いんげん", "1袋", "40円", "40円"]
        ],
        "sub_total" => "800円",
        "tax" => "40円",
        "total" => "840円"
    }
};

if (@ARGV == 1) {
    Field::Reports::set_log_level(3);
    Field::Reports::render($param, $ARGV[0]);
} else {
    die "usage: $0 \n";
}

PHP

<?php
  $param = array(
    # テンプレート
    "template" => "./mitumori.pdf",

    # フィールド値
    "context" => array(
        "date" => "平成23年1月22日",
        "number" => "10R0001",
        "to" => "△△△惣菜株式会社",
        "title" => "肉じゃがの材料",
        "delivery_date" => "平成23年1月22日",
        "delivery_place" => "貴社指定場所",
        "payment_terms" => "銀行振込",
        "expiration_date" => "発行から3ヶ月以内",
        "stamp1" => array("icon" => "./stamp.png"),
        "table" => array(
          array("1", "N001", "牛肉(切り落とし)", "200g", "250円", "500円"),
          array("2", "Y001", "じゃがいも(乱切り)", "3個", "30円", "90円"),
          array("3", "Y002", "にんじん(乱切り)", "1本", "40円", "40円"),
          array("4", "Y003", "たまねぎ(くし切り)", "1個", "50円", "50円"),
          array("5", "Y004", "しらたき", "1袋", "80円", "80円"),
          array("6", "Y005", "いんげん", "1袋", "40円", "40円"),
        ),
        "sub_total" => "800円",
        "tax" => "40円",
        "total" => "840円",
    ),
  );

  fr_set_log_level(3);

  fr_render($param, $argv[1]);
?>

実行結果