bfo java_Java操作PDF文件(BFO) | 学步园
上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO
iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体、版面等元素。
最新版本是:2.11.4
官方的解释:The Big Faceless Java PDF Library is the smartest
Java PDF library for creating, editing, displaying and printing Acrobat
PDF documents.
我的开发环境:JDK1.6+MyEclipse7+Tomcat5.5.27
首先在MyEclipse中新建一个项目BFO,将下载的jar文件放入该项目的类库中。
新建一个Class(类)CreateBook.java,Package(包)为com.bfo 代码如下:
package com.bfo;
import org.faceless.pdf2.*;
import java.util.Locale;
import java.awt.Color;
import java.util.*;
import java.io.*;
/**
* 创建一个PDF文档,内容来源于一个TXT文本文件。
*
* author:小段
*/
public class CreateBook
{
private static PDFStyle numstyle;
private static int pagenum = 1;
private static PDF pdf;
private static final String PAGESIZE = "A4-Landscape";
private static final float WIDTH, HEIGHT;
static {
PDFPage page = new PDFPage(PAGESIZE);
WIDTH = (page.getWidth()/2) - 100;
HEIGHT = page.getHeight() - 100;
}
public static void main(String args[]) throws IOException {
String filename = args.length > 0 ? args[0] : "C://bfo.txt";
// 设置文本源文件,并且创建一个PDF对象。
pdf = new PDF();
pdf.setLocale(Locale.ENGLISH);
// 创建一个新的PDF格式,设置字体(罗马字体)、字号(11)以及颜色(黑色)。
PDFStyle textstyle = new PDFStyle();
textstyle.setFont(new StandardFont(StandardFont.TIMES), 11);
textstyle.setFillColor(Color.black);
textstyle.setTextAlign(PDFStyle.TEXTALIGN_JUSTIFY);
numstyle = new PDFStyle();
numstyle.setFont(new StandardFont(StandardFont.TIMES), 8);
numstyle.setFillColor(Color.black);
numstyle.setTextAlign(PDFStyle.TEXTALIGN_CENTER);
LayoutBox chapter = new LayoutBox(WIDTH);
int chapternumber = 0;
BufferedReader in = new BufferedReader(new FileReader(filename));
String line;
long starttime = System.currentTimeMillis();
System.out.println(new Date()+": Starting file");
// 文件开始被读取.
while ((line=in.readLine())!=null) {
line = line.trim();
if (line.length()==0) {
line = "/n/n";
} else {
line += " ";
}
// 调用requote方法。
line = textstyle.getFont().requote(line, pdf.getLocale());
// 开始将内容写进PDF文档。
if (line.startsWith("Chapter ")) {
if (chapternumber>0) {
System.out.println(new Date()+": Writing Chapter "+chapternumber);
writeChapter(chapter, chapternumber);
}
chapternumber++;
chapter = new LayoutBox(WIDTH);
}
chapter.addText(line, textstyle, pdf.getLocale());
}
// 将最后一个段落写入PDF文档
System.out.println(new Date()+": Writing Chapter "+chapternumber);
writeChapter(chapter, chapternumber);
System.out.println(new Date()+": Compressing and writing to file");
OutputStream out = new FileOutputStream("C://BFO.pdf");
pdf.render(out);
out.close();
// 显示操作PDF文档的总共时间。
System.out.println("Total time was "+(System.currentTimeMillis()-starttime)+"ms");
}
private static void writeChapter(LayoutBox chapter, int chapternumber) {
PDFPage page=null;
boolean firstpage = true;
float left;
// 测量文本高度以前,必须清空缓存。
chapter.flush();
while (chapter!=null) {
// 清空布局格式。
LayoutBox next=null;
if (chapter.getHeight() > HEIGHT) {
next = chapter.splitAt(HEIGHT);
}
if (pagenum%2 == 1) {
page = pdf.newPage(PAGESIZE);
left = 50;
// 写下页数。
page.setStyle(numstyle);
page.drawText("Page "+ pagenum, page.getWidth()/4, 30);
page.drawText("Page "+ (pagenum+1), 3*page.getWidth()/4, 30);
} else {
left = (page.getWidth()/2)+50;
}
page.drawLayoutBox(chapter, left, page.getHeight()-50);
chapter = next;
pagenum++;
// 如果是第一页的话,添加一个书签。
if (firstpage) {
pdf.getBookmarks().add(new PDFBookmark("Chapter "+chapternumber, PDFAction.goTo(page)));
firstpage = false;
}
}
// 确定下一个段落应该写在剩下的页面。
pagenum |= 1;
}
}
这是我C:/bfo.txt的内容:
运行CreateBook.java后,控制台显示信息:
同时发现C盘根目录下生成了bfo.pdf文件。打开内容为:
这样一来,我们就能将一个TXT文本文件转换成PDF文档。
当然了,上次说的iText工具也支持这样的转换,只不过BFO工具功能比较强大,实际应用更加广泛。
bfo java_Java操作PDF文件(BFO) | 学步园相关推荐
- bfo java_Java操作PDF文件(BFO)
上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体.版面等元素. 最新版 ...
- itex将html转成pdf加水印,itext操作PDF文件添加水印
功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...
- 使用ITEXT操作PDF文件
2019独角兽企业重金招聘Python工程师标准>>> 使用ITEXT操作PDF文件 pom.xml <dependency><groupId>com.ite ...
- 第19天---python办公自动化---操作PDF文件
第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...
- python 操作PDF文件 之 A3页面转A4
python 操作PDF文件 A3页面转A4页面 文章目录 1. 需求概述 2. 代码实现 1. 需求概述 最近接到一份PDF资料需要打印,奈何页面是如图所示的A3格式的,奈何目前条件只支持打印A4. ...
- day10 Python操作pdf文件
目录 一.PyPDF2的使用 1. pypdf2的使用 2. pypdf2的基本应用 3. 为PDF文件页面添加水印 二.reportlab的使用 0. 导入工具 1. 创建画布 2. 添加文字 3. ...
- Python使操作PDF文件变得有趣
大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来 目录 工具 从PDF中提取文本 旋转和叠加页面 加密P ...
- bfo java_Java 利用BFO操作PDF文件
[java]代码库import org.faceless.pdf2.*; import java.util.Locale; import java.awt.Color; import java.uti ...
- 【Python】如何用Python来操作PDF文件,建议收藏
今天这篇文章,我们不谈热点,毕竟最近谈论的热点有点多了,也有点腻了,我们来讲一些Python运用实践当中的小技巧,用Python来操作和处理PDF文件,通过本篇文章,读者朋友大概会学会 1. 通过Py ...
最新文章
- 14岁上中科大、23岁博士毕业的袁岚峰,现在因“简单科普”上热搜,本人回应:科普和科研一样重要...
- JavaScript面向对象编程(1)-- 基础
- android,项目,一些教程
- mysql master thread_mysql innodb master_thread伪代码整理
- 让LoadRunner再次走下神坛
- 图解MapReduceMapReduce整体流程图
- tomcat出现5个using_当猫咪出现这5个迹象,主人就要给猫咪换猫粮了
- 5G让万物互联成为可能 大连接时代谋划物联网
- wget下载的文件在哪里
- 16QAM-调制解调MATLAB
- ab plc软件_回收拆厂拆机设备废旧设备PLC触摸屏自动化设备回收【cpu吧】
- 【keil5】pwm驱动步进电机
- 爬取贝壳网深圳二手房实战
- html作品源文件,编辑HTML源文件
- 录屏软件哪个好?电脑录屏软件排行榜推荐
- Revit中栏杆扶手、坡道的绘制及插件太多问题
- element-UI el-dialog组件按ESC键关闭不了弹窗
- 什么是restful,什么是rest风格
- 五组数据告诉你倒闭企业的“死亡画像”
- Docker搭建Skywalking环境