Java操作PDF文件(BFO)

java解析pdf工具bfopdf-2.11.11.zip java解析pdf工具bfopdf-2.11.11.zip java 解析 pdf jar 立即下载
上一次我们用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工具功能比较强大,实际应用更加广泛。
Java的bfopdf解析 NULL 博文链接:https://rayln.iteye.com/blog/1507998 立即下载

相关推荐

BFO_rgm.zip

用细菌觅食算法的应用之一,帮助学习细菌觅食算法,所使用的编程软件是matlab

BFO:Big Faceless PDF Library for JAVA

最智能的 PDF 库,用于创建、编辑、显示和打印 Acrobat PDF 文档。PDF API 小巧、快速、易于使用并集成到您的项目中,并且完全用 Java 编写。

控件与插件之大全 509

BFO细菌觅食算法

matlab程序,细菌觅食代码,实现有问题

bfo java_Java操作PDF文件(BFO) | 学步园

上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFOiText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体、版面等元素。最新版本是:2.11.4官方的解释:The Big Faceless Java PDF Library is the smartestJava PDF library for creating, editing...

weixin_28745309的博客 313

BFO-PSO混合算法解决多目标问题

很实用 只要下载matlab程序即可用 还包括了生成图像

别再手动挂载NPU了!手把手教你用Ascend-Docker-Runtime一键启动昇腾AI容器

本文详细介绍了如何使用Ascend-Docker-Runtime一键启动昇腾AI容器,大幅简化NPU设备挂载流程。通过环境变量ASCEND_VISIBLE_DEVICES,开发者可以灵活指定NPU设备,提升开发效率。文章还提供了安装配置指南、高级使用技巧和常见问题排查方法,帮助开发者快速掌握这一高效工具。

weixin_42662605的博客 252

PDF文档解析java Big Faceless

最近在公司实习,由于公司的项目,公司要求我们做解析文档的部分任务,首先我做的是PDF文档的解析,主管也说了,这是最简单的,用开源的JAVA库PDFbox就能解决,不过,pdfbox还不支持新的PDF1.7版本。我在网上搜索,终于找到了能支持PDF1.7版本的开源库了。The Big Faceless PDF Library可以到一下网站下载PDF包:里面有较详细的文档说明。 http://big.

wqjsir的专栏 3997

Vivado工程备份实战:两种方法快速迁移Block Design(附路径避坑指南)

本文详细介绍了Vivado工程中Block Design(BD)备份与迁移的两种核心方法:文件夹直接复制法与TCL脚本生成法。针对FPGA工程师在项目迁移或团队协作时常见的IP丢失、路径报错等问题,提供了从原理到实战的操作指南与路径避坑策略,确保设计可复现与高效协作。

pz890123的博客 1303

bfo java_Java 利用BFO操作PDF文件

[java]代码库import org.faceless.pdf2.*;import java.util.Locale;import java.awt.Color;import java.util.*;import java.io.*;/*** 创建一个PDF文档,内容来源于一个TXT文本文件。* 相关包下载 http://big.faceless.org/products/bfopdf-2.11...

weixin_33139087的博客 203

Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点

这个位置也是ros2搜索package以及搜索node的路径, 如果把构建好的可执行文件乱动位置的话就找不到节点了,当然如果复制一个可执行文件以及可执行文件-script.py文件, ros2也就会认为你有一个新的节点了,运行这个拷贝的可执行文件程序都是ok的。由于上一个文章给powershell7也增加了启动执行ros2的环境初始化文件local_setup.ps1, 所以我们也可以直接在vscode中运行节点, 此种方式没有经由ros2托管, 缺少其他ros2的附加能力。

weixin_48398592的博客 7113

高效利用ChEMBL数据库:从靶点查询到活性数据处理的完整指南

本文提供了高效利用ChEMBL数据库的完整指南,从靶点查询到活性数据处理。详细介绍了靶点精准定位、高级过滤技巧、数据导出优化以及活性数据清洗、特征工程和可视化等实战技巧,帮助药物研发人员快速获取和处理生物活性数据,提升工作效率。

weixin_29278805的博客 792

bfo java_Java操作PDF文件(BFO)

上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFOiText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体、版面等元素。最新版本是:2.11.4官方的解释:The Big Faceless Java PDF Library is the smartest Java PDF library for creating, editin...

weixin_39520988的博客 176

RH850从0搭建Autosar开发环境系列讲解 - 总目录

Davinci Autosar实战开发从0构建开发能力。OS,COM,DCM,BSWMM,ECUM,VLINK,XCP,MEMMAP等模块配置,带你熟悉运行的autosar代码,包括MICROSAR的启动运行,使用GreenHills生成运行的hex。

weixin_42412049的博客 1万+

Java文档操作(pdf, excel, word)

----- Word Java操作Microsoft Word之jacob(The JACOB Project: A JAva-COM Bridge) http://xiaoduan.blog.51cto.com/502137/136692 ----- PDF Java操作PDF文件(BFO) http://xiaoduan.blog.51cto.com/502137/138...

dch1287的专栏 149

MCAL知识点(十):ERU驱动配置详解

ERS:外部请求单元ETL:中断逻辑单元OGU:输出逻辑单元MCU里面配置要使用的功能和选择输入的管脚,注意上述模块关注点讲述的ERU必须和边沿检测模块相关联。

梦想技术家 1222

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

Big Faceless Java PDF Library[BFO]

Big Faceless Organization (BFO)是KSM有限公司的贸易名称,是一家英国的私营公司。我们为国际性的企业对企业的电子商务市场开发高质量的Java软件组件。BFO成立于1998年,并且它拥来自世界各地50多个国家的客户,包括波音公司、毕马威国际会计公司、丰田、西门子公司和美国哈佛大学。 Big Faceless Java PDF 库 Ω578867473告诉您这用于创建、编辑、显示和打印 Acrobat PDF 文档的最智能 PDF 库。PDF API 体积小、速度快、易于使用

控件与插件之大全 412

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

BFO PDF Library v2.29.4提高企业对 PDF 签名的信任度

Big Faceless Organization 开发的 BFO PDF 库是一款高性能 Java 工具包,用于以编程方式创建、编辑和显示 PDF 文档。它专为需要动态生成或操作 PDF 的开发人员而设计,支持 PDF/A 和 PDF/X 合规性、数字签名、加密以及包括表格、图表和条形码在内的复杂布局功能。该库可无缝集成到 Java 应用程序中,常用于需要可靠、可扩展 PDF 输出的企业环境中。它还包含一个用于在 Java 用户界面中渲染 PDF 的查看器组件,使其既适用于后端文档生成,也适用于客户端显示

控件与插件之大全 218

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用可变字体从HTML/XML生成PDF-BFO Publisher v1.4

BFO Publisher 是一款基于 Java 的 CSS 排版引擎,由 Big Faceless Organization (BFO) 开发,可将使用 CSS 样式化的 HTML 或 XML 转换为 PDF 文档。它基于 Big Faceless PDF 库构建,支持高级排版功能,包括 flexbox-1、SVG2 和 MathML4 等现代 CSS 结构,并提供符合 PDF/A、PDF/X 和 PDF/UA 标准的存档级质量输出

控件与插件之大全 378

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

学习BFO for Java版本的科学实践

Java商业产品的科学实践

haiyangyiba的专栏 186

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

BFO Publisher轻松将HTML转换为PDF

全面的 CSS3 支持:selectors-4、cascade-5、color-5、fonts-4、backgrounds-3、images-4、shapes-2、page-3、gcpm-1、flex-1 等等。对 CSS2.1 的准确支持 - 通过 98.6% 的测试,与您的浏览器大致相同意味着表格在 PDF 中的外观与在屏幕上的外观相同。PDF/A-1、A2、A3 和 A4、PDF/X 以及对 PDF/UA 的支持,可完全控制标签和属性。嵌入 SVG、位图、视频、音频、条形码、3D 模型和 PDF。..

q2315702359的博客 233

JAVA读取和操作PDF系列《五》

bfopdf  创建PDF文件  前面介绍的iText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体、版面等元素。 同样需要导入BFO 架包   http://big.faceless.org/products/bfopdf-2.11.4.zip 下面就写上具体代码   private st

Scott Wang 699
上一篇: Java打印服务API
下一篇: oracle分区表
giianhui
博客等级 码龄20年 173粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值