上一次我们用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) | 学步园相关推荐

  1. bfo java_Java操作PDF文件(BFO)

    上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFO iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体.版面等元素. 最新版 ...

  2. itex将html转成pdf加水印,itext操作PDF文件添加水印

    功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...

  3. 使用ITEXT操作PDF文件

    2019独角兽企业重金招聘Python工程师标准>>> 使用ITEXT操作PDF文件 pom.xml <dependency><groupId>com.ite ...

  4. 第19天---python办公自动化---操作PDF文件

    第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...

  5. python 操作PDF文件 之 A3页面转A4

    python 操作PDF文件 A3页面转A4页面 文章目录 1. 需求概述 2. 代码实现 1. 需求概述 最近接到一份PDF资料需要打印,奈何页面是如图所示的A3格式的,奈何目前条件只支持打印A4. ...

  6. day10 Python操作pdf文件

    目录 一.PyPDF2的使用 1. pypdf2的使用 2. pypdf2的基本应用 3. 为PDF文件页面添加水印 二.reportlab的使用 0. 导入工具 1. 创建画布 2. 添加文字 3. ...

  7. Python使操作PDF文件变得有趣

    大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来  目录  工具  从PDF中提取文本  旋转和叠加页面  加密P ...

  8. bfo java_Java 利用BFO操作PDF文件

    [java]代码库import org.faceless.pdf2.*; import java.util.Locale; import java.awt.Color; import java.uti ...

  9. 【Python】如何用Python来操作PDF文件,建议收藏

    今天这篇文章,我们不谈热点,毕竟最近谈论的热点有点多了,也有点腻了,我们来讲一些Python运用实践当中的小技巧,用Python来操作和处理PDF文件,通过本篇文章,读者朋友大概会学会 1. 通过Py ...

最新文章

  1. 14岁上中科大、23岁博士毕业的袁岚峰,现在因“简单科普”上热搜,本人回应:科普和科研一样重要...
  2. JavaScript面向对象编程(1)-- 基础
  3. android,项目,一些教程
  4. mysql master thread_mysql innodb master_thread伪代码整理
  5. 让LoadRunner再次走下神坛
  6. 图解MapReduceMapReduce整体流程图
  7. tomcat出现5个using_当猫咪出现这5个迹象,主人就要给猫咪换猫粮了
  8. 5G让万物互联成为可能 大连接时代谋划物联网
  9. wget下载的文件在哪里
  10. 16QAM-调制解调MATLAB
  11. ab plc软件_回收拆厂拆机设备废旧设备PLC触摸屏自动化设备回收【cpu吧】
  12. 【keil5】pwm驱动步进电机
  13. 爬取贝壳网深圳二手房实战
  14. html作品源文件,编辑HTML源文件
  15. 录屏软件哪个好?电脑录屏软件排行榜推荐
  16. Revit中栏杆扶手、坡道的绘制及插件太多问题
  17. element-UI el-dialog组件按ESC键关闭不了弹窗
  18. 什么是restful,什么是rest风格
  19. 五组数据告诉你倒闭企业的“死亡画像”
  20. Docker搭建Skywalking环境

热门文章

  1. 通用职责分配软件原则之6-多态原则
  2. 如何使用此功能强大的工具将Wemo添加到Homekit
  3. 笔记本电脑锁_武汉笔记本电脑模型打样价格
  4. vscode编写go没有代码提示
  5. docker安装elasticsearch2.4.4
  6. Scrapy添加随机ip
  7. PyTorch小案例二
  8. LeetCode - 题 70 跳台阶 - 具体思路与python解法
  9. Celery增加Systemd配置
  10. jQuery向动态生成的内容添加事件响应(jquery live方法简介)