CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [分享] PHP下的HTML转PDF以及日文的处理(中文同理)
saley_wook
超级会员
Rank: 4


UID 329816
精华 0
积分 1736
帖子 123
威望 822
ZD币 210 元
阅读权限 90
注册 2008-5-27
状态 离线
  楼主
发表于 2008-5-29 16:43  资料  个人空间  短消息  加为好友 
开发者在线

PHP下的HTML转PDF以及日文的处理(中文同理)

最近在做一个XML动态生成表单的功能,是一个半工作流系统的一部分,客户对表单提出了一个需求就是要最终将表单生成PDF打印,需要用PHP生成表单PDF.生成PDF没问题,用FPDF很方便,而且支持中文、日文(在官方网站下载一个包即可)。
但由于要生成的表单内容太复杂,而且是各种各样的元素,不好处理,所以就想到了直接由表单HTML向PDF转换,这类的工具也很多,比如dompdf、html2fpdf等等,都很好用,就是都不支持中文和日文。。找了半天资料,终于在一个日文网站上发现了了与html2fpdf相关的内容。我不会日文,但这篇文章竟然能看懂,我太有才了,哈哈,所以就不多说费话了。

准备工作:

HTML2PDF
http://sourceforge.net/projects/html2fpdf

FPDF_japanese
http://www.fpdf.org/download/japanese.zip

html2fpdf解压缩。japanese.zip解压缩,解出来的两个文件放html2fpdf目录下。

对html2fpdf.php进行修改:
==============================

找到第62行,进行如下修改:


require_once(RELATIVE_PATH.'fpdf.php');




require_once('japanese.php');



找到第65行,进行如下修改:

class HTML2FPDF extends FPDF




class HTML2FPDF extends PDF_Japanese



157行:

$this->SetFont('Arial','',11); // Changeable?(not yet...)

$this->lineheight = 5; // Related to FontSizePt == 11




$this->SetFont('Arial','',11); // Changeable?(not yet...)

$this->SetMargins(25,15,20); // 追加

$this->SetTextColor(0,0,139); // 追加

$this->lineheight = 5; // Related to FontSizePt == 11



352行附近:

foreach($a as $i => $e)

{

if($i%2==0)




foreach($a as $i => $e)

{

$this->SetFont('SJIS','',11); // 追加

$this->SetTextColor(0,0,139); // 追加

$e = mb_convert_encoding($e,'SHIFT-JIS','UTF-8'); // 追加

if($i%2==0)



369行:

$e = str_replace(chr(160),chr(32),$e); //unify ascii code of spaces (in order to recognize all of them correctly)




// $e = str_replace(chr(160),chr(32),$e); //unify ascii code of spaces (in order to recognize all of them correctly)



从159行之后的所有的(注意是所有的,全部替换):

$this->SetFont('Arial');


变成↓

$this->SetFont('SJIS');



==============================

给个范例:

<?php
define('FPDF_FONTPATH','font/');
require_once('html2fpdf/html2fpdf.php');
ob_start();
?>
<HTML>

<HEAD><TITLE>テスト</TITLE></HEAD>
<BODY>

ここにコンテンツ

</BODY>
</HTML>

<?php
$html=ob_get_contents();
ob_end_clean();

// PDFの書式設定
$pdf = new HTML2FPDF("l","mm","A4");
$pdf->Open();

$pdf->SetCompression(false);
$pdf->SetDisplayMode("real");
$pdf->UseCSS();
$pdf->UsePRE();
$pdf->setBasePath( "http://192.168.0.2/pdf/example01.php" );
$pdf->AddSJISFont();
$pdf->AddPage();

//ファイル情報
$pdf->SetAuthor("Kazuhiko HiroseKazuhiko HiroseKazuhiko HiroseKazuhiko HiroseKazuhiko HiroseKazuhiko HiroseKazuhiko HiroseKazuhiko Hirose");
$pdf->Bookmark( "BookmarkBookmarkBookmarkBookmarkBookmarkBookmarkBookmarkBookmarkBookmarkBookmarkBookmark" );
$pdf->SetTitle("SetTitleSetTitleSetTitleSetTitleSetTitleSetTitleSetTitleSetTitleSetTitleSetTitleSetTitleSetTitle");
$pdf->SetCreator( "SetCreatorSetCreatorSetCreatorSetCreatorSetCreatorSetCreatorSetCreatorSetCreatorSetCreatorSetCreator" );

// 本文
$pdf->SetMargins( 10, 10 );
$pdf->DisplayPreferences('HideWindowUI');
//$pdf->SetFont( HideWindowUI,"",8);
$pdf->WriteHTML($html);

// 出力
$pdf->Output('doc.pdf','I');
?>




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 


操作系统 数据库 中间件 应用软件 管理软件 Web应用 AJAX Linux Web2.0 RIA 开源 SOA OSS SEO Vista SharePoint Windows Server Windows 2003 Windows 2008 IIS 动态语言 Windows IE7 Oracle Oracle11g office SQLServer Firefox Solaris Ubuntut 微软Google 资讯 博客 技术看板 英雄 图片 QQ 腾讯QQ 珊瑚虫QQ 金山上市 站点图 AJAX BI BPM CRM DNS Android SQL Server 2008 EAI Enterprise 2.0 ETL ERP Flash GPL3 Java j2me JavaEE LAMP mashups NTFS ODBC ODF OOP Outsourcing RIA RSS SOA UML Web2.0 Workflow XAML XML ZFS 备份 并发控制 并行计算 动态语言 多核计算 虚拟技术 CRM 数据仓库 虚拟化 Apollo Apache BizTalk DB2 Eclipse Excel Expression Flex3 Fedora7 Forefront FreeBSD Hibernate IE 7 IIS JavaFX JBoss Linspire live Maxthon Mobile 6.0 Mozilla MySQL office OneCare OpenOffice Solaris Oracle Oracle 11g SQL Server Opera Outlook Photoshop PostgreSQL PowerBuilder PowerShell Rational RHEL ROR Salesforce Server Core Solaris SugarCRM TFS Tomcat Ubuntut Vista VMWare VPC VSTS WCF WebLogic WPF Xandros Xen KDE GNOME 火狐浏览器 Gmail 邮箱 Exchange server AJAX BI BPM EAI ETL ERP CRM DNS Flash Java JavaEE j2me LAMP NTFS ODBC ODF OOP Outsourcing RIA RSS SOA SEO Web2.0 mash up Workflow XAML XML GPL 3协议 ZFS 备份 并行计算 多核 数据仓库 搜索 并发控制 并行计算 动态语言 虚拟化 虚拟技术 Enterprise Web2.0 软件技术资讯 操作系统 Windows Server 2008 Windows Server 2008专题 系统安全 IIS 虚拟机 Windows Linux 嵌入式操作系统 Vista专区 数据库/数据仓库 MySQL & PostgreSQL & Sybase Oracle 10g / 9i / 11g SQL SERVER DB2 中间件/SOA QQ2009下载 QQ QQ群 QQ炫铃 QQ视频 QQ好友 木马病毒 QQ2007 江民 瑞星 金山毒霸 协作办公 ODF/OOXML SharePoint office web应用 浏览器 SaaS/S+S Microsoft技术 操作系统软件数据库软件中间件软件

软件频道2008年3月精华 软件频道2008年2月精华 软件频道2008年1月精华 软件频道12月精华 软件频道11月精华 软件频道10月精华 软件频道9月精华 软件频道8月精华 软件频道7月精华 软件频道6月精华 软件频道5月精华 软件频道4月精华 软件频道3月精华 软件频道2月精华 软件频道1月精华


当前时区 GMT+8, 现在时间是 2008-9-6 00:30

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 3.204116 second(s), 7 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版