<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>wolfg&#039;s Weblog &#187; Adobe</title>
	<atom:link href="http://guoyong.me/tag/adobe/feed/" rel="self" type="application/rss+xml" />
	<link>http://guoyong.me</link>
	<description>wolfg&#039;s journey with open source, linux, programming, sysadm ...</description>
	<lastBuildDate>Wed, 04 Apr 2012 12:42:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/cn/</creativeCommons:license>		<item>
		<title>Web页面自动打印PDF文件的实现</title>
		<link>http://guoyong.me/dev/web-e9-a1-b5-e9-9d-a2-e8-87-aa-e5-8a-a8-e6-89-93-e5-8d-b0pdf-e6-96-87-e4-bb-b6-e7-9a-84-e5-ae-9e-e7-8e-b0/</link>
		<comments>http://guoyong.me/dev/web-e9-a1-b5-e9-9d-a2-e8-87-aa-e5-8a-a8-e6-89-93-e5-8d-b0pdf-e6-96-87-e4-bb-b6-e7-9a-84-e5-ae-9e-e7-8e-b0/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 15:01:55 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[iText]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://guoyong.org/2008/02/29/350</guid>
		<description><![CDATA[借助iText和Adobe Acrobat的Javascript支持，可以实现PDF文档的自动打印（可以做到不显示打印对话框） ...... &#160; PdfReader&#160;reader = new PdfReader(pdfStream); [1] &#160; StringBuffer&#160;script = new StringBuffer(); [2] script.append(&#34;this.print({bUI: false,bSilent: true,bShrinkToFit: false});&#34;) &#160; .append(&#34;\r\nthis.closeDoc();&#34;); &#160; ByteArrayOutputStream&#160;bos = new ByteArrayOutputStream(pdfStream.length); try&#160;{ &#160; PdfStamper&#160;stamp = new PdfStamper(reader, bos); [3] &#160; stamp.setViewerPreferences(PdfWriter.HideMenubar&#160; &#160; &#160; &#124; PdfWriter.HideToolbar &#8230; <a href="http://guoyong.me/dev/web-e9-a1-b5-e9-9d-a2-e8-87-aa-e5-8a-a8-e6-89-93-e5-8d-b0pdf-e6-96-87-e4-bb-b6-e7-9a-84-e5-ae-9e-e7-8e-b0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>借助iText和Adobe Acrobat的Javascript支持，可以实现PDF文档的自动打印（可以做到不显示打印对话框）</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">......</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">PdfReader</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">reader</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">PdfReader</span><span style="color: Olive;">(</span><span style="color: Blue;">pdfStream</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">StringBuffer</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">script</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">StringBuffer</span><span style="color: Olive;">()</span><span style="color: Gray;">; </span><span style="color: Olive;">[</span><span style="color: Maroon;">2</span><span style="color: Olive;">]</span></li>
<li><span style="color: Blue;">script</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">this.print({bUI: false,bSilent: true,bShrinkToFit: false});</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; .</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\r\n</span><span style="color: Red;">this.closeDoc();</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">ByteArrayOutputStream</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">bos</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">ByteArrayOutputStream</span><span style="color: Olive;">(</span><span style="color: Blue;">pdfStream</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">try</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">PdfStamper</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">stamp</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">PdfStamper</span><span style="color: Olive;">(</span><span style="color: Blue;">reader</span><span style="color: Gray;">, </span><span style="color: Blue;">bos</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: Olive;">[</span><span style="color: Maroon;">3</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">stamp</span><span style="color: Gray;">.</span><span style="color: Blue;">setViewerPreferences</span><span style="color: Olive;">(</span><span style="color: Blue;">PdfWriter</span><span style="color: Gray;">.</span><span style="color: Blue;">HideMenubar</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; | </span><span style="color: Blue;">PdfWriter</span><span style="color: Gray;">.</span><span style="color: Blue;">HideToolbar</span><span style="color: Gray;"> | </span><span style="color: Blue;">PdfWriter</span><span style="color: Gray;">.</span><span style="color: Blue;">HideWindowUI</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">stamp</span><span style="color: Gray;">.</span><span style="color: Blue;">addJavaScript</span><span style="color: Olive;">(</span><span style="color: Blue;">script</span><span style="color: Gray;">.</span><span style="color: Blue;">toString</span><span style="color: Olive;">())</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">stamp</span><span style="color: Gray;">.</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">catch</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">DocumentException</span><span style="color: Gray;"> </span><span style="color: Blue;">e</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">logger</span><span style="color: Gray;">.</span><span style="color: Blue;">error</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">getMessage</span><span style="color: Olive;">()</span><span style="color: Gray;">, </span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">getCause</span><span style="color: Olive;">())</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">StreamingResolution</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">application/pdf</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufferedInputStream</span><span style="color: Olive;">(</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">ByteArrayInputStream</span><span style="color: Olive;">(</span><span style="color: Blue;">bos</span><span style="color: Gray;">.</span><span style="color: Blue;">toByteArray</span><span style="color: Olive;">())))</span><span style="color: Gray;"> ;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">......</span></li></ol></div>
<p>代码说明：<br />
1、pdfStream是用iText生成的PDF文档字节流<br />
2、script是要加入到PDF文档里的Javascript代码。这段Javascript代码先调用PDF文档对象的print方法，然后用closeDoc方法关闭文档。print方法的参数指定了不要显示打印对话框，参数含义参考<a href="http://partners.adobe.com/public/developer/pdf/topic_js.html">Acrobat JavaScript Scripting Reference</a><br />
3、bos用来保存加入Javascript后的PDF文档字节流，它作为PdfStamper对象的输出流。PdfStamper对象调用addJavaScript方法将Javascript代码加入到PDF文档中。</p>
<p>Web页面嵌入PDF文档:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">embed</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">application/pdf</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/PrintPdf.action</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">height</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">embed</span><span style="color: Olive;">&gt;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.me/dev/web-e9-a1-b5-e9-9d-a2-e8-87-aa-e5-8a-a8-e6-89-93-e5-8d-b0pdf-e6-96-87-e4-bb-b6-e7-9a-84-e5-ae-9e-e7-8e-b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.449 seconds -->

