<?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:georss="http://www.georss.org/georss">

<channel>
	<title>Here comes the Sun &#187; pdf</title>
	<atom:link href="http://sunng.info/blog/tag/pdf/feed/" rel="self" type="application/rss+xml" />
	<link>http://sunng.info/blog</link>
	<description>Life ramblings</description>
	<lastBuildDate>Thu, 02 Sep 2010 12:29:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>cp bookmakes to another pdf file</title>
		<link>http://sunng.info/blog/2009/03/cp-bookmakes-to-another-pdf-file/</link>
		<comments>http://sunng.info/blog/2009/03/cp-bookmakes-to-another-pdf-file/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 04:36:33 +0000</pubDate>
		<dc:creator>Sunng</dc:creator>
				<category><![CDATA[把戏]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.classicning.com/blog/?p=43</guid>
		<description><![CDATA[其实这事不好。 看电子书的时候，有的没有Bookmake书签，或者叫目录也成。这样读起来就非常疲劳，经常一恍惚就根本不知道读到哪里了，上下文都弄不清怎么办。这种问题尤其对于一本1500页的电子书来说更严重。想办法自己加书签吧，reader根本不提供这个功能。这能自立更生了。 对于apress的电子书（我在写这些的时候内心很痛苦，作为一个第三世界的民工，这个出版社的书我一直是看电子版），如果电子书没有书签，可以从apress的官方网站上下载目录，这个目录恰好就包含书签。这样的话只要把这个书签拷贝到我们之前的电子书里就可以了。 于是需要一个能够读写pdf文件的库，我找到一个pdfbox，它现在是apache incubator中的一个项目，貌似签到apache之后还没有一个正式的release。上一个release可以在sourceforge上项目原来的页面找到，版本号我不记得了。 最近比较怀旧直接用Java写。其实很简单，pdfbox都已经建模了，只要取出来、放进去、写下来（ZB一些应该是get出来，set进去，write下来）就可以了。以下是个sample [codesyntax lang="java" lines="fancy"] public class Main { /** * @param args */ public static void main(String[] args) throws Exception{ FileInputStream ctfile = new FileInputStream(&#8220;E:\\cs_content.pdf&#8221;); PDFParser parser = new PDFParser(ctfile); parser.parse(); PDDocument ctpdf = parser.getPDDocument(); PDDocument rlpdf = PDDocument.load(&#8220;E:\\cs.pdf&#8221;); PDDocumentOutline outline = ctpdf.getDocumentCatalog().getDocumentOutline(); rlpdf.getDocumentCatalog().setDocumentOutline(outline); FileOutputStream out = new FileOutputStream(&#8220;E:\\cs_out.pdf&#8221;); COSWriter [...]]]></description>
			<content:encoded><![CDATA[<p>其实这事不好。</p>
<p>看电子书的时候，有的没有Bookmake书签，或者叫目录也成。这样读起来就非常疲劳，经常一恍惚就根本不知道读到哪里了，上下文都弄不清怎么办。这种问题尤其对于一本1500页的电子书来说更严重。想办法自己加书签吧，reader根本不提供这个功能。这能自立更生了。</p>
<p>对于apress的电子书（我在写这些的时候内心很痛苦，作为一个第三世界的民工，这个出版社的书我一直是看电子版），如果电子书没有书签，可以从apress的官方网站上下载目录，这个目录恰好就包含书签。这样的话只要把这个书签拷贝到我们之前的电子书里就可以了。</p>
<p>于是需要一个能够读写pdf文件的库，我找到一个pdfbox，它现在是apache incubator中的一个项目，貌似签到apache之后还没有一个正式的release。上一个release可以在sourceforge上<a href="http://sourceforge.net/projects/pdfbox/" target="_blank">项目原来的页面</a>找到，版本号我不记得了。</p>
<p>最近比较怀旧直接用Java写。其实很简单，pdfbox都已经建模了，只要取出来、放进去、写下来（ZB一些应该是get出来，set进去，write下来）就可以了。以下是个sample</p>
<p>[codesyntax lang="java" lines="fancy"]<br />
public class Main {</p>
<p>	/**<br />
	 * @param args<br />
	 */<br />
	public static void main(String[] args) throws Exception{</p>
<p>		FileInputStream ctfile = new FileInputStream(&#8220;E:\\cs_content.pdf&#8221;);<br />
		PDFParser parser = new PDFParser(ctfile);<br />
		parser.parse();<br />
		PDDocument ctpdf = parser.getPDDocument();</p>
<p>		PDDocument rlpdf = PDDocument.load(&#8220;E:\\cs.pdf&#8221;);</p>
<p>		PDDocumentOutline outline = ctpdf.getDocumentCatalog().getDocumentOutline();<br />
		rlpdf.getDocumentCatalog().setDocumentOutline(outline);</p>
<p>		FileOutputStream out = new FileOutputStream(&#8220;E:\\cs_out.pdf&#8221;);<br />
		COSWriter writer = new COSWriter(out);<br />
		writer.write(rlpdf);<br />
		writer.close();<br />
	}<br />
}<br />
[/codesyntax]</p>
<p>非常简单，就不解释了。只是有一个小小的问题（其实相当严重），Apress的目录文件里bookmark是没有设置destination的（这也是ZB的说法，其实就是点了没反应）。我想了一下如果要让书签真正起到作用要去读pdf的目录页面，那里面有页码，虽然这个页码和pdf的页码有时候会有一个固定的偏移。不过读pdf似乎有那么一点麻烦，因为里面有不少控制字符。</p>
<p>暂时就是这样。不知道有没有其他什么更好的办法。</p>
]]></content:encoded>
			<wfw:commentRss>http://sunng.info/blog/2009/03/cp-bookmakes-to-another-pdf-file/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
