学习bfo的Big Faceless Graph Library科学使用

BFO
placeholder image
admin 发布于:2025-09-17 17:01:32
阅读:loading

BFO是开发用于处理 PDF 文档和图表的 Java API。它们体积小巧、速度快、文档丰富,并且持续改进。我们提供快速响应、友好的支持以及免费升级,有以下4款产品组件可以免费试用:

(1)Big Faceless PDF Library 用于创建、编辑、显示和打印 PDF 的 Java 类库;

(2)BFO Publisher 现代 HTML 到 PDF 转换器;

(3)Big Faceless Report Generator 一个将 XML 转换为 PDF 的 Java 工具;

(4)Big Faceless Graph Library 用于生成 2D 和 3D 图形和图表的 Java 类库;

特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

1.基本介绍

使用 Java 创建业界领先的图形和图表。该图表库基于完整的 3D 引擎,可以从任意视角快速绘制二维或带阴影的 3D 饼图、折线图、面积图和条形图,并保存为 PNG、Flash、PDF 或 SVG 文件,效果惊艳。

Big Faceless Graph Library 2.0 版基于 1.0 版的所有功能构建而成,我们相信它是市面上最全面的 Graph Library,比如它的主要功能包含有:

  • XML 和 JSP 标签库接口,可极其轻松地与 Web 项目集成;

  • 用于图形创建的 SOAP 和 XML Web 服务接口;

  • 非常全面的 API 和标签文档,包含数十个示例;

  • 在您的标签中嵌入 JavaScript,轻松创建强大的翻转功能;

  • 具有可调光源的全 3D 引擎可生成市场上最逼真的图形;

  • 输出为 PNG、SVG、Macromedia Flash、PDF 或java.awt.Image用于小程序;

  • 图表日期、货币、百分比、数字和离散数据开箱即用,可轻松扩展以完全控制轴;

  • 混合条形图、折线图、蜡烛图、气泡图,全部在同一张图表上;

  • 创建漏斗图;

  • 在图表的任何位置(包括轴)添加文本、线条或自定义标记;

  • 在一个图表上最多使用四个轴,包括对数轴;

  • 在同一张图表上绘制数学函数、数据样本和适合数据的样条曲线;

  • 速度很快——每秒可绘制多个 3D 图形为PDF 或 SVG;

图库有很多有趣的功能,最实用的是标签库接口,这使得在网页中嵌入图表变得轻而易举——就像创建 HTML 表格一样简单。大多数人会将图表嵌入为 PNG 格式,这意味着可以使用 JavaScript 创建翻转和操作,其方式与图像映射完全相同。如果您更喜欢矢量图像,只需更改 XML 中的一个单词即可创建 SVG 和 Flash。

2.示例输出

一些从官网示例中整理的xml与pdf作为源文件,在此基础上运行输出报表PDF文件,以下是参考代码与示例输出:

public class BarGraphExample extends BaseTest {

    @Test
    public void main() throws IOException {
        // Create 2 series
        //
        BarSeries series1 = new BarSeries("2001");
        series1.setRoundBars(true);
        series1.setBarWidth(0.8);
        series1.set("apples", 5);
        series1.set("bananas", 9);
        series1.set("oranges", 2);
        series1.set("grapes", 6);
        series1.setBarLabels(new TextStyle("Helvetica", 10, Color.black, Align.BOTTOM), null);

        BarSeries series2 = new BarSeries("2002");
        series2.setBarWidth(0.8);
        series2.setBarDepth(0.8);
        series2.set("apples", 9);
        series2.set("bananas", 10);
        series2.set("oranges", 5);
        series2.set("grapes", 3);

        // Create the graph and add the series
        //
        AxesGraph graph = new AxesGraph();
        graph.addSeries(series1);
        graph.addSeries(series2);

        // Set some options, including coloring the walls of the graph with stripes
        //
        graph.getAxis(Axis.LEFT).setWallPaint(new Paint[]{new Color(238, 238, 238), Color.white}, new Color(204, 204, 204), null);
        graph.getAxis(Axis.BOTTOM).setWallPaint(new Paint[]{new Color(238, 238, 238), Color.white}, new Color(204, 204, 204), null);
        graph.setBackWallPaint(new Paint[]{new Color(238, 238, 238), Color.white}, new Color(204, 204, 204), Axis.LEFT, Axis.BOTTOM, null);
        graph.setLightVector(1, 0, -1);
        graph.setXRotation(30);
        graph.setYRotation(50);
        graph.setAxis(Axis.ZAXIS, new ZAxis());

        // Add a title
        //
        TextStyle style = new TextStyle("Default", 24, Color.black, Align.CENTER);
        graph.addText("Fruit Consumption Graph", style);

        // Write the file
        //
        ImageOutput image = new ImageOutput(500, 500);
        graph.draw(image);
        FileOutputStream out = new FileOutputStream("resources/output/bfograph/BarGraphExample.png");
        image.writePNG(out, 0);
        out.close();
    }
}

(Java代码示例)

<?xml version="1.0"?>

<axesgraph width="600" height="600" xrotation="35" yrotation="50" backwallpaint="stripe(#F0F0F0,line=black,axis=left)">
  <label font="30pt bold default" paddingbottom="10">Grade 3 Spelling Test Results</label>
  <axis pos="left" type="int" wallpaint="stripe(#F0F0F0,line=black)"/>
  <axis pos="z" type="zaxis" wallpaint="stripe(#F0F0F0,line=black)" toothlength="0.02"/>
  <axis pos="bottom" type="bar" wallpaint="stripe(#F0F0F0,line=black)" align="top center" toothlength="0.02"/>
  <barseries name="January" barwidth="0.8" bardepth="0.8" color="gradient(yellow,white)">
    <data x="Peter" y="13"/>
    <marker name="JanStar" x="0.1" y="12.5" type="star" color="#FF9900" bordercolor="#000000" size="24"/>
    <data x="Frank" y="5"/>
    <data x="Wendy" y="6"/>
    <data x="Kate" y="10"/>
    <data x="Simon" y="6"/>
  </barseries>
  <barseries name="February" barwidth="0.8" bardepth="0.8" color="gradient(white,red)">
    <data x="Peter" y="14"/>
    <data x="Frank" y="15"/>
    <marker name="FebStar" x="1.1" y="14.5" type="star" color="#FF9900" bordercolor="#000000" size="24"/>
    <data x="Wendy" y="8"/>
    <data x="Kate" y="7"/>
    <data x="Simon" y="4"/>
  </barseries>
  <barseries name="March" barwidth="0.8" bardepth="0.8" color="gradient(white,green)">
    <data x="Peter" y="16"/>
    <data x="Frank" y="12"/>
    <data x="Wendy" y="10"/>
    <data x="Kate" y="17"/>
    <marker name="MarStar" x="3.1" y="16.5" type="star" color="#FF9900" bordercolor="#000000" size="24"/>
    <data x="Simon" y="11" color="gradient(white,blue)"/>
    <label x="Simon" y="11" font="10pt bold default" paddingtop="10" align="top center">   Absent for
   initial test</label>
  </barseries>
  <key align="bottom">
    <keyitem marker="star" color="#FF9933" bordercolor="#000000" size="24" fontsize="16">Monthly Star!</keyitem>
  </key>
</axesgraph>

(XML图表模板)

image.png

(3D柱状图)

image.png

(蜡烛图)

image.png

(3D柱状图)

image.png

(PDF单据填充)

image.png

(3D饼图)

image.png

(其它更多)

3.其它说明

(1)Big Faceless Graph Library是bfo公司出的众多产品中的其中一款Java语言的产品;

(2)关于Jar文件的下载可以直接从官网提供的下载渠道获取,下载到的Jar文件内有许多class属于加密混淆的;

(3)试用版功能齐全(它会在创建的每个页面中添加“DEMO”标记),本系列文章中的实现属于的科学使用,不需额外关注License,又不改动Jar的任何地方,同时又恰好没有各种限制。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

(5)科学实践版本为2025年的bfograph-2.4.9.jar;

(6)相关示例输出文件下载:《示例输出.zip》,所有的示例输出包含了PDF、svg、png等格式文件;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区