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/zh-hk/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
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

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

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 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寫文件a

    Python語言是一種功能強大、易於學習、通用並且高級編程語言,它具有許多優點,其中之一就是能夠輕鬆地進行文件操作。文件操作在各種編程中都佔有重要的位置,Python作為開發人員常…

    編程 2025-04-29

發表回復

登錄後才能評論