Skip to content

Office 转 PDF (第三方转换引擎)

福昕 PDF SDK 提供强大的 Office 转 PDF 功能,支持将 Office 文档(Word、Excel 和 PowerPoint)转换为高质量 PDF 文件。本节将详细介绍如何使用第三方引擎实现此功能。

功能演进

Windows 平台转换功能支持:

  • v7.3 版本起,提供 Word 和 Excel 文件的 PDF 转换支持。
  • v7.4 版本起,扩展提供 PowerPoint 文件的 PDF 转换支持。

Linux 平台转换功能支持:

  • v8.4 版本起,提供 Word、Excel 和 PowerPoint 文件的 PDF 转换支持。

使用前须知

在使用此功能之前,请先查阅 Office 转 PDF 示例配置与运行指南,获取详细信息,包括系统要求、运行环境配置、转换引擎参数配置、示例运行等,快速准确掌握该功能的使用方法。

以下是示例代码,演示了如何使用福昕 PDF SDK 的 Office2PDF 模块,通过调用第三方引擎,将不同类型的 Office 文档转换为 PDF 文件。

LibreOffice 转 PDF 多线程实现(Linux x86/x64)

在 Linux x86/x64 架构下,福昕 PDF SDK 提供专用的 LibreOffice 二进制程序,支持多线程转换 Office 文档至 PDF。

实现方式:

只需将对应架构的专用二进制引擎路径赋值给 engine_path 参数,即可启用多线程转换。

代码示例:

c++
WString engine_path = L"/resource-folder/x64/fxoffice2pdf"; // 请替换为正确的引擎路径。
foxit::addon::conversion::Convert::FromWord(word_file_path, L"", output_path, engine_path, word_convert_setting_data);

详细信息:

请参阅以下信息,获取更多关于 LibreOffice 转 PDF 资源包获取和示例运行的详细信息:

将 Word 文档转换为 PDF 文档

c++
#include "include/addon/conversion/fs_convert.h"

// Make sure that SDK has already been initialized successfully.

WString word_file_path = L"test.doc";
WString output_path = L"saved.pdf";

// Use default Word2PDFSettingData values.
foxit::addon::conversion::Word2PDFSettingData word_convert_setting_data;
#if defined(_WIN32) || defined(_WIN64)
foxit::addon::conversion::Convert::FromWord(word_file_path, L"", output_path, word_convert_setting_data);
#else
foxit::addon::conversion::Convert::FromWord(word_file_path, L"", output_path, engine_path, word_convert_setting_data);
#endif
C
#include "include/fs_basictypes_c.h"
#include "include/fs_convert_c.h"

// Make sure that SDK has already been initialized successfully.

const wchar_t* word_file_path = L"test.doc";
const wchar_t* output_path = L"saved.pdf";

// Use default Word2PDFSettingData values.
FSWord2PDFSettingData word_convert_setting_data;
word_convert_setting_data.include_doc_props = false;
word_convert_setting_data.optimize_option = e_FSConvertOptimizeOptionForPrint;
word_convert_setting_data.content_option = e_FSConvertContentOptionOnlyContent;
word_convert_setting_data.bookmark_option = e_FSConvertBookmarkOptionNone;
word_convert_setting_data.convert_to_pdfa = false;
FSDK_Convert_FromWord(word_file_path, L"", output_path, word_convert_setting_data);
java
// Windows 

import com.foxit.sdk.addon.conversion.Word2PDFSettingData;
import com.foxit.sdk.addon.conversion.Convert;
 
// Make sure that SDK has already been initialized successfully.

String word_file_path = "test.doc";
String saved_pdf_path = "saved.pdf";

// Use default Word2PDFSettingData values.
Word2PDFSettingData word_convert_setting_data = new Word2PDFSettingData();
Convert.fromWord(word_file_path, "", saved_pdf_path, word_convert_setting_data);


// Linux (x86 and x64)

import com.foxit.sdk.addon.conversion.Word2PDFSettingData;
import com.foxit.sdk.addon.conversion.Convert;
 
// Make sure that SDK has already been initialized successfully.

String word_file_path = "test.doc";
String saved_pdf_path = "saved.pdf";

// Use default Word2PDFSettingData values.
Word2PDFSettingData word_convert_setting_data = new Word2PDFSettingData();
Convert.fromWord(word_file_path, "", saved_pdf_path, engine_path, word_convert_setting_data);
py
import sys
import site

if sys.version_info.major == 2:
    _PYTHON2_ = True
else:
    _PYTHON2_ = False

if _PYTHON2_:
    # replace with the python2 lib path
    site.addsitedir(‘../../../’)
    from FoxitPDFSDKPython2 import *
else:
    from FoxitPDFSDKPython3 import *

...
# Make sure that SDK has already been initialized successfully.

word_file_path = "test.doc"
output_path = "saved.pdf"

# Use default Word2PDFSettingData values.
word_convert_setting_data = Word2PDFSettingData()
if sys.platform == "linux":
  Convert.FromWord(word_file_path, "", output_path, engine_path, word_convert_setting_data)
else:
  Convert.FromWord(word_file_path, "", output_path, word_convert_setting_data)
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");

...
// Make sure that SDK has already been initialized successfully.

let word_file_path = "test.doc";
let output_path = "saved.pdf";

// Use default Word2PDFSettingData values.
let word_convert_setting_data = new FSDK.Word2PDFSettingData();
if (process.platform === 'win32') {
  FSDK.Convert.FromWord(word_file_path, "", output_path, word_convert_setting_data);
} else {
  engine_path = "";  // Please fill in the correct engine path. For example, "/usr/lib/libreoffice/program".
  FSDK.Convert.FromWord(word_file_path, "", output_path, engine_path, word_convert_setting_data);
}
csharp
using foxit;

// Make sure that SDK has already been initialized successfully.

string word_file_path = "test.doc";
string saved_pdf_path = "saved.pdf";

// Use default Word2PDFSettingData values.
using (foxit.addon.conversion.Word2PDFSettingData word_convert_setting_data = new foxit.addon.conversion.Word2PDFSettingData())
{
	foxit.addon.conversion.Convert.FromWord(word_file_path, "", saved_pdf_path, word_convert_setting_data);
}

将 Excel 文件转换为 PDF 文档

c++
#include "include/addon/conversion/fs_convert.h"

// Make sure that SDK has already been initialized successfully.

WString excel_file_path = L"test.xls";
WString output_path = L"saved.pdf";

// Use default Excel2PDFSettingData values.
foxit::addon::conversion::Excel2PDFSettingData excel_convert_setting_data;
#if defined(_WIN32) || defined(_WIN64)
foxit::addon::conversion::Convert::FromExcel(excel_file_path, L"", output_path, excel_convert_setting_data);
#else
foxit::addon::conversion::Convert::FromExcel(excel_file_path, L"", output_path, engine_path, excel_convert_setting_data);
#endif
C
#include "include/fs_basictypes_c.h"
#include "include/fs_convert_c.h"

// Make sure that SDK has already been initialized successfully.

const wchar_t* excel_file_path = L"test.xls";
const wchar_t* output_path = L"saved.pdf";

// Use default Excel2PDFSettingData values.
FSExcel2PDFSettingData excel_convert_setting_data;
excel_convert_setting_data.include_doc_props = false;
excel_convert_setting_data.quality = e_FSConvertQualityStandard;
excel_convert_setting_data.ignore_print_area = true;
excel_convert_setting_data.scale_type = e_FSScaleTypeNone;
excel_convert_setting_data.convert_to_pdfa = false;
FSDK_Convert_FromExcel(excel_file_path, L"", output_path, excel_convert_setting_data);
java
// Windows

import com.foxit.sdk.addon.conversion.Word2PDFSettingData;
import com.foxit.sdk.addon.conversion.Convert;
 
// Make sure that SDK has already been initialized successfully.

String excel_file_path = "test.xls";
String saved_pdf_path = "saved.pdf";

// Use default Excel2PDFSettingData values.
Excel2PDFSettingData excel_convert_setting_data = new Excel2PDFSettingData();
Convert.fromExcel(excel_file_path, "", saved_pdf_path, excel_convert_setting_data);

// Linux (x86 and x64)

import com.foxit.sdk.addon.conversion.Word2PDFSettingData;
import com.foxit.sdk.addon.conversion.Convert;
 
// Make sure that SDK has already been initialized successfully.

String excel_file_path = "test.xls";
String saved_pdf_path = "saved.pdf";

// Use default Excel2PDFSettingData values.
Excel2PDFSettingData excel_convert_setting_data = new Excel2PDFSettingData();
Convert.fromExcel(excel_file_path, "", saved_pdf_path, engine_path, excel_convert_setting_data);
py
import sys
import site

if sys.version_info.major == 2:
    _PYTHON2_ = True
else:
    _PYTHON2_ = False

if _PYTHON2_:
    # replace with the python2 lib path
    site.addsitedir(‘../../../’)
    from FoxitPDFSDKPython2 import *
else:
    from FoxitPDFSDKPython3 import *

...
# Make sure that SDK has already been initialized successfully.

excel_file_path = "test.xls"
output_path = "saved.pdf"

# Use default Excel2PDFSettingData values.
excel_convert_setting_data = Excel2PDFSettingData()
if sys.platform == "linux":
  Convert.FromExcel(excel_file_path, "", output_path, engine_path, excel_convert_setting_data)
else:
  Convert.FromExcel(excel_file_path, "", output_path, excel_convert_setting_data)
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");

...
// Make sure that SDK has already been initialized successfully.

let excel_file_path = "test.xlsx";
let output_path = "saved.pdf";

// Use default Excel2PDFSettingData values.
let excel_convert_setting_data = new FSDK.Excel2PDFSettingData();
if (process.platform === 'win32') {
  FSDK.Convert.FromExcel(excel_file_path, "", output_path, excel_convert_setting_data);
} else {
  FSDK.Convert.FromExcel(excel_file_path, "", output_path, engine_path, excel_convert_setting_data);
}
csharp
using foxit;

// Make sure that SDK has already been initialized successfully.

string excel_file_path= "test.xls";
string saved_pdf_path = "saved.pdf";
// Use default Excel2PDFSettingData values.
using (foxit.addon.conversion.Excel2PDFSettingData excel_convert_setting_data = new foxit.addon.conversion.Excel2PDFSettingData())
{
	foxit.addon.conversion.Convert.FromExcel(excel_file_path, "", saved_pdf_path, excel_convert_setting_data);
}

将 PowerPoint 文件转换为 PDF 文档

c++
#include "include/addon/conversion/fs_convert.h"

// Make sure that SDK has already been initialized successfully.

WString ppt_file_path = L"test.ppt";
WString output_path = L"saved.pdf";

// Use default PowerPoint2PDFSettingData values.
foxit::addon::conversion::PowerPoint2PDFSettingData ppt_convert_setting_data;
#if defined(_WIN32) || defined(_WIN64)
foxit::addon::conversion::Convert::FromPowerPoint(ppt_file_path, L"", output_path, ppt_convert_setting_data);
#else
foxit::addon::conversion::Convert::FromPowerPoint(ppt_file_path, L"", output_path, engine_path,  ppt_convert_setting_data);
#endif
C
#include "include/fs_basictypes_c.h"
#include "include/fs_convert_c.h"

// Make sure that SDK has already been initialized successfully.

const wchar_t* ppt_file_path = L"test.ppt";
const wchar_t* output_path = L"saved.pdf";

// Use default PowerPoint2PDFSettingData values.
FSPowerPoint2PDFSettingData ppt_convert_setting_data;
ppt_convert_setting_data.intent = e_FSConvertIntentPrint;
ppt_convert_setting_data.frame_output_slides = false;
ppt_convert_setting_data.output_type = e_FSOutputSlides;
ppt_convert_setting_data.handout_order = e_FSHandoutOrderVerticalFirst;
ppt_convert_setting_data.output_hidden_slides = false;
ppt_convert_setting_data.include_doc_props = false;
FSDK_Convert_FromPowerPoint(ppt_file_path, L"", output_path, ppt_convert_setting_data);
java
// Windows

import com.foxit.sdk.addon.conversion.PowerPoint2PDFSettingData;
import com.foxit.sdk.addon.conversion.Convert;

// Make sure that SDK has already been initialized successfully.

String ppt_file_path = "test.ppt";
String saved_pdf_path = "saved.pdf";

// Use default PowerPoint2PDFSettingData values.
PowerPoint2PDFSettingData ppt_convert_setting_data = new PowerPoint2PDFSettingData();
Convert.fromPowerPoint(ppt_file_path, "", saved_pdf_path, ppt_convert_setting_data);

// Linux (x86 and x64)

import com.foxit.sdk.addon.conversion.PowerPoint2PDFSettingData;
import com.foxit.sdk.addon.conversion.Convert;

// Make sure that SDK has already been initialized successfully.

String ppt_file_path = "test.ppt";
String saved_pdf_path = "saved.pdf";

// Use default PowerPoint2PDFSettingData values.
PowerPoint2PDFSettingData ppt_convert_setting_data = new PowerPoint2PDFSettingData();
Convert.fromPowerPoint(ppt_file_path, "", saved_pdf_path, engine_path, ppt_convert_setting_data);
py
import sys
import site

if sys.version_info.major == 2:
    _PYTHON2_ = True
else:
    _PYTHON2_ = False

if _PYTHON2_:
    # replace with the python2 lib path
    site.addsitedir(‘../../../’)
    from FoxitPDFSDKPython2 import *
else:
    from FoxitPDFSDKPython3 import *

...
# Make sure that SDK has already been initialized successfully.

ppt_file_path = "test.ppt"
output_path = "saved.pdf"

# Use default PowerPoint2PDFSettingData values.
ppt_convert_setting_data = PowerPoint2PDFSettingData()
if sys.platform == "linux":
  Convert.FromPowerPoint(ppt_file_path, "", output_path, engine_path, ppt_convert_setting_data)
else:
  Convert.FromPowerPoint(ppt_file_path, "", output_path, ppt_convert_setting_data)
js
const FSDK = require("@foxitsoftware/foxit-pdf-sdk-node");

...
// Make sure that SDK has already been initialized successfully.

let ppt_file_path = "test.pptx";
let output_path = "saved.pdf";

// Use default PowerPoint2PDFSettingData values.
let ppt_convert_setting_data = new FSDK.PowerPoint2PDFSettingData();
if (process.platform === 'win32') {
  FSDK.Convert.FromPowerPoint(ppt_file_path, "", output_path, ppt_convert_setting_data);
} else {
  FSDK.Convert.FromPowerPoint(ppt_file_path, "", output_path, engine_path, ppt_convert_setting_data);
}
csharp
using foxit;

// Make sure that SDK has already been initialized successfully.

string ppt_file_path = "test.ppt";
string saved_pdf_path = "saved.pdf";

// Use default PowerPoint2PDFSettingData values.
using (foxit.addon.conversion.PowerPoint2PDFSettingData ppt_convert_setting_data = new foxit.addon.conversion.PowerPoint2PDFSettingData())
{
	foxit.addon.conversion.Convert.FromPowerPoint(ppt_file_path, "", saved_pdf_path, ppt_convert_setting_data);
}