Skip to content

图像 / 文本 / XML 转换 ​

本节介绍 foxit::addon::conversion::Convert 中不依赖额外部署转换引擎的接口:图像 → PDF、TXT → PDF、PDF → XML。无需安装微软 Office、LibreOffice、WPS,也不需要 HTML / DWG 等独立引擎目录。

依赖引擎的 Office / HTML / DWG / OFD 等路径见 转换能力总览。

将 PDF 页面渲染为图片,或用 Image / Renderer 把图片写入 PDF,见 图片转换(不属于 Conversion 模块)。

图像 → PDF ​

使用 Convert::FromImage,将常见位图文件直接转为 PDF。

c++
#include "include/addon/conversion/fs_convert.h"
using namespace foxit::addon::conversion;

// Make sure that SDK has already been initialized successfully.
Convert::FromImage(L"input.png", L"output.pdf");
java
import com.foxit.sdk.addon.conversion.Convert;

// Make sure that SDK has already been initialized successfully.
Convert.fromImage("input.png", "output.pdf");
python
from FoxitPDFSDKPython3 import *

# Make sure that SDK has already been initialized successfully.
Convert.FromImage("input.png", "output.pdf")
csharp
using foxit.addon.conversion;

// Make sure that SDK has already been initialized successfully.
Convert.FromImage("input.png", "output.pdf");

亦支持通过 ReaderCallback / WriterCallback 以流方式输入图像并写出 PDF,详见 API 参考中的重载。

TXT → PDF ​

使用 Convert::FromTXT,并传入 TXT2PDFSettingData(页面尺寸、边距、字体、字号、颜色、行距、是否遇 0x0c 分页等)。

c++
#include "include/common/fs_common.h"
#include "include/addon/conversion/fs_convert.h"
using namespace foxit;
using namespace foxit::common;
using namespace foxit::addon::conversion;

// Make sure that SDK has already been initialized successfully.
TXT2PDFSettingData setting_data;
setting_data.page_width = 595;
setting_data.page_height = 842;
setting_data.page_margin = RectF(36, 36, 36, 36);
setting_data.font = Font(L"SimSun", Font::e_StyleFixedPitch, Font::e_CharsetGB2312, 0);
setting_data.text_size = 10;
setting_data.text_color = 0xFF000000;
setting_data.linespace = 2;
setting_data.is_break_page = false;

Convert::FromTXT(L"input.txt", L"output.pdf", setting_data);
java
import com.foxit.sdk.common.Font;
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.addon.conversion.Convert;
import com.foxit.sdk.addon.conversion.TXT2PDFSettingData;

// Make sure that SDK has already been initialized successfully.
TXT2PDFSettingData settingData = new TXT2PDFSettingData();
settingData.setPage_width(595);
settingData.setPage_height(842);
settingData.setPage_margin(new RectF(36, 36, 36, 36));
settingData.setFont(new Font("SimSun", Font.e_StyleFixedPitch, Font.e_CharsetGB2312, 0));
settingData.setText_size(10);
settingData.setText_color(0xFF000000);
settingData.setLinespace(2);
settingData.setIs_break_page(false);

Convert.fromTXT("input.txt", "output.pdf", settingData);
python
from FoxitPDFSDKPython3 import *

# Make sure that SDK has already been initialized successfully.
setting_data = TXT2PDFSettingData()
setting_data.page_width = 595
setting_data.page_height = 842
setting_data.page_margin = RectF(36, 36, 36, 36)
setting_data.font = Font("SimSun", Font.e_StyleFixedPitch, Font.e_CharsetGB2312, 0)
setting_data.text_size = 10
setting_data.text_color = 0xFF000000
setting_data.linespace = 2
setting_data.is_break_page = False

Convert.FromTXT("input.txt", "output.pdf", setting_data)
csharp
using foxit.common;
using foxit.addon.conversion;

// Make sure that SDK has already been initialized successfully.
TXT2PDFSettingData settingData = new TXT2PDFSettingData();
settingData.page_width = 595;
settingData.page_height = 842;
settingData.page_margin = new RectF(36, 36, 36, 36);
settingData.font = new Font("SimSun", Font.Styles.e_StyleFixedPitch, Font.Charsets.e_CharsetGB2312, 0);
settingData.text_size = 10;
settingData.text_color = 0xFF000000;
settingData.linespace = 2;
settingData.is_break_page = false;

Convert.FromTXT("input.txt", "output.pdf", settingData);

PDF → XML ​

使用 Convert::ToXML,将 PDF 导出为带结构的 XML。若输入不是 Tagged PDF,可通过 is_force_to_tagged_pdf 决定是否先自动打标签再导出;为 false 且文档无标签时转换失败。

导出过程中的图片可写到指定目录;目录为空时,默认在输出 XML 同级的 images 文件夹下生成。

c++
#include "include/addon/conversion/fs_convert.h"
using namespace foxit::addon::conversion;

// Make sure that SDK has already been initialized successfully.
bool ok = Convert::ToXML(
    L"input.pdf",
    L"",                 // password; empty if none
    L"output.xml",
    L"",                 // image folder; empty -> default "images" beside XML
    true);               // force tag when input is not tagged
if (!ok) {
  // 处理转换失败(例如未打标签且未强制打标签)。
  return;
}
java
import com.foxit.sdk.addon.conversion.Convert;

// Make sure that SDK has already been initialized successfully.
boolean ok = Convert.toXML(
    "input.pdf",
    "",
    "output.xml",
    "",
    true);
if (!ok) {
  // 处理转换失败(例如未打标签且未强制打标签)。
  return;
}
python
from FoxitPDFSDKPython3 import *

# Make sure that SDK has already been initialized successfully.
ok = Convert.ToXML("input.pdf", "", "output.xml", "", True)
if not ok:
    # 处理转换失败(例如未打标签且未强制打标签)。
    raise RuntimeError("Convert.ToXML failed")
csharp
using foxit.addon.conversion;

// Make sure that SDK has already been initialized successfully.
bool ok = Convert.ToXML(
    "input.pdf",
    "",
    "output.xml",
    "",
    true);
if (!ok) {
  // 处理转换失败(例如未打标签且未强制打标签)。
  return;
}

注意:这与表单数据的 Form::ExportToXML / ImportFromXML 不同。表单导入导出见 AcroForm。