<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LiangXu Wang &#187; fpdf</title>
	<atom:link href="http://wlx.westgis.ac.cn/tag/fpdf/feed/" rel="self" type="application/rss+xml" />
	<link>http://wlx.westgis.ac.cn</link>
	<description>technology backup/share</description>
	<lastBuildDate>Sat, 14 Jan 2012 03:56:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>用PHP处理中文PDF</title>
		<link>http://wlx.westgis.ac.cn/556/</link>
		<comments>http://wlx.westgis.ac.cn/556/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 11:58:40 +0000</pubDate>
		<dc:creator>wlx</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[fpdf]]></category>
		<category><![CDATA[fpdi]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[中文]]></category>

		<guid isPermaLink="false">http://wlx.westgis.ac.cn/?p=556</guid>
		<description><![CDATA[因项目需要，现在想在服务器端动态生成PDF文件，已一个PDF为模板，然后把所需的数据动态填入。 本来在使用zend framework，因此很直接的就使用zend_pdf类来进行测试，代码实现如下： $pdf = Zend_Pdf::load($this-&#62;view-&#62;config-&#62;offline-&#62;template); $pdf-&#62;pages = array_reverse($pdf-&#62;pages); $style = new Zend_Pdf_Style(); $font = Zend_Pdf_Font::fontWithPath($this-&#62;view-&#62;config-&#62;offline-&#62;font, ( Zend_Pdf_Font::EMBED_DONT_SUBSET)); $pdf-&#62;pages[0]-&#62;setFont($font, 10); $pdf-&#62;pages[0]-&#62;saveGS(); //datalist $pdf-&#62;pages[0]-&#62;drawText(str_replace(";","\n",$datalist), 100, 570,"UTF-8"); //project $pdf-&#62;pages[0]-&#62;drawText($formData['project'], 100, 430,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['realname'], 100, 78,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['realname'], 130, 590,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['unit'], 95, 58,"UTF-8"); $pdf-&#62;pages[0]-&#62;drawText($formData['address'], 285, &#8230; <a href="http://wlx.westgis.ac.cn/556/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>因项目需要，现在想在服务器端动态生成PDF文件，已一个PDF为模板，然后把所需的数据动态填入。<br />
本来在使用zend framework，因此很直接的就使用zend_pdf类来进行测试，代码实现如下：</p>
<blockquote><p><code>			$pdf = Zend_Pdf::load($this-&gt;view-&gt;config-&gt;offline-&gt;template);<br />
			$pdf-&gt;pages = array_reverse($pdf-&gt;pages);<br />
			$style = new Zend_Pdf_Style();<br />
			$font = Zend_Pdf_Font::fontWithPath($this-&gt;view-&gt;config-&gt;offline-&gt;font, ( Zend_Pdf_Font::EMBED_DONT_SUBSET));<br />
			$pdf-&gt;pages[0]-&gt;setFont($font, 10);<br />
			$pdf-&gt;pages[0]-&gt;saveGS();<br />
			//datalist<br />
			$pdf-&gt;pages[0]-&gt;drawText(str_replace(";","\n",$datalist), 100, 570,"UTF-8");<br />
			//project<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['project'], 100, 430,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['realname'], 100, 78,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['realname'], 130, 590,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['unit'], 95, 58,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['address'], 285, 58,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['postcode'], 470, 58,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['email'], 95, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($formData['phone'], 295, 40,"UTF-8");<br />
			$t=getdate();<br />
			$pdf-&gt;pages[0]-&gt;drawText($t['year'], 465, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($t['mon'], 500, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;drawText($t['mday'], 525, 40,"UTF-8");<br />
			$pdf-&gt;pages[0]-&gt;restoreGS();<br />
			$fn=$formData['realname'].date('YmdHis').".pdf";<br />
			$pdf-&gt;save($this-&gt;view-&gt;config-&gt;offline-&gt;savepath."/".$fn);</code></p></blockquote>
<p>这样，的确能完成要求，但是令人恼火的是，其把中文字体内嵌到PDF文件中去，因此导致PDF文件过大，而且导致PHP所需内存也增大（64M）。<br />
因此，就开始尝试别的办法，开始锁定fpdf，PHP能完美支持，而且也能支持中文（所要单独下载chinese.php和chinese-unicode.php）。<br />
但是，FPDF不支持打开已有的PDF文件作为模板，因此还需要使用fpdi进行模板的支持，还要修改fpdi，使其父类为PDF-UNICODE。</p>
<p>然后就可以这样使用：</p>
<blockquote><p><code>		$pagecount = $this-&gt;setSourceFile($this-&gt;template);<br />
		$tplidx = $this-&gt;importPage(1, '/MediaBox');<br />
		$this-&gt;addPage();<br />
		$this-&gt;useTemplate($tplidx);<br />
		$this-&gt;AddUniGBhwFont('ugb','AdobeSongStd-Light-Acro');</p>
<p>		$this-&gt;SetFont('ugb','',$this-&gt;fontsize);<br />
		$this-&gt;setXY(45,65);<br />
		$this-&gt;Write($this-&gt;fontsize,$this-&gt;data['realname']);</code></p></blockquote>
<p>其中，字形由默认的AdobeSongStd-Light改成AdobeSongStd-Light-Acro，是为了防止英文字体变宽和变窄，格式才会整齐，英文字不会挤在一起。(参考： http://bbs.erp100.com/thread-18424-1-1.html)</p>
]]></content:encoded>
			<wfw:commentRss>http://wlx.westgis.ac.cn/556/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

