OFD文件在线预览技术解析

一、OFD文件在线转换

OFD(Open Financial Document)是一种开放的金融文档标准,主要用于企业金融报告、财务发票等场景。由于OFD格式并不支持浏览器直接渲染,因此需要进行在线转换。

OFD文件在线转换的方式有很多种,其中一种比较常见的方案是使用第三方库进行转换,比如使用java开发的ofd2html工具。其原理是将OFD文件解析成XML格式,并生成对应的html文件。这样就可以在浏览器中打开OFD文件了。下面是一段示例代码:

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import org.ofdrw.converter.FontLoader;
import org.ofdrw.converter.OFD2HtmlConverter;
import org.ofdrw.converter.PageInfo;
import org.ofdrw.core.OFD;
import org.ofdrw.font.FontName;
import org.ofdrw.font.FontSet;

public class OFD2HTMLDemo {

  public static void main(String[] args) throws Exception {
    String srcOFD = "test.ofd";
    FontSet fontSet = new FontSet().add(FontName.SimSun);
    FontLoader fontLoader = new FontLoader().loadFontSet(fontSet);

    OFD ofd = new OFD(new File(srcOFD).toURI());
    //将OFD文件转换成html
    PageInfo pageInfo = new OFD2HtmlConverter().setDrawBoundary(false).convert(ofd, fontLoader);

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    pageInfo.html().toStream(out, pageInfo.getMediaSize());

    FileOutputStream fos = new FileOutputStream("test.html");
    fos.write(out.toByteArray());
    fos.close();
  }
}

二、OFD文件转PDF在线

OFD文件并不是所有软件都支持,比如在某些特定的场景下需要将OFD文件转换成PDF文件。这时可以选择在线转换服务。目前市场上有一些比较成熟的转换服务,比如AliYun和Foxit。这些服务可以通过API方式进行调用,将OFD文件转换成PDF格式。

下面是通过AliYun进行OFD文件转换的示例代码:

//引入相关的包
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
import org.apache.commons.io.FileUtils;

//将OFD文件转换为PDF格式
public String convertOFD2PDF(String srcOFDFilePath) {
  try {
    String host = "http://ofdrenderview.market.alicloudapi.com";
    String path = "/api/render/ofd2pdf";
    String method = "POST";
    String appcode = "your_app_code";
    String querys = "";
    String bodys = Base64.getEncoder().encodeToString(FileUtils.readFileToByteArray(new File(srcOFDFilePath)));
    URL url = new URL(host + path + querys);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod(method);
    conn.setRequestProperty("Authorization", "APPCODE " + appcode);
    conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    //读取返回的数据
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
    String line;
    StringBuilder response = new StringBuilder();
    while ((line = reader.readLine()) != null) {
        response.append(line);
    }
    reader.close();
    //将返回的PDF文件保存到本地
    String destPDFFilePath = "test.pdf";
    FileUtils.writeByteArrayToFile(new File(destPDFFilePath), Base64.getDecoder().decode(response.toString()));
    return destPDFFilePath;
  } catch (Exception e) {
    e.printStackTrace();
  }
  return "";
}

三、浏览器预览不了OFD文件

OFD文件并不是浏览器原生支持的格式,在线预览时需要借助第三方插件或者进行转换。常见的OFD文件在线浏览解决方案有两种,一种是基于OFD转成html或者PDF并在浏览器中展示,另一种是基于第三方的插件进行展示。

下面是基于第三方插件进行OFD文件在线预览的示例代码,需要在HTML页面中引入OFD浏览器插件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>OFD文件在线预览</title>
  </head>
  <body>
    <object data="test.ofd" type="application/ofd" width="600" height="800">
      <param name="ladpversion" value="7.1.0.0">
      <param name="page" value="1">
    </object>
  </body>
</html>

四、OFD文件在线预览前端实现

OFD文件在线预览也可以通过前端技术实现,支持更加灵活的用户交互方式。通常的做法是通过JavaScript将OFD文件解析成对应的HTML和CSS,然后在浏览器中展示。OFD.js是一个比较成熟的OFD解析库,可以方便地实现OFD文件的在线预览。

下面是通过OFD.js实现OFD文件在线预览的示例代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>OFD文件在线预览</title>
    <!--引入CSS-->
    <link rel="stylesheet" href="OFDJSViewer/OFDJSViewer.css">
    <!--引入JavaScript-->
    <script src="OFDJSViewer/OFDJSViewer.min.js"></script>
  </head>
  <body>
    <div id="ofd_viewer"></div>
    <script>
      var viewer = new OFDJSViewer({
        container: document.getElementById("ofd_viewer"),
        ofdFile: "test.ofd",
        toolbar: true,
        toolbarPosition: OFDJSViewer.TOOLBAR_POSITION_TOP
      });
      viewer.render();
    </script>
  </body>
</html>

五、结语

OFD文件在线预览涉及的技术包括文件格式转换、API调用、第三方插件、JavaScript等多个方面。开发人员可以根据具体情况选择不同方案进行实现,使用户能够方便地在线预览OFD文件。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/185647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-26 21:06
下一篇 2024-11-26 21:06

相关推荐

  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Python zipfile解压文件乱码处理

    本文主要介绍如何在Python中使用zipfile进行文件解压的处理,同时详细讨论在解压文件时可能出现的乱码问题的各种解决办法。 一、zipfile解压文件乱码问题的根本原因 在P…

    编程 2025-04-29
  • Python将矩阵存为CSV文件

    CSV文件是一种通用的文件格式,在统计学和计算机科学中非常常见,一些数据分析工具如Microsoft Excel,Google Sheets等都支持读取CSV文件。Python内置…

    编程 2025-04-29
  • Python如何导入py文件

    Python是一种开源的高级编程语言,因其易学易用和强大的生态系统而备受青睐。Python的import语句可以帮助用户将一个模块中的代码导入到另一个模块中,从而实现代码的重用。本…

    编程 2025-04-29
  • Python合并多个相同表头文件

    对于需要合并多个相同表头文件的情况,我们可以使用Python来实现快速的合并。 一、读取CSV文件 使用Python中的csv库读取CSV文件。 import csv with o…

    编程 2025-04-29
  • Python热重载技术

    Python热重载技术是现代编程的关键功能之一。它可以帮助我们在程序运行的过程中,更新代码而无需重新启动程序。本文将会全方位地介绍Python热重载的实现方法和应用场景。 一、实现…

    编程 2025-04-29

发表回复

登录后才能评论