ドゥアイネットのプログラマー、湯川が開発日記を綴ります。

CALENDAR
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< November 2018 >>
ARCHIVES
CATEGORIES
perlからPHP呼び出し
perl側からPHPに引数を渡して呼び出し、
PHP側で引数をもとに値を作成して返すようにする方法を調べました。

perlでPHPを呼ぶ方法に、system関数がありましたが、
これだと戻り値が実行OK・NGのみになってしまい使えませんでした。

なんとか戻り値が取れないか調べました。
以下のようにしたらうまくいきました。

perl側プログラム
system関数ではなく「`」で囲む方法で実行しました。

#!/usr/bin/perl

my $ans = `/usr/local/php5/bin/php -f test.php5 aaaa bbbb`;
print("return:" . $ans);

PHP側プログラム
$argvから引数を受け取り結果を「echo」で出力します。
「echo」で出力すると、呼び出し元のperlの変数に値を返すことができます。

<?php
  echo $argv[1] . "&" . $argv[2];
?>

実行結果
画像

今回は引数と戻り値が日本語ではなかったので、文字化けもなく
無事に戻り値をとることができました。
| perl | 17:37 | comments(0) | - |
PDFJを使用したPDF作成2
 PDFJを使用したPDF出力で、「段落」オブジェクトを使ってみました。

文字列をページに表示する場合、テキストオブジェクトのみで行う場合は
表示する位置を(x座標、y座標)を指定する必要があります。

 my $textTitle = Text('請求書', TStyle(font => $gothic, fontsize => 18));
 $textTitle->show($page, 0, $paperheight  - 80);

これだと、ページの横位置の中央に表示させる場合に、x座標の指定が難しいので、
段落オブジェクトを使ってみました。

 my $textTitle = Text('請求書', TStyle(font => $gothic, fontsize => 18));

 #段落オブジェクトの生成
 #引数は、テキストオブジェクト、PStype(段落オブジェクト)
 #PStyleは、size、align、linefeedは必須指定となっています。
 #sizeは段落の幅なので、ここではページ全体の幅を指定しています。
 #alignは横位置の揃え方で、b=行頭揃え m=中央揃え e=行末揃え
 #                                    w=両端揃え W=強制両端揃えです。
 #linefeedは行送りです。ここでは1段落のみなので、100%としています。
 my $paragraph = Paragraph($textTitle, PStyle(size => $paperwidth, align => 'm', linefeed => '100%'));

 #段落を表示させます。x座標は0に指定していますが、中央寄せにしているので、
 #ページの中央に表示されます
 $paragraph->show($page, 0, $paperheight  - 80);

テキストオブジェクトのみでも文字の表示は可能ですが、段落オブジェクトを使うと更にいろいろと
指定できるので、便利です。
次は、ブロックオブジェクトを使ってみます。

| perl | 19:05 | comments(0) | - |
PDFJを使用したPDF作成1
Perlで「PDFJ」という、日本語PDF を生成するモジュールを使ってみました。

まずは、「テストです」という文字だけのPDFを作成してみました。
---------------------------------------------------------------------
# PDFJの使用を定義
# 引数は日本語文字コード
use PDFJ 'SJIS';

#PDFのバージョン 使用するAcrobatバージョンに合わせて指定する
#Acrobatバージョン4以上で使うためには、1.3を指定すればよい
#ただし、日本語TrueTypeフォントを使うときは1.3以上が必要。
#OpenTypeフォントを使う時は1.6以上が必要
# PDFバージョン1.2 … Acrobatバージョン3
# PDFバージョン1.3 … Acrobatバージョン4
# PDFバージョン1.4 … Acrobatバージョン5
# PDFバージョン1.5 … Acrobatバージョン6
# PDFバージョン1.6 … Acrobatバージョン7
my $pdfversion = 1.3;

#ページの幅、高さ
#単位はポイント(1/72インチ)である。(1インチは25.4mm。)
#A4サイズを指定
my $paperwidth = 595;  #210mm(A4横幅) ÷ 25.4mm × 72インチ
my $paperheight = 842; #297mm(A4高さ) ÷ 25.4mm × 72インチ

#文書オブジェクトの作成
#引数は、バージョン、ページの幅、ページの高さ
my $doc = PDFJ::Doc->new($pdfversion, $paperwidth, $paperheight);

#フォントの作成
#引数は、ベースフォント名、フォントのエンコーディング
#今回は、ゴシック、「Microsoft CP932 JIS X 0208 NEC,IBM拡張」でのエンコーディング
#縦書きにする場合は、「90ms-RKSJ-V」にする
my $gothic = $doc->new_font('GothicBBB-Medium', '90ms-RKSJ-H');

#ページオブジェクトの作成
my $page = $doc->new_page;

#テキストオブジェクトの生成
#TStyleでフォントと、フォントサイズを指定します
my $textTitle = Text('テストです', TStyle(font => $gothic, fontsize => 18));

#文字の表示
#引数は、出力するページオブジェクト、X座標、Y座標
#座標は原点(0,0)がページの左下なので、Y座標の指定は、要注意
#以下の場合は、ページの上から80ポイントの位置に出力する
$textTitle->show($page, 0, $paperheight  - 80);

#PDFファイルの作成
$doc->print('test.pdf');
---------------------------------------------------------------------

今回は、単純に文字をそのまま表示するだけのプログラムですが、
段落やブロックを使って表示したり、直線や円などの図形も表示できるようなので、
いろいろと試してみたいと思います。

| perl | 20:39 | comments(0) | - |
| 1/1PAGES |