PDFlib使用实例
<?php
/* $Id: hello.php,v 1.00 2009/07/24 tm Exp $
*
* PDFlibを使用して、PHPでEUC-JPのPDFファイルを生成する方法です。
* このソースコードではEUC-JPのファイルを前提としています。
*
*/
// CMap ファイルの配置ディレクトリを指定
define('PATH_CMaps', 'c:/pdflib/resource/cmap');
$p = PDF_new();
/* 新しくPDFファイルをオープンします */
if (PDF_open_file($p, "") == 0) {
die("Error: " . PDF_get_errmsg($p));
}
pdf_set_parameter($p, "license", "WXXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX");
/* CMap を指定しない場合、日本語の文字列出力時にエラーもしくは文字が空白となります。 */
PDF_set_parameter($p, 'SearchPath', PATH_CMaps);
PDF_set_info($p, "Creator", "hello.php");
PDF_set_info($p, "Author", "Rainer Schaaf");
PDF_set_info($p, "Title", "Hello world (PHP)!");
/* 新規ページを開始する */
PDF_begin_page_ext($p, 595, 842, "");
/* フォントを指定する */
$font = pdf_load_font($p, "HeiseiKakuGo-W5", "EUC-H", "");
$font_blod = pdf_load_font($p, "HeiseiKakuGo-W5", "EUC-H", "fontstyle= bold");
PDF_setfont($p, $font, 24.0);
PDF_set_text_pos($p, 50, 700);
PDF_show($p, "おはよう日本!");
/* 線を描く */
pdf_moveto($p, 50, 700); pdf_lineto($p, 450, 700);
pdf_stroke($p);
PDF_end_page_ext($p, ""); /* ページを終了する */
PDF_close($p); /* PDF文書を閉じる */
$buf = PDF_get_buffer($p);
$len = strlen($buf);
// ファイルで出力する
$filename=get_download_name("日本語ファイル.pdf");
header("Content-Disposition: attachment; filename=$filename");
header("Content-type: application/x-download; name=$filename");
header("Content-Type: application/pdf; charset=iso-2022-jp");
print $buf;
PDF_delete($p);
exit();
//// 出力はファイルでは無く、ブラウザに返すようにしています。
//header("Content-type: application/pdf");
//header("Content-Length: $len");
//header("Content-Disposition: inline; filename=hello.pdf");
//print $buf;
//
//PDF_delete($p);
function get_download_name($p_filename) {
// ユーザーエージェントによってファイル名を変換
$t_filename = mb_convert_encoding( $p_filename, 'SJIS-win', 'EUC-JP');
return $t_filename;
}
?>
/* $Id: hello.php,v 1.00 2009/07/24 tm Exp $
*
* PDFlibを使用して、PHPでEUC-JPのPDFファイルを生成する方法です。
* このソースコードではEUC-JPのファイルを前提としています。
*
*/
// CMap ファイルの配置ディレクトリを指定
define('PATH_CMaps', 'c:/pdflib/resource/cmap');
$p = PDF_new();
/* 新しくPDFファイルをオープンします */
if (PDF_open_file($p, "") == 0) {
die("Error: " . PDF_get_errmsg($p));
}
pdf_set_parameter($p, "license", "WXXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX");
/* CMap を指定しない場合、日本語の文字列出力時にエラーもしくは文字が空白となります。 */
PDF_set_parameter($p, 'SearchPath', PATH_CMaps);
PDF_set_info($p, "Creator", "hello.php");
PDF_set_info($p, "Author", "Rainer Schaaf");
PDF_set_info($p, "Title", "Hello world (PHP)!");
/* 新規ページを開始する */
PDF_begin_page_ext($p, 595, 842, "");
/* フォントを指定する */
$font = pdf_load_font($p, "HeiseiKakuGo-W5", "EUC-H", "");
$font_blod = pdf_load_font($p, "HeiseiKakuGo-W5", "EUC-H", "fontstyle= bold");
PDF_setfont($p, $font, 24.0);
PDF_set_text_pos($p, 50, 700);
PDF_show($p, "おはよう日本!");
/* 線を描く */
pdf_moveto($p, 50, 700); pdf_lineto($p, 450, 700);
pdf_stroke($p);
PDF_end_page_ext($p, ""); /* ページを終了する */
PDF_close($p); /* PDF文書を閉じる */
$buf = PDF_get_buffer($p);
$len = strlen($buf);
// ファイルで出力する
$filename=get_download_name("日本語ファイル.pdf");
header("Content-Disposition: attachment; filename=$filename");
header("Content-type: application/x-download; name=$filename");
header("Content-Type: application/pdf; charset=iso-2022-jp");
print $buf;
PDF_delete($p);
exit();
//// 出力はファイルでは無く、ブラウザに返すようにしています。
//header("Content-type: application/pdf");
//header("Content-Length: $len");
//header("Content-Disposition: inline; filename=hello.pdf");
//print $buf;
//
//PDF_delete($p);
function get_download_name($p_filename) {
// ユーザーエージェントによってファイル名を変換
$t_filename = mb_convert_encoding( $p_filename, 'SJIS-win', 'EUC-JP');
return $t_filename;
}
?>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通