忍者ブログ
ThIs SiTe Is A TyPo AnD A BuG.

[PR]

ソーシャルブックマークに追加:ブックマークに追加する
Category :
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

[PHP]tcpdf用の日本語フォントファイルの作成方法

ソーシャルブックマークに追加:ブックマークに追加する
Category :


仕事で中国語と日本語が混在したPDFを出力しなきゃ
いけなくなったので今までfpdfを使ってshift-jisで出力
してたのをtcpdfを使ってutf8で出力するように
ライブラリを差し替え中、
で、任意のフォントを使う場合に
.ttfファイルをtcpdf用のフォントファイルに
変換しなきゃいけなかったので覚書。

1、tcpdf/fonts/utilsをローカルにコピーする。
2、変換したいフォント.ttfをutilsフォルダにコピー。
3、コマンドプロンプトでutilsフォルダまで移動。
4、ttf2ufm.exe -a -F フォント名.ttf を実行。
5、utilsをphpのパスの通った場所に移動。
6、php makefont(uni).php フォント名.ttf フォント名.ufm を実行。
7、出来あがった フォント名.php フォント名.z フォント名.ctg.zをtcpdfのfontsディレクトへ格納。

あとは、
fpdfドキュメント
tcpdfドキュメント
とかの通りにaddfontすればOK。

今まで、fpdf⇒fpdi⇒mbfpdf⇒mbfpdiって使ってきて、
extendしまくってたのが、tcpdfに差し替えてさっくり動いてすっきり
したのですが、、
それにしてもtcpdfに差し替えてからpdfの作成が重くなったなぁ。
フォントのライセンスとかどうしようかなぁ。
 

PR

PHPでチェックデジット計算する

ソーシャルブックマークに追加:ブックマークに追加する
Category :

WEB上にPHPで書かれている
チェックデジット(モジュラス10)
の算出がなかったので、
載せておきます。

チェックデジットの算出式をそのまま
書いてるだけですが。
(末尾から偶数桁、奇数桁の和をとり、
偶数桁の合計の三倍と奇数桁を足し、
その結果の一桁目の補数がチェックデジット。)

-------------------------------------------------------
function dgt($n){
 $f=0;
 $g=0;
 $k=0;
 $res=explode(',',chunk_split($n,1,','));
 for($ii=count($res)-1;$ii>-1;$ii--){
  $x=intval($res[$ii]);
  if($f==0){
   $k+=$x;
   $f=1;
  }else{
   $g+=$x;
   $f=0;
  }
 }
 return substr(strval(10-intval(substr(strval($g*3+$k), -1))),-1);
}
-------------------------------------------------------

PHPでエクセルファイル(.xls)を作る方法

ソーシャルブックマークに追加:ブックマークに追加する
Category :

PHPでエクセル(.xls)のファイルが作りたくて、
こんな方法で.xlsファイルは作れるって話。
その方法は簡単な話で、
XML形式のエクセルの拡張子を.xlsに変える」だけ。

[エクセルのXML形式]
の基本的な構成は
<Workbook>
<Worksheet>
<Table>
<Row>
<Cell>
これしか必要ないみたいで
後は、<Style>とか<Data>とか見た目を指定したり、
型を指定したりするタグが大量にある。

それで、試しにワークシート名、二次元配列の表データ、作成ファイル
を渡すと、エクセルファイル(.xls)を作成するfunction作ってみた。

-----------------------------------------------------------------------------------------
function CreateXls($ws_name,$data,$path){

 $res='<?xml version="1.0"?>
  <?mso-application progid="Excel.Sheet"?>
  <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:x="urn:schemas-microsoft-com:office:excel"
  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:html="
http://www.w3.org/TR/REC-html40">
  <Worksheet ss:Name="' . $ws_name . '">
  <Table>' . "\n";

 foreach($data as $data_one){
  $res.='<Row>' . "\n";
  for($ii=0;$ii<count($data_one);$ii++){
   $res.='<Cell><Data ss:Type="String">' . $data_one[$ii] . '</Data></Cell>' . "\n";
  }
  $res.='</Row>' . "\n";
 }

 $res.='</Table>
  </Worksheet>
  </Workbook>';
  
 $fp = fopen($path,"w");
 flock($fp, LOCK_SH);
 fputs($fp,$res);
 flock($fp, LOCK_UN);
 fclose($fp);
}


-----------------------------------------------------------------------------------------

追記:
記事をあげてから調べたら、
もしかして、上記ファイルはOffice 2003でしか開けないかもしれない。
しかも今のofficeはもともとXML??
最新office持ってないから確認できず。。

javascriptで違う文字コードのURLエンコード(utf-8,euc-jp,sjis etc,)

ソーシャルブックマークに追加:ブックマークに追加する
Category :

インクリメンタル脳内メーカーを作る際に、
困った。
脳内メーカーはEUC-JPだった為、javascriptで
エンコードせねばならず、
ぐぐったら、ありました。
Escape Codec Library: ecl.js

以下、仕様
  • 文字列をすべてのコンピュータで読めるような形式に変換したり、
    変換されたものを元の文字列にデコードすることができる関数のライブラリです。
  • ビルトイン関数 escape() , unescape() とは異なり、
    どの種類のブラウザでも同じ変換結果が得られます。
  • JISコード変換テーブルを搭載し、従来JavaScriptでは実現が困難であった、
    Shift_JISコードやEUC-JPコードなどの文字コードとしてのエンコード・デコード
    も可能となっています。なお、この変換テーブルには、直接漢字は記述せず、
    Unicode 番号を圧縮したデータをASCIIコードの文字で記述しているので、
    任意の文字コードで使えるという特徴があります。
  • Internet Explorer 5.0以上、Netscape 7、Operaなどで使用可能です。 

    うむ、すばらしい。
    使い方もいたってシンプル。

    $res=EscapeEUCJP('株式会社ステレオタイプラボ');

    こんな感じ。

    楽だ、でも、大量のstringを渡すのは禁物、遅い。。

    試す、環境も提供されていたので、
    使ってみてはいかが?
    テスト環境

    bye!!
  • [php]phpからdocument.writeでjavascript出したりするときに便利なやつ

    ソーシャルブックマークに追加:ブックマークに追加する
    Category :
    参照元:http://feedtailor.jp/oishi/2007/05/javascriptdocumentwritephptext.html

    ありがたく使わせて頂きます。
    いつもdocument.writeでわざわざくくってましたが。

    ---------------------------------------------------------------------------------------------------------------------
     function js_write($a)
     {
      $lines = split("\n", $a);
     
      if(!empty($lines)){
       foreach($lines as $i => $line){
        $line = str_replace("'", "\'" , $line);
        $lines[$i] = preg_replace("|^(.*)$|", '\'$1\n\'+', $line);
       }
      }
      $a = join("\n", $lines);
      
       $a = substr($a, 0, strlen($a)-1);
      
      return 'document.write('.$str.');';
     }
    -------------------------------------------------------------------------------------------------

    とりあえず↓

     function jsAction(){
      echo $this->_js_document_write("<script type='text/javascript'>alert('aaaaa');</script>");
     }

    な感じで、うまく動いた。




    MA3楽天賞受賞
    ありがとうございます。mash up award 3rdでカラフル.jpが楽天賞を頂きました。
    PR
    最新トラックバック
    最新コメント
    [12/12 poefoffirmvop]
    [12/12 Beencerek]
    [12/12 ecnaccounts]
    [12/11 Kimineami]
    [12/11 Kimineami]
    カレンダー
    03 2024/04 05
    S M T W T F S
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30
    あわせて読みたい
    あわせて読みたい
    なかのひと
    なかのひと
    ブログ内検索
    ログール
    TrackWord
    アクセス解析
    このページのQRコード
    Copyright © .☆★ ステレオタイプラボ ★☆. 。All Rights Reserved.
    忍者ブログ[PR]