如何使用iText制作中文PDF

1. 下载itextpdf.jar

基础包:http://jaist.dl.sourceforge.net/project/itext/iText/iText5.5.2/itext-5.5.2.zip

附加包:http://cznic.dl.sourceforge.net/project/itext/extrajars/extrajars-2.3.zip

我们只下载基础包就可以

2. 创建工作文件夹

[email protected] ~/itext $ ls
daniel.java  fonts  itextpdf-5.5.2.jar  run.sh

  

其中fonts是一个目录,用来存放我们用到的字体文件。

[email protected] ~/itext $ cat run.sh
javac -cp .:itextpdf-5.5.2.jar $1.java
java -cp .:itextpdf-5.5.2.jar $1
rm $1.class

  

[email protected] ~/itext $ cat daniel.java
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Rectangle;

import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.BaseFont;

public class daniel
{

    public static final String RESULT = "daniel.pdf";

    public static void main(String[] args)
         throws DocumentException, IOException
    {
        Document document = new Document(PageSize.A4);
        PdfWriter.getInstance(document, new FileOutputStream(RESULT));
        document.open();

	BaseFont noto_hans_bold  = BaseFont.createFont("./fonts/kaiti.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
	Font noto_hans_bold_24  = new Font(noto_hans_bold, 24);

        Paragraph par1 = new Paragraph(20);

	Chunk chk1 = new Chunk("Daniel King is a software engineer", noto_hans_bold_24);
	par1.add(chk1);

	Chunk chk2 = new Chunk("\u8FD9\u4E2A\u4EBA\u662F\u4E2A\u7A0B\u5E8F\u5458\u554A", noto_hans_bold_24);
	par1.add(chk2);

	document.add(par1);
        document.close();
    }
}

  

3. 可以编写一个shell用来编码Unicode

首先下载 unicode工具

sudo apt-get install unicode

  

[email protected] ~/itext $ cat tounicode.sh
unicode -s $1 | grep ‘Uppercase‘ | sed -re ‘s/^U.*: U\+/\\u/g‘ | awk ‘{printf("%s", $1);}END{print ""}‘

  

[email protected] ~/itext $ bash tounicode.sh 这个人是个程序员啊
\u8FD9\u4E2A\u4EBA\u662F\u4E2A\u7A0B\u5E8F\u5458\u554A

  

4. 执行脚本生成PDF文件

[email protected] ~/itext $ bash run.sh daniel
[email protected] ~/itext $ ls
daniel.java  daniel.pdf  fonts  itextpdf-5.5.2.jar  run.sh  tounicode.sh

  

5. 添加源码目录

将itextpdf-5.5.2-sources.jar解压到src目录下

然后创建ctags文件,这样就可以在源码中方便来回浏览了。

[email protected] ~/itext $ ls
daniel.java  daniel.pdf  fonts  itextpdf-5.5.2.jar  run.sh  src  tags  tounicode.sh

  

时间: 2024-11-05 11:49:58

如何使用iText制作中文PDF的相关文章

Web前端工程师修炼之道(原书第4版) 中文pdf扫描版

你是否也曾想过自己创建网页,但却苦于没有经验?那么从现在开始学习吧!本书由浅入深地讲解了Web设计的一些重要概念.基本原理,以及HTML.CSS和JavaScript的具体使用方法与技巧.当你读完本书后,将会掌握创建适用于移动设备的多列页面的技巧. Web前端工程师修炼之道(原书第4版)将帮助你学习如何使用最新技术.最佳实践经验,以及当今的Web标准,其中包括HTML5和CSS3.每章都提供一些练习和小测验,帮助你了解不同的技术,巩固你对重要概念的理解. 作者对本版内容做了全面更新和修订,涵盖W

别具光芒 CSS网页布局案例剖析 中文pdf扫描版

别具光芒:CSS网页布局案例剖析以七大完整案例为线索,紧密围绕在使用CSS+DIV布局制作网页过程中遇到的实际需要和应该掌握的技术,全面介绍了CSS布局网页的各方面内容和技巧.书中摒弃了案例书常见的一味罗列步骤,轻视技术原理的做法,把案例作为学习手段,不但侧重讲解CSS盒子模型.标准流.浮动.定位等四大核心技术原理,更侧重讲解如何在实践中应用它们.读者通过案例,既可以掌握CSS的核心技术要点,也可以了解相关技术和工作流程,使读者不但知其然,还知其所以然.此外,本书还结合了流行的CMS内容管理系统

HTML5游戏开发进阶指南 中文pdf扫描版?

HTML5游戏开发进阶指南介绍了HTML5游戏开发的一般过程和技巧.全书共分12章,第1章介绍了本书相关的HTML5的诸多新特性,包括在canvas上绘图.播放声音等,另外还引入了子画面页的概念:第2-4章利用Box2D物理引擎开发了一款非常类似于<愤怒的小鸟>的游戏,全面介绍了物理引擎的概念,以及在游戏中使用物理引擎的方法,这一部分还引入了视差滚动技巧,以实现某种伪3D效果:第5-10章开发了一款简化版的<红色警戒>游戏,这一部分涉及了相当多的内容,包括地图的制作,建筑与单位的设

FlowPaper中文PDF乱码的一种解决办法

[关键词]FlowPaper.PDF.js.乱码 [结论]先给出解决办法,后面的大段内容只是为了记录当时的排查过程. PDF.js有全局变量对象PDFJS(1.8以上版本在pdf.js最后,1.5.x的版本没找到,在代码取值地方设置也可,下有说明),可以设置字体资源路径和方式(关于字体资源的说明可看此贴https://stackoverflow.com/questions/32764773/what-is-a-pdf-bcmap-file),如果采用默认不设置就可能会出现找不到资源文件乱码的情况

HTML5从入门到精通(明日科技) 中文pdf扫描版

HTML5从入门到精通(明日科技) 中文pdf扫描版

SPA设计与架构-理解单页面Web应用 (埃米顿.A斯科特) 中文pdf扫描版

SPA 开发技术的运用是当今Web 开发领域的热门趋势,但真正全面掌握该技术的开发者并不多.本书详尽阐述单页面Web 应用(SPA)开发技术,从SPA 构建基础入手,通过MV*.模块化编程.路由.模块间通信.服务器端交互等概念的阐述,全面介绍SPA 的设计与架构,帮助读者正确掌握SPA 开发的各方面知识要素.同时,<SPA设计与架构:理解单页面Web应用>中还讨论了SPA 的单元测试及客户端任务自动化,覆盖了从开发到部署的一系列任务,让读者在阅读完<SPA设计与架构:理解单页面Web应用

响应式Web设计:HTML5和CSS3实战 第2版 (本&#183;弗莱恩) 中文pdf完整版

本书将当前Web 设计中热门的响应式设计技术与HTML5 和CSS3 结合起来,为读者全面深入地讲解了针对各种屏幕大小设计和开发现代网站的各种技术.书中不仅讨论了媒体查询.弹性布局.响应式图片,更将新的和有用的HTML5 和CSS3 技术一并讲解,是学习新Web 设计技术不可多得的佳作. - 理解响应式设计,以及为何它对现代Web设计如此重要 - 清晰.高效地编写富有语义的HTML5标记 - 使用CSS3媒体查询基于设备应用不同的样式,了解媒体查询的*进展 - 根据不同的屏幕大小.分辨率和使用环

jQuery移动开发 jQuery Mobile Develop and Design 中文pdf扫描版

<jQuery移动开发>主要介绍使用jQuery Mobile框架创建移动网站的技巧和方法.全书首先介绍jQuery Mobile框架的基础知识,以及HTML5在其中的作用:接着介绍UI组件的创建,包括对话框窗口和按钮.布局选项.列表.表单元素和jQuery Mobile主题等:此外书中还详细讲解了移动API和jQuery Mobile的内容管理系统,并在最后介绍了使用模拟器测试网站的技术和技巧.jQuery移动开发目录:第1部分 jQuery Mobile基础 第1章 理解jQuery 第2

jQuery Mobile入门经典 ([美] Phil Dutson) 中文pdf扫描版

jQury Mobile是以全球最流行的jQuery为核心的跨平台移动Web应用开发框架,自从诞生以来,就赢得了业内专家和技术社区的强烈关注.<jQuery Mobile入门经典>采用直观.循序渐进的方法讲解了如何借助jQuery Mobile,通过一个单一的代码库来创建适合各种移动设备的移动应用.<jQuery Mobile入门经典>分为4部分:第1部分介绍了jQuery Mobile的基础入门知识:第2部分讲解了用户界面相关的知识,读者将学到如何使用jQuery Mobile来