[PHP-users 4102] Re: pdflib 3.03The function pdf_put_image() and pdf_execute_image() are not available(さらに追伸)

Masashi Ohba php-users@php.gr.jp
Mon, 03 Dec 2001 22:06:42 +0900


大場です。

以前、理由はいまいちわかってないんですが
php-3.0.18-pdf.patchが3.0.18に当たらなかったわりに
pdf-3.0.16.patchが3.0.18にサクッと当たったので
それを当てた物を使ってるんですが

#なので関数名なんかがちょっと違ってる可能性大

In message "[PHP-users 4100] Re: pdflib 3.03The function pdf_put_image() and 
pdf_execute_image()
 are not available(さらに追伸)",朝倉 誠 wrote...

>$im = pdf_open_png($pdf,"AKIBA-MAP.png");
>はPHP3ではサポートされていないようですので、OKです。

gw> grep -n png pdf-3.0.16.patch 
24:+    PHP_FE(pdf_open_png, NULL)
369:+ /* {{{ proto int pdf_open_png(int pdf, string pngfile)
370:+    Opens a png file and returns an image for placement in a pdf document
372:+ PHP_FUNCTION(pdf_open_png) {
395:+   pdf_image = PDF_open_image_file(pdf,"png",arg2->value.str.val,"",0);
505:+ PHP_FUNCTION(pdf_open_png);

なので、patchの中でpng対応してるんですが

gw> grep -n png php-3.0.18-pdf.patch
gw> 

です。patchの中にはpngという文字列は出てきません

patchをあてない素のソースでは

gw# grep -n png *
gd.c:102:    {"imagecreatefrompng",          php3_imagecreatefrompng,        NULL},
gd.c:103:    {"imagepng",                            php3_imagepng,                          
NULL},
gd.c:423:/* {{{ proto int imagecreatefrompng(string filename)
gd.c:425:void php3_imagecreatefrompng (INTERNAL_FUNCTION_PARAMETERS) {
gd.c:923:/* {{{ proto int imagepng(int im [, string filename])
gd.c:925:void php3_imagepng (INTERNAL_FUNCTION_PARAMETERS) {
image.c:67:const char php3_sig_png[8] =
image.c:108:static struct gfxinfo *php3_handle_png(FILE *fp)
image.c:317:    char pngtype[8];
image.c:365:    } else if (!memcmp(filetype, php3_sig_png, 3)) {
image.c:367:            fread(pngtype, sizeof(pngtype), 1, fp);
image.c:368:            if (!memcmp(pngtype, php3_sig_png, 8)) {
image.c:369:                    result = php3_handle_png(fp);
php3_gd.h:78:extern void php3_imagecreatefrompng (INTERNAL_FUNCTION_PARAMETERS);
php3_gd.h:79:extern void php3_imagepng(INTERNAL_FUNCTION_PARAMETERS);

なのでpdf周りのソース(pdf.c)にはpngという文字列が出てきません

考えるに、pdf-3.0.16.patchが3.0.18に当たってしまうってことは
php-3.0.18の本体にもpatchにもpng対応は取り込まれていない
のではないでしょうか?

ただ、3.0.18+pdf-3.0.16.patchではpatchの通り

pdf.c:133:      PHP_FE(pdf_open_png, NULL)
pdf.c:2332:/* {{{ proto int pdf_open_png(int pdf, string pngfile)
pdf.c:2333:   Opens a png file and returns an image for placement in a pdf document
pdf.c:2335:PHP_FUNCTION(pdf_open_png) {
pdf.c:2358:     pdf_image = PDF_open_image_file(pdf,"png",arg2->value.str.val,"",0);
php3_pdf.h:113:PHP_FUNCTION(pdf_open_png);

が当たりますので、PDFファイルの中に

$pim = pdf_open_png($pdf, "/usr/local/apache/icons/postgresql.png");

で、pngファイルのPostgreSQLの亀の絵が取り込めているのは確認しています。

--------------------------------------------------
Name  : 大場正志(Masashi Ohba)
E-mail: ohba@netforce.ne.jp
Add   : Fukuoka-city, Japan