14 #ifndef FS_PDF2OFFICE_H_
15 #define FS_PDF2OFFICE_H_
16 #if defined(_WIN32) || defined(_WIN64) || (defined(__linux__) && !defined(__ANDROID__))
32 namespace conversion {
36 namespace pdf2office {
38 class PDF2WordSettingData FS_FINAL :
public Object{
42 : enable_retain_page_layout(false)
43 , enable_generate_headers_and_footers(false)
44 , enable_generate_footnotes_and_endnotes(false)
45 , enable_generate_page_rendered_break(false) { }
65 PDF2WordSettingData(
bool enable_retain_page_layout,
bool enable_generate_headers_and_footers,
bool enable_generate_footnotes_and_endnotes,
bool enable_generate_page_rendered_break) {
66 this->enable_retain_page_layout = enable_retain_page_layout;
67 this->enable_generate_headers_and_footers = enable_generate_headers_and_footers;
68 this->enable_generate_footnotes_and_endnotes = enable_generate_footnotes_and_endnotes;
69 this->enable_generate_page_rendered_break = enable_generate_page_rendered_break;
79 PDF2WordSettingData & operator = (
const PDF2WordSettingData & data) {
80 enable_retain_page_layout = data.enable_retain_page_layout;
81 enable_generate_headers_and_footers = data.enable_generate_headers_and_footers;
82 enable_generate_footnotes_and_endnotes = data.enable_generate_footnotes_and_endnotes;
83 enable_generate_page_rendered_break = data.enable_generate_page_rendered_break;
106 void Set(
bool enable_retain_page_layout,
bool enable_generate_headers_and_footers,
bool enable_generate_footnotes_and_endnotes,
bool enable_generate_page_rendered_break) {
107 this->enable_retain_page_layout = enable_retain_page_layout;
108 this->enable_generate_headers_and_footers = enable_generate_headers_and_footers;
109 this->enable_generate_footnotes_and_endnotes = enable_generate_footnotes_and_endnotes;
110 this->enable_generate_page_rendered_break = enable_generate_page_rendered_break;
119 bool enable_retain_page_layout;
128 bool enable_generate_headers_and_footers;
137 bool enable_generate_footnotes_and_endnotes;
149 bool enable_generate_page_rendered_break;
153 class PDF2PowerPointSettingData FS_FINAL :
public Object{
156 PDF2PowerPointSettingData()
157 : enable_aggressively_split_sections(false) {}
168 PDF2PowerPointSettingData(
bool enable_aggressively_split_sections) {
169 this->enable_aggressively_split_sections = enable_aggressively_split_sections;
179 PDF2PowerPointSettingData & operator = (
const PDF2PowerPointSettingData & data) {
180 enable_aggressively_split_sections = data.enable_aggressively_split_sections;
195 void Set(
bool enable_aggressively_split_sections) {
196 this->enable_aggressively_split_sections = enable_aggressively_split_sections;
207 bool enable_aggressively_split_sections;
211 class PDF2ExcelSettingData FS_FINAL :
public Object{
218 typedef enum _WorkbookSettings {
220 e_WorkbookSettingsDocument = 0,
222 e_WorkbookSettingsEachTable = 1,
224 e_WorkbookSettingsEachPage = 2
228 PDF2ExcelSettingData()
230 , workbook_settings(PDF2ExcelSettingData::e_WorkbookSettingsEachPage)
231 , thousands_separator(
"") { }
240 PDF2ExcelSettingData(
String decimal_symbol,
String thousands_separator, WorkbookSettings workbook_settings) {
241 this->decimal_symbol = decimal_symbol;
242 this->thousands_separator = thousands_separator;
243 this->workbook_settings = workbook_settings;
253 PDF2ExcelSettingData & operator = (
const PDF2ExcelSettingData & data) {
254 this->decimal_symbol = data.decimal_symbol;
255 this->thousands_separator = data.thousands_separator;
256 this->workbook_settings = data.workbook_settings;
269 void Set(
String decimal_symbol,
String thousands_separator, WorkbookSettings workbook_settings) {
270 this->decimal_symbol = decimal_symbol;
271 this->thousands_separator = thousands_separator;
272 this->workbook_settings = workbook_settings;
304 String thousands_separator;
312 WorkbookSettings workbook_settings;
316 class PDF2OfficeSettingData FS_FINAL :
public Object {
319 PDF2OfficeSettingData()
320 : enable_ml_recognition(false)
321 , include_pdf_comments(true)
322 , enable_trailing_space(true)
323 , include_images(true)
361 PDF2OfficeSettingData(
const wchar_t* metrics_data_folder_path,
bool enable_ml_recognition,
const common::Range& page_range,
bool include_pdf_comments,
362 const PDF2WordSettingData& word_setting_data,
const PDF2PowerPointSettingData& power_point_setting_data,
363 const PDF2ExcelSettingData& excel_setting_data,
bool enable_trailing_space,
bool include_images,
int timeout) {
364 this->metrics_data_folder_path = metrics_data_folder_path;
365 this->enable_ml_recognition = enable_ml_recognition;
366 this->page_range = page_range;
367 this->include_pdf_comments = include_pdf_comments;
368 this->word_setting_data = word_setting_data;
369 this->power_point_setting_data = power_point_setting_data;
370 this->excel_setting_data = excel_setting_data;
371 this->enable_trailing_space = enable_trailing_space;
372 this->include_images = include_images;
373 this->timeout = timeout;
383 PDF2OfficeSettingData &operator = (
const PDF2OfficeSettingData& data) {
384 metrics_data_folder_path = data.metrics_data_folder_path;
385 enable_ml_recognition = data.enable_ml_recognition;
386 page_range = data.page_range;
387 include_pdf_comments = data.include_pdf_comments;
388 word_setting_data = data.word_setting_data;
389 power_point_setting_data = data.power_point_setting_data;
390 excel_setting_data = data.excel_setting_data;
391 enable_trailing_space = data.enable_trailing_space;
392 include_images = data.include_images;
393 timeout = data.timeout;
434 void Set(
const wchar_t* metrics_data_folder_path,
bool enable_ml_recognition,
const common::Range &page_range,
bool include_pdf_comments,
435 const PDF2WordSettingData& word_setting_data,
const PDF2PowerPointSettingData& power_point_setting_data,
436 const PDF2ExcelSettingData& excel_setting_data,
bool enable_trailing_space,
bool include_images,
int timeout) {
437 this->metrics_data_folder_path = metrics_data_folder_path;
438 this->enable_ml_recognition = enable_ml_recognition;
439 this->page_range = page_range;
440 this->include_pdf_comments = include_pdf_comments;
441 this->word_setting_data = word_setting_data;
442 this->power_point_setting_data = power_point_setting_data;
443 this->excel_setting_data = excel_setting_data;
444 this->enable_trailing_space = enable_trailing_space;
445 this->include_images = include_images;
446 this->timeout = timeout;
457 WString metrics_data_folder_path;
471 bool enable_ml_recognition;
480 common::Range page_range;
489 bool include_pdf_comments;
497 PDF2WordSettingData word_setting_data;
505 PDF2PowerPointSettingData power_point_setting_data;
513 PDF2ExcelSettingData excel_setting_data;
526 bool enable_trailing_space;
557 class ConvertCallback {
564 virtual bool NeedToPause() = 0;
574 virtual void ProgressNotify(
int converted_count,
int total_count) = 0;
582 class ConvertCheckCallback {
593 virtual bool CheckUserPermissions(
uint32 user_permissions) = 0;
604 class PDF2Office FS_FINAL :
public Base {
622 static void Initialize(
const wchar_t* library_path,
const wchar_t* fx_engine_path = L
"");
631 static void Release();
649 static bool SetConvertCheckCallback(ConvertCheckCallback* convert_check_callback);
676 static common::Progressive StartConvertToWord(
const wchar_t* src_pdf_path,
const wchar_t* src_pdf_password,
const wchar_t* saved_word_file_path,
677 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
706 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
733 static common::Progressive StartConvertToExcel(
const wchar_t* src_pdf_path,
const wchar_t* src_pdf_password,
const wchar_t* saved_excel_file_path,
734 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
763 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
790 static common::Progressive StartConvertToPowerPoint(
const wchar_t* src_pdf_path,
const wchar_t* src_pdf_password,
const wchar_t* saved_ppt_file_path,
791 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
820 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
829 #endif //defined(WIN32)