SQLの窓

2016年11月26日


汎用型 : Firebase に置いたデータで履歴書(作りかけ)のフォームを出力するサンプル



デモページ

Firebase データ

ごく一般的なデータから罫線(含連続)・BOX・テキスト・画像を出力して単票のフォームを作成します。特別な内容ではありませんが、Firebase 使うと結構汎用性も出るのでは無いかと思います。

印字部分
<?php
// ************************************************
// セッションとキャッシュなし
// ************************************************
session_cache_limiter('nocache');
session_start();

require_once("print.php");

// ************************************************
// フォーマットデータ
// ************************************************
$url = "https://freebase-654b7.firebaseio.com/tcpdf.json";
$file = @file_get_contents($url);
if ( $file !== false ) {
	// 連想配列形式で返す
	$result = json_decode( $file, true );

	if ( $result == null ) {
		// テキストのサイズ変更
		$pdf->SetFont('meiryo001', '', 20);
		// テキストの色
		$pdf->SetTextColor(255, 0, 0);
		user_text( $pdf, 10, 10, 'データが存在しません' );
		$pdf->Output("test_output.pdf", "I");
		exit();
	}

}


log_out(null);

$pdf->SetFont('meiryo001', '', 14);

$pdf->AddPage();

// ************************************************
// 印字コマンド実行
// ************************************************
foreach( $result['format'] as $obj ) {

	if ( $obj['type'] == 'image' ) {
		$pdf->Image($obj['f'], $obj['x'],$obj['y'],$obj['w'],$obj['h']);
		continue;
	}

	if ( $obj['type'] == 'text' ) {
		$pdf->SetFont('meiryo001', '', $obj['s']);
		user_text( $pdf, $obj['x'],$obj['y'], $obj['t'] );
		continue;
	}

	if ( $obj['type'] == 'rect' ) {
		$pdf->Rect($obj['x'],$obj['y'],$obj['w'],$obj['h']);
		continue;
	}

	if ( $obj['type'] == 'line' ) {
		$pdf->Line($obj['x'],$obj['y'],$obj['x']+$obj['w'],$obj['y']);
		continue;
	}

	if ( $obj['type'] == 'vline' ) {
		$pdf->Line($obj['x'],$obj['y'],$obj['x'], $obj['y']+$obj['h']);
		continue;
	}

	if ( $obj['type'] == 'lines' ) {

		$row = $obj['y'];
		
		for( $i = 0; $i < $obj['n']; $i++ ) {
			$pdf->Line($obj['x'], $row, $obj['x']+$obj['w'], $row);
			$row += $obj['p'];
		}

		continue;
	}

}


// ブラウザへ PDF を出力します
$pdf->Output("test_output.pdf", "I");
?>


TCPDF 依存部分(print.php)
<?php
define ('K_PATH_FONTS', "tcpdf/");
require_once('tcpdf/tcpdf.php');

// ************************************************
//   P or PORTRAIT(縦:既定)
//   L or LANDSCAPE(横))
// ---------------------------
//   pt: ポイント
//   mm: mm(既定)
//   cm: cm
//   in: インチ
// ---------------------------
//   用紙サイズ
// ---------------------------
// boolean $unicode = true
// ---------------------------
// String $encoding = 'UTF-8'
// ---------------------------
// boolean $diskcache = false
// ---------------------------
// PDF/A モード
// ---------------------------
// 
// 全てデフォルトなので $pdf = new TCPDF("L") でもOK
// ************************************************
$pdf = new TCPDF("P");
/*
$pdf = new TCPDF(
	"L",
	"mm",
	"A4",
	true,
	"UTF-8",
	false,
	false
);
*/

// ************************************************
// 設定
// ************************************************
$pdf->setFontSubsetting(false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(false);


function log_out( $text ) {

	if ( $text == null ) {
		file_put_contents("log.txt","");
		return;
	}

	file_put_contents("log.txt", $text . "\n", FILE_APPEND );

}

# **********************************************************
#  テキスト印字
# **********************************************************
function user_text( $pdf, $x, $y, $text, $w=1, $h=0, $p="L" ) {

	text( $pdf, $x, $y, $text, $w, $h, $p );

	return $y;

}

# **********************************************************
# 位置指定印字
# ※ 改行コードで自動改行
# ※ ページあふれで自動改ページ
# ※ 内部印字位置は保存( 元に戻す )
# **********************************************************
function text( $pdf, $x=0, &$y=0, $txt='', $w=1, $h=0, $p="L" ) {

	$a = $pdf->GetX();
	$b = $pdf->GetY();

	$hm = $pdf->getPageHeight( );
	$dm = $pdf->getPageDimensions();
	$tm = $dm['tm'];
	$bm = $dm['bm'];

	$txt = str_replace( "\r","", $txt );
	$data = explode("\n", $txt );
	if ( count( $data ) > 1 ) {
		for( $i = 0; $i < count($data); $i++ ) {
			if ( $i == 0 ) {
				$pdf->SetXY( $x, $y );
			}
			else {
				$y += $pdf->getLastH();
				if ( $y >= ( $hm - $tm - $bm ) ) {
					$pdf->AddPage();
					$y = $tm;
				}
				$pdf->SetXY( $x, $y );
			}
			$pdf->Cell($w, $h, $data[$i], 0, 0, $p);
		}
	}
	else {
		$pdf->SetXY( $x, $y );
		$pdf->Cell($w, $h, $txt, 0, 0, $p);
	}
	$y += $pdf->getLastH();

	$pdf->SetXY($a,$b);

}


?>


関連する記事

1会話・IFRAME(TCPDF)テンプレート : jQuery + Bootstrap(css) + mmenu + Firebase + TCPDF + PHP




タグ:Firebase TCPDF PHP PDF
posted by lightbox at 2016-11-26 02:26 | Comment(0) | PHP + PDF | このブログの読者になる | 更新情報をチェックする

2016年01月15日


TCPDF をダウンロードして、フリーフォントを埋め込み型で使用する方法


※ 2016/01/13 時点で 6_2_12
※ 2014/05/22 時点で 6_0_080
※ さくらサーバでは、php.ini で memory_limit = 256M で動作しています(日本語フォントが大きくなっていました )
※ 2013/09/11 時点で 6_0_025TCPDF をダウンロードして、Windows の任意のフォルダで TCPDF 同梱のサンプルを実行する為の設定』の続きです。

少し昔に比べると格段に専用フォントを作成するのが楽になっています。以前はツールアプリケーションをいろいろ実行した後手作業とかもあったのですが、今はその作業を行う処理を TCPDF そのもの(tcpdf_addfont.php)にさせるようになっていて、コマンドプロンプトから php で処理できます。
埋め込み : c:\php\php tcpdf_addfont.php -i hc-poo5.ttf
非埋め込み : c:\php\php tcpdf_addfont.php -t CID0JP -i hc-poo5.ttf
フリーフォントは、通常システムに無いですから、『埋め込み』で処理する事になります。但しそのぶん PDF が大きくなってしまいますが、PC の環境に依存せず表示されます。
フリーフォントによっては崩れて使え無いですが、現在デフォルトで『部分埋込』により使用している文字のみ埋め込むようになっています
部分埋め込み : 84k
全て埋め込み : 4224k
非埋め込み型は、Windows(等) に最初からあるフォントを対象とし、PDF のサイズを小さくする事が主な目的となります。 こちらから、実際に『HCP丸ゴシック(蓬莱和多流)』と言うフリーフォントを使ったPDF がご覧いただけます(部分埋め込み)。 この PDF は、サンプルの38番を書き換えたもので、オリジナルよりさらにシンプルになっています。 (部分埋め込み型です)
<?php
require_once('tcpdf_include.php');

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

$pdf->SetFont('hcpoo5', '', 20);
$pdf->AddPage();

$txt = 'example_038.pdfは非埋め込み型フォントのサンプルですが、hcpoo5はフリーフォントを埋め込み型で変換したものです

';
$pdf->Write(0, $txt, '', 0, 'L', false, 0, false, false, 0);

$pdf->SetFont('hcpoo5', '', 14);
$txt = '埋め込み	: c:\php\php tcpdf_addfont.php -i hc-poo5.ttf
非埋め込み	: c:\php\php tcpdf_addfont.php -t CID0JP -i hc-poo5.ttf

';
$pdf->Write(0, $txt, '', 0, 'L', false, 0, false, false, 0);

$pdf->SetFont('hcpoo5', '', 40);

$txt = 'こんにちは世界あいうえお漢字表示';
for( $i = 0; $i < 4; $i++ ) {
	$txt .= $txt;
}

$pdf->Write(0, $txt, '', 0, 'L', false, 0, false, false, 0);

// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('example_038.pdf', 'I');

TCPDF 用フォントの作成

作成されたフォントは、fonts フォルダにコピーされますが、再作成する場合はいったん削除します。埋め込み型では、3つ作成されますが、非埋め込み型だと1つです。
>c:\php\php tcpdf_addfont.php -t CID0JP -i hc-poo5.ttf

>>> Converting fonts for TCPDF:
*** Output dir set to C:\httpd142p\lightbox\tcpdf_6_0_080\tcpdf/fonts/
+++ OK   : C:\httpd142p\lightbox\tcpdf_6_0_080\tcpdf\tools\hc-poo5.ttf added as
hcpoo5
>>> Process successfully completed!


>c:\php\php tcpdf_addfont.php -i hc-poo5.ttf

>>> Converting fonts for TCPDF:
*** Output dir set to C:\httpd142p\lightbox\tcpdf_6_0_080\tcpdf/fonts/
+++ OK   : C:\httpd142p\lightbox\tcpdf_6_0_080\tcpdf\tools\hc-poo5.ttf added as
hcpoo5
>>> Process successfully completed!
( 上が非埋め込み、下が埋め込み )

非埋め込み型フォント使用時の代替フォントについて

TCPDF 内には cid0jp という非埋め込み型のフォントが用意されていますが、実際に PC にインストールされているフォントを内部では指定していません。なので、表示は代替フォントで表示されます。ただ、代替フォントについて詳細な情報はあまりありません。Adobe のドキュメントでのみ( 代替フォント )という言葉を見る事ができました。しかし、具体的にどのフォントを使うかまでは確認できていません。

■ こちらの環境(Windows)では、非埋め込み型フォントを使ってそのフォントが無い場合は代替で MSゴシックまたはMS明朝(たぶん)が使われていました
■ 再度確認してみると、Chrome PDF Viewer で MS明朝(らしい)。Firefox 内臓ビュアーでMSゴシック
■ Firefox は、ブラウザの規定のフォントが使われていたので変更可能でした
■ Chrome は、pdf.dll の中に『Arial Unicode MS    MingLiU SimSun  MS Mincho』という文字列があったので、MS明朝が優先されているような気がします( 変更方法は不明 )

cid0jp について補足

$name='cid0jp'; 部分の cid0jp を日本語で置き換えて SHIFT_JIS で保存すると、英数字の文字ピッチは狂うと思いますが、インストールされているフォントであれば一応の表示が可能です。





漢字等にはほぼ影響出ないとは思いますが、正しいピッチで表示するにはオリジナルのフォントから非埋め込み用フォントを作成して登録する必要があります


※ Office で使用可能なフォントに関しては英語名が使用できませんでした


関連する記事

タグ:PHP TCPDF PDF
posted by lightbox at 2016-01-15 19:19 | PHP + PDF | このブログの読者になる | 更新情報をチェックする

2016年01月13日


TCPDF をダウンロードして、Windows の任意のフォルダで TCPDF 同梱のサンプルを実行する為の設定


※ 2016/01/13 時点で 6_2_12
※ 2014/05/22 時点で 6_0_080
※ さくらサーバでは、php.ini で memory_limit = 256M で動作しています(日本語フォントが大きくなっていました )
※ 2013/09/11 時点で 6_0_025

実際に一番面倒なのはフォントの用意ですが、とにかく動かない事には話にならないので。

テスト環境

❶ Windows7 32ビット + AN HTTPDTCPDF

テスト内容
tcpdf_6_2_12.zip を解凍すると、tcpdf\example というフォルダがあり、そこにサンプルが沢山ありますが、それを他のフォルダでも同様に動作させる。
手順 ❶ example フォルダを全て 任意のフォルダにコピー( アプリの実行環境になります ) ❷ そのフォルダを AN HTTPD で、PHP が動作するようにする ( テストした php は、PHP 5.4.14 ) ❸ tcpdf_include.php を以下のように書き換える
<?php
$path = "C:\\httpd142p\\tcpdf_6_2_12\\tcpdf";
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('examples/config/tcpdf_config_alt.php');
require_once('tcpdf.php');
?>

C:\\httpd142p\\tcpdf_6_2_12\\tcpdf は、解凍した中にある tcpdf フォルダで、TCPDF の動作環境です。

フォントの追加は、tcpdf\fonts にコピーします。
tcpdf_config_alt.php は実行毎の TCPDF の環境ファイルですが、どこにあってもかまいません。(サンプル用の設定ファイルです)
tcpdf.php は、TCPDF のコアファイルなので、解凍したフォルダの中にある必要があります


補足事項

※ そのまま『さくらインターネット』にアップロードして、パス(C:\\httpd142p\\lightbox\\tcpdf_6_0_080\tcpdf)を /home からに変更したら動作しました。
※ インターネットでテストすると重いので Windows でテストしてからアップロードします。
※ また、フォントも大きいのでローカルでテストすべきです。
※ TCPDF で使用されるフォントは(通常)埋め込みフォントになるので、出来上がった PDF も大きくなります。
※ 埋め込みフォントは環境に依存せず文字が正しく表示されます
※ TCPDF内より使用可能な非埋め込みフォントは、cid0jp 内のフォント名を変更して使用可能です(ツールを使って作成すると半角の文字ピッチ等が正確に反映されます)。また、そのフォントは PC(Windows) にインストールされている必要があります。
※ フリーフォントを埋め込みするには、ツールで個別に専用データを作成する必要があります。


関連する記事

タグ:PHP PDF TCPDF
posted by lightbox at 2016-01-13 16:34 | PHP + PDF | このブログの読者になる | 更新情報をチェックする

フォント : msgothic.ttc を分解し、3種類の ttf を作成して利用する方法

msgothic.ttc には、3種類のフォントが収められていますが、なんらかのフォント関係のソフトウェアで利用するには、ttf に変換する必要があります。
例えば、TCPDF で MSフォントを埋め込まないで PDF に出力するには、msgothic.ttc を分割してからそれぞれのフォント用のデータを作ってプログラム内で使用する必要があります
TCPDF 内にある cid0jp.php 内の $name の値を 日本語のMSフォント名で書き換え(SHIFT_JIS で保存)て、TCPDF 内から cid0jp で参照する方法もありますが、それだと半角の文字ピッチが狂う可能性が高いです。 MS ゴシック MS Pゴシック MS UI Gothic ※ 勝手に加工して再利用するのはいけませんが、フォントを知る為には有効です
msgothic.ttc を取得するには、エクスプローラで Fonts フォルダに入って、3種類のいずれかのフォントを右クリックしてメニューより『コピー』してから保存したいフォルダで貼り付けます
変換方法 その方法は、まず UniteTTC のページより UniteTTC.zip をダウンロードして、中にあるコマンドプロンプトアプリケーションである、UniteTTC.exemsgothic.ttc を引数にして実行します。
>UniteTTC.exe msgothic.ttc
そうすると、以下の3つのファイルが作成されます
msgothic003.TTF
msgothic001.TTF
msgothic002.TTF
これがそれぞれの MS ゴシックファイルです 関連する記事
posted by lightbox at 2016-01-13 15:29 | PHP + PDF | このブログの読者になる | 更新情報をチェックする

2014年06月12日


TCPDF で昔ながらのオーソドックスな印字処理

余計なメソッドは使わずに構成しています、TCPDF を継承して Cell を使った位置指定印字を可能にしているので、右寄せの印字は簡単に行えます。また、行の高さを使用しているフォントから取得しているので、フォントに依存せずに行の高さが自動的に利用されます。( 但し、フォントサイズを変更すると横の開始位置は変化しないので変更は必要になります )

本来は、行コントロール(1ページに何行を印字するか)を行うところですが、PDF では 罫線や画像も簡単に重ねる事ができるので、座標で行方向のコントロールをしています。

『設定』は、テンプレートなので最低限の設定で、本来の印字内容に影響を与えないように設定しています。

フォントは、メイリオを使用しています。『TCPDF で非埋め込み型として『メイリオ』を使う手順』を参照して下さい。
<?php
// ***********************************************
//
//  プログラム名 : 社員一覧印刷
//  作   成   者 : lightbox
//  作   成   日 : 2014/06/06
//
//  概要 : 
//  印刷処理の為のテンプレート
//
// ***********************************************
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

mb_language( "ja" );
mb_internal_encoding("UTF-8");

// *********************************************************
// TCPDF インストール場所の設定
// *********************************************************
$path = "C:\\user\\web\\tcpdf";
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('examples/config/tcpdf_config_alt.php');	// 定数定義
require_once('tcpdf.php');

// *********************************************************
// 拡張 TCPDF
// ※ クラス定義は、処理より前に必要です
// *********************************************************
class USER_TCPDF extends TCPDF {

	// *************************************
	// 位置指定 Cell 印字
	// ※ 内部印字位置は保存( 元に戻す )
	// *************************************
	public function user_text( $x=0, $y=0, $txt='', $w=1, $h=0, $p="L" ) {

		$a = $this->GetX();
		$b = $this->GetY();

		$this->SetXY( $x, $y );
		$this->Cell($w, $h, $txt, 0, 0, $p);

		$y += $this->getLastH();

		$this->SetXY($a,$b);

		return $y;

	}

}

// ***********************************************
// データベース
// ***********************************************
$server = 'localhost';
$db_name = 'lightbox';
$user = 'root';
$password = 'パスワード';

$connect = @ new mysqli($server, $user, $password, $db_name);
if ($connect->connect_error) {
	die('Connect Error (' . $connect->connect_errno . ') '
	. $connect->connect_error);
}


// ***********************************************
// 主処理
// ***********************************************
query_print();


// ***********************************************
// データベース読み出しと印字
// ***********************************************
function query_print() {

	global $connect;

	//****************************************
	// インスタンス作成
	//****************************************
	$pdf = new USER_TCPDF(
		"P",
		"mm",
		"A4",
		true,
		"UTF-8",
		false,
		false		// PDF/A モード
	);

	//****************************************
	// 設定
	//****************************************
	$pdf->setFontSubsetting(false);
	$pdf->setPrintHeader(false);
	$pdf->setPrintFooter(false);
	// デフォルトが true なので、デバッグ時に混乱しないように false に設定
	$pdf->SetAutoPageBreak(false);

	// フォントサイズ
	$pdf->SetFont('meiryo001', '', 12);

	//****************************************
	// 最初のページを作成
	// ※これを実行しないと、ページ情報が無い
	//****************************************
	$pdf->AddPage();

	$query = apply_value("select.sql");
	$result = $connect->query($query); 

	// ブラウザに PDF を出力しているので、デバッグ出力はファイルに行う
	file_put_contents("log.txt",print_r($result,true));

	$counter = 0;

	if ( $result->num_rows != 0 ) {
		$cur_position = print_header( $pdf );
		while ($row = $result->fetch_array(MYSQLI_BOTH)) {

			$counter++;
			if ( $counter > 40 ) {
				$counter = 0;
				$pdf->AddPage();
				$cur_position = print_header( $pdf );
			}

			$next_position = $pdf->user_text( 10, $cur_position, $row['社員コード'] );
			$pdf->user_text( 28, $cur_position, $row['氏名'] );
			$pdf->user_text( 58, $cur_position, $row['フリガナ'] );
			$pdf->user_text( 110, $cur_position, number_format($row['給与']), 20, 0, "R" );
			$pdf->user_text( 130, $cur_position, number_format($row['手当']+0), 26, 0, "R" );
			$pdf->user_text( 160, $cur_position, substr($row['生年月日'],0,10));

			$cur_position = $next_position;

		}
	}
	else {
		$page_info = $pdf->getPageDimensions();
		$cur_position = $page_info['tm'];	// トップマージン
		$pdf->user_text( 10, $cur_position, "データが存在しません" );
	}

	// ブラウザへ PDF を出力します
	$pdf->Output("syain.pdf", "I");

}

// ***********************************************
// ヘッダ印字
// ***********************************************
function print_header( $pdf ) {

	$page_info = $pdf->getPageDimensions();
	$row_position = $page_info['tm'];	// トップマージン

	// 1行目
	$next_position = $pdf->user_text( 75, $row_position, "※※ 社員マスター一覧表 ※※" );
	$row_position = $next_position;

	// 2行目
	$next_position = $pdf->user_text( 0, $row_position, "" );
	$row_position = $next_position;

	// 3行目
	$next_position = $pdf->user_text( 10, $row_position, "コード" );
	$pdf->user_text( 28, $row_position, "名前" );
	$pdf->user_text( 58, $row_position, "フリガナ" );
	$pdf->user_text( 110, $row_position, "給与", 20, 0, "R" );
	$pdf->user_text( 130, $row_position, "手当", 26, 0, "R" );
	$pdf->user_text( 160, $row_position, "生年月日");
	$row_position = $next_position;

	return $row_position;

}

// **********************************************************
// テキストファイル内の文字列を取得
// **********************************************************
function apply_value( $path ) {

	$value = file_get_contents( $path );
	$value = str_replace('"', '\\"', $value );
	eval("\$value = \"$value\";");

	return $value;

}

?>



実行結果




オンラインマニュアルについて

残念ながら、オリジナルはかなり間違いが多いので使えません。日本語訳をしてくれている、TCPDFマニュアル(勝手訳)がとても良くできています。オリジナルの間違いは見事に訂正されていました。

ただ、コンストラクタが無かったので作りました。

コンストラクタ
コンストラクタ TCPDF::__construct (
  $orientation = 'P',
  $unit = 'mm',
  $format = 'A4',
  $unicode = true,
  $encoding = 'UTF-8',
  $diskcache = false,
  $pdfa = false
)  
引数
$orientation
(string)
用紙の向き
P or Portrait (default) : 縦
L or Landscape : 横
$unit
(string)
長さの単位
pt: ポイント
mm: ミリメートル (default)
cm: センチメートル
in: インチ
$format
(string)
用紙サイズ
$unicode
(boolean) 
TRUE の場合は、入力データは Unicode
$encoding
(string)
キャラクタセット。省略すると UTF-8.
$diskcache
(boolean)
ディスクキャッシュを使うかどうか
$pdfa
(boolean)
PDF/A mode を使うかどうか( 絶対使いません )


タグ:TCPDF PHP
posted by lightbox at 2014-06-12 18:59 | PHP + PDF | このブログの読者になる | 更新情報をチェックする

2014年06月07日


TCPDF の定数と tcpdf_config.php

インターネット上の英文マニュアルはこちらです。

この内容は、実際には 『tcpdf\config\tcpdf_config.php』に定義されています。ですが、examples で利用されているのは、『tcpdf\examples\config\tcpdf_config_alt.php』で、内容はヘッダ部分のロゴ用の定数や画像フォルダの位置が値として定義されています( tcpdf_config.php では定数記述はありますが、コメントになっています )

tcpdf_config_alt.php
/**
 * Default images directory.
 * By default it is automatically set but you can also set it as a fixed string to improve performances.
 */
define ('K_PATH_IMAGES', dirname(__FILE__).'/../images/');

/**
 * Deafult image logo used be the default Header() method.
 * Please set here your own logo or an empty string to disable it.
 */
define ('PDF_HEADER_LOGO', 'tcpdf_logo.jpg');

/**
 * Header logo image width in user units.
 */
define ('PDF_HEADER_LOGO_WIDTH', 30);

/**
 * Cache directory for temporary files (full path).
 */
define ('K_PATH_CACHE', sys_get_temp_dir().'/');

定数はシステムの環境によって、差し替えてカスタマイズして利用するという事が想定されています。
K_BLANK_IMAGE _blank.png
PDF_PAGE_FORMAT A4
PDF_PAGE_ORIENTATION P
PDF_UNIT mm
PDF_MARGIN_HEADER 5
PDF_MARGIN_FOOTER 10
PDF_MARGIN_TOP 27
PDF_MARGIN_BOTTOM 25
PDF_MARGIN_LEFT 15
PDF_MARGIN_RIGHT 15
PDF_FONT_NAME_MAIN helvetica
PDF_FONT_SIZE_MAIN 10
PDF_FONT_NAME_DATA helvetica
PDF_FONT_SIZE_DATA 8
PDF_FONT_MONOSPACED courier
PDF_IMAGE_SCALE_RATIO 1.25
HEAD_MAGNIFICATION 1.1
K_CELL_HEIGHT_RATIO 1.25
K_TITLE_MAGNIFICATION 1.3
K_SMALL_RATIO 2/3
K_THAI_TOPCHARS true
K_TCPDF_CALLS_IN_HTML true
K_TCPDF_THROW_EXCEPTION_ERROR false



タグ:PHP TCPDF
posted by lightbox at 2014-06-07 22:10 | PHP + PDF | このブログの読者になる | 更新情報をチェックする

2014年05月23日


TCPDF で非埋め込み型として『メイリオ』を使う手順

1) コマンドブロンプトで、C:\Windows\Fonts に入る


2) COPY コマンドで、meiryo.ttc を適当な場所へコピーする


3) UniteTTC をダウンロードして、UniteTTC.exe meiryo.ttc を実行する


4) 4つに分解されますが、meiryo001.TTF が通常の メイリオなので meiryo001.ttf に変更( 全て小文字 )
5) TCPDF の tools フォルダに meiryo001.ttf を移動

6) c:\php\php.exe tcpdf_addfont.php -t CID0JP -i meiryo001.ttf を実行
( c:\php\php.exe は 通常の Windows 用 コマンドプロンプト用 PHP )

7) "インストールフォルダ\tcpdf_6_0_080\tcpdf\fonts\meiryo001.php" が作成される
( ここでのテストは tcpdf_6_0_080 )
8) サンプルの example_038.php の $pdf->SetFont('cid0jp', '', 40); を $pdf->SetFont('meiryo001', '', 40); に変更
9) 実行


※ Excel で表示して書体を比較しています

meiryo001.php の先頭は以下のようにっていて、書体名は Meiryo となっています
<?php
// TCPDF FONT FILE DESCRIPTION
$type='cidfont0';
$name='Meiryo';
$up=-100;
$ut=50;
$dw=1000;
$diff='';
$originalsize=8594960;
// Japanese
$enc='UniJIS-UTF16-H';
$cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'Japan1','Supplement'=>5);
include(dirname(__FILE__).'/uni2cid_aj16.php');


関連する記事
posted by lightbox at 2014-05-23 03:02 | PHP + PDF | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり