cp bookmakes to another pdf file

其实这事不好。

看电子书的时候,有的没有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(“E:\\cs_content.pdf”);
PDFParser parser = new PDFParser(ctfile);
parser.parse();
PDDocument ctpdf = parser.getPDDocument();

PDDocument rlpdf = PDDocument.load(“E:\\cs.pdf”);

PDDocumentOutline outline = ctpdf.getDocumentCatalog().getDocumentOutline();
rlpdf.getDocumentCatalog().setDocumentOutline(outline);

FileOutputStream out = new FileOutputStream(“E:\\cs_out.pdf”);
COSWriter writer = new COSWriter(out);
writer.write(rlpdf);
writer.close();
}
}
[/codesyntax]

非常简单,就不解释了。只是有一个小小的问题(其实相当严重),Apress的目录文件里bookmark是没有设置destination的(这也是ZB的说法,其实就是点了没反应)。我想了一下如果要让书签真正起到作用要去读pdf的目录页面,那里面有页码,虽然这个页码和pdf的页码有时候会有一个固定的偏移。不过读pdf似乎有那么一点麻烦,因为里面有不少控制字符。

暂时就是这样。不知道有没有其他什么更好的办法。

上海这几天

到上海一个星期了,借宿在亲戚家里没有办法上网。所以一直不能更新,这种状况从现在起还要延续将近一个月左右。

最近已经在新公司开始被培训了。情况简单地来说就是不太理想,即将面对的困难、问题比想象中的还要多还要复杂。画外音:出于安全的考虑希望大家不要在留言中透露公司的名字。这种时候呢就越发怀念之前在北京CRL实习时候的经历,相比相对照实在是点点点点点。当然在现在这里也是机会与挑战并存,只是可能要面对不少单纯技术之外的挑战。也有好处,催化成熟,促进衰老。

倒是在这种环境里更加坚定了我的决心,之前一直抱怨没有足够的时间能够认认真真做一些事情。现在恐怕还是没有时间,但是为了个人以后的发展,也不能有什么顾虑了,该学习的要学习,该花时间花精力的也不能无奈了。万事开头难,有意一起开头的请留言或Email,咱们一起找个头开。

上海在我眼里是个比较变态的地方,也是真正到了这里我才发现自己虽然不至于热爱山洞里的居住,但是也和这样所谓现代大都市格格不入。在北京的时候还有文化上的偏好和归属感,以及对人生对未来的希望在左右,到了上海没有了这二者虚无飘渺的光环,生活啊,它一下就变得很艰难很残酷了。呵呵。

也就是这种气氛,让人不由自主地去想未来改变这种生活状态的手法和途径,然而就像高旗唱的“对明天的恐惧来自对今天的厌倦”一样,迷茫,不知所措。呵呵。惟望后来者珍惜眼前的生活,把握提升自我的机会,依靠自己的努力去获得一个自己满意的过程和结果。

以上皆真情流露,如有扯淡,也有可能。

Gwibber and WebKit

Gwibber是一个用来接收流行的web2.0应用的消息的客户端。(靠,这句绝望了。)今天LinuxToy才刚刚介绍,不过我前几天就发现了,哦hohohoho。

Gwibber的架构很容易扩展,稍微看一看就清楚了,我就不描述了。正好饭否和twitter的接口是保持一致的,拷拷改改很容易就可以给Gwibber增加饭否的支持。如此一来就可以同时看饭否看twitter发饭否发twitter了。

你以为这是一张截图,其实它是分隔线。

注意上图,gwibber是一个简单的pyGtk程序加上Webkit,它的核心部分就是html网页。这个网页除了头像以外可是没有图片的,那几个效果是怎么实现的呢。一个一个说。

  • 圆角 -webkit-border-radius: 7px;
  • 文字阴影 text-shadow: 1px 1px black;
  • 渐变 background:  -webkit-gradient(linear, left top, left 220%, from(rgba(254, 240, 152, 0.9)), to(black));

比较神奇的就是这三个属性。所以也难怪现在用WebKit核心的程序(不完全是浏览器)越来越多。没有记错的话,这三个丰富特性除了text-shadow在Firefox3.1开始支持其他的Gecko都还不支持。

总而言之,用CSS就可以绘制出精致的图形,而且完全可以生长在桌面。

最后一课

因为下周就要到新的公司实习了,算算时间今天是最后一次在学校上课,没准就是最后一次坐在课堂上绝望了。

应该说起来上了这么多年课,真正到了这最后一次,还是挺容易感慨的。为了防止感慨,这最后一节课就在看小说中度过了。仔细回忆一下,我上了这么多年课,虽然也有上课看小说的经历,不过肯定是比多数人要少的。我对自己高中和高中之前上课的态度以及对老师的尊重还是有足够的信心的。

真要离开学校了,实际上还是非常遗憾的,我对自己肚子里的油水还是有数的,不会的东西要学的东西太多了,实在是太多了。我是多希望能够在学校里哪怕只再多留一年,一年足以改变很多情况了。去年下半年的实习生涯让我知道一旦出来,精力就非常有限了,恐怕是很难有时间系统地去扎实基础了。在学校的时候往往不能明白这个道理,等到失去的时候才追悔莫及。为什么不考研呢,实在是没有心气和信心去面对考试了。一年级的数学分就不高,二年级的数理统计分更是突破心理底线了(我到现在也只是承认分不高,不接受没学好的事实,当然可能这两者本身区别不大,尤其是放下这么长时间以后,确实没什么区别了)。之后的考试也是一塌糊涂,更是不能忍受那种没有自觉意识的背书过程。总之,这么早早地告别校园也是自己的选择,后果自然是自负。

今天有个好消息是,我们班考本校研究生的同学悉数过关,皆大欢喜。这个是不错的事情,如果落榜今年确实是不方便找到好的出路。

我只能希望以后如果有同学聚会的话,不会感到非常尴尬。