图像 / 文本 / 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。