Archive for June, 2006
fpdf에서는 한글 확장팩을 지원하고 있습니다.
fpdf가 설치된 디렉토리에 아래 파일을 다운받으신후 압축을 풀면 됩니다.
확장팩에는 포함되어있지 않지만 다양한 글꼴을 사용할 수 있도록 ex.php 파일을 다음과 같이 수정했습니다.
명조, 고딕은 기본으로 사용가능 한 것이고, Windows에 설치된 글꼴이라면 다 사용가능합니다. 혹시 없는 글꼴이라해도 기본글꼴로 표현되니까 크게 걱정할 필요는 없을 것 같습니다.
아… “Windows에 설치된 글꼴” 이라는 건 당연히 문서를 보는 클라이언트 PC에 해당하는 사항입니다.
< ?php require('korean.php'); . $pdf=new PDF_Korean(); $pdf->AddUHCFont('명조'); $pdf->AddUHCFont('고딕', 'HYGoThic-Medium-Acro'); $pdf->AddUHCFont('돋움', 'Dotum'); $pdf->AddUHCFont('바탕', 'Batang'); $pdf->AddUHCFont('궁서', 'Gungsuh'); $pdf->AddUHCFont('굴림', 'Gulim'); $pdf->AddUHCFont('한겨레결체', '한겨레결체'); $pdf->AddUHCFont('없는글꼴', '없는글꼴'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('명조','',16); $pdf->Write(8,'PHP 3.0은 1998년 6월에 공식적으로 릴리즈되었다. 공개적인 테스트 이후약 9개월만이었다.'); $pdf->Ln(); $pdf->SetFont('고딕','',16); $pdf->Write(8,"(고딕)고딕글꼴도 나타날 수 있었다."); $pdf->Ln(); $pdf->SetFont('바탕','',16); $pdf->Write(8,"(바탕)일단 완전히 새로운 폰트가 추가되지는 않아도..."); $pdf->Ln(); $pdf->SetFont('궁서','',16); $pdf->Write(8,'(궁서)윈도우즈에 있는 기본적인 글꼴은 가능하다.'); $pdf->Ln(); $pdf->SetFont('굴림','',16); $pdf->Write(8,'(굴림)글꼴들이 조금 달라보이시나요?'); $pdf->Ln(); $pdf->SetFont('돋움','',16); $pdf->Write(8,'(돋움)이건 돋움체랍니다.'); $pdf->Ln(); $pdf->SetFont('한겨레결체','',16); $pdf->Write(8,'(한겨레결체)이건 한겨레결체랍니다.'); $pdf->Ln(); $pdf->SetFont('없는글꼴','',16); $pdf->Write(8,'(없는글꼴)글꼴이 없으면 기본값인 명조체로 나타납니다.'); $pdf->Output(); $pdf->Ln(); $pdf->Ln(); ?>
parse_sql_dump 함수는 mysql 덤프파일의 내용을 분석해서, 배열로 추출합니다.
배열형태로 추출하므로, DB 변환과 같은 작업에서 유용하게 사용할 수 있을 것 같습니다(사실, 그 용도로 만들었던 겁니다. ^^)
/** * parse mysql dump sql * * created by 행복한고니 (gonom9@gmail.com) */ function parse_sql_dump($str) { $data = $cols = array(); $in_table = $in_quote = false; $lines = explode("\n", $str); foreach ($lines as $line) { $line = trim($line); if (!$line) continue; if (substr($line,0,2) == '--') continue; if ($in_table === false) { if (preg_match('/^CREATE TABLE `?([a-z0-9_]+)`?/i', $line, $match)) { $table = $match[1]; $data[$table] = array(); $cols[$table] = array(); $in_table = true; continue; } elseif (preg_match('/^INSERT INTO ([a-zA-Z0-9_]+) VALUES \(/i', $line, $match)) { $table = $match[1]; $line = substr($line, strlen($match[0])); preg_match_all('/\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|[0-9\.]+|NULL/i', $line, $match); $arr = array(); foreach ($match[0] as $key=>$value) { if (strtolower($value) == 'NULL') $value = 'NULL'; $arr[$cols[$table][$key]] = $value; } $data[$table][] = $arr; } } elseif ($in_table) { if ($line{0} == ')') { $in_table = false; continue; } if (preg_match('/`?([a-zA-Z0-9_]+)`? ((tiny|small|big)?int|(var)?char|date(time)?|time(stamp)?|enum|set|(tiny|medium|long)?(blob|text)|year|float|double)/i', $line, $match)) { $cols[$table][] = $match[1]; } continue; } } return $data; }
어떻게 나오는지는 직접 해보시기 바랍니다( 샘플 데이타 만들기 귀찮아서… ( -_-);; )