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(true)
44 , enable_generate_footnotes_and_endnotes(false)
45 , enable_generate_page_rendered_break(false)
46 , max_blank_paragraphs_per_page_bottom(-1) { }
67 PDF2WordSettingData(
bool enable_retain_page_layout,
bool enable_generate_headers_and_footers,
bool enable_generate_footnotes_and_endnotes,
bool enable_generate_page_rendered_break,
int max_blank_paragraphs_per_page_bottom) {
68 this->enable_retain_page_layout = enable_retain_page_layout;
69 this->enable_generate_headers_and_footers = enable_generate_headers_and_footers;
70 this->enable_generate_footnotes_and_endnotes = enable_generate_footnotes_and_endnotes;
71 this->enable_generate_page_rendered_break = enable_generate_page_rendered_break;
72 this->max_blank_paragraphs_per_page_bottom = max_blank_paragraphs_per_page_bottom;
82 PDF2WordSettingData & operator = (
const PDF2WordSettingData & data) {
83 enable_retain_page_layout = data.enable_retain_page_layout;
84 enable_generate_headers_and_footers = data.enable_generate_headers_and_footers;
85 enable_generate_footnotes_and_endnotes = data.enable_generate_footnotes_and_endnotes;
86 enable_generate_page_rendered_break = data.enable_generate_page_rendered_break;
87 max_blank_paragraphs_per_page_bottom = data.max_blank_paragraphs_per_page_bottom;
112 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) {
113 this->enable_retain_page_layout = enable_retain_page_layout;
114 this->enable_generate_headers_and_footers = enable_generate_headers_and_footers;
115 this->enable_generate_footnotes_and_endnotes = enable_generate_footnotes_and_endnotes;
116 this->enable_generate_page_rendered_break = enable_generate_page_rendered_break;
117 this->max_blank_paragraphs_per_page_bottom = max_blank_paragraphs_per_page_bottom;
126 bool enable_retain_page_layout;
135 bool enable_generate_headers_and_footers;
144 bool enable_generate_footnotes_and_endnotes;
156 bool enable_generate_page_rendered_break;
166 int max_blank_paragraphs_per_page_bottom;
170 class PDF2PowerPointSettingData FS_FINAL :
public Object{
173 PDF2PowerPointSettingData()
174 : enable_aggressively_split_sections(false)
175 , enable_adapt_to_largest_page(false) { }
193 PDF2PowerPointSettingData(
bool enable_aggressively_split_sections,
bool enable_adapt_to_largest_page) {
194 this->enable_aggressively_split_sections = enable_aggressively_split_sections;
195 this->enable_adapt_to_largest_page = enable_adapt_to_largest_page;
205 PDF2PowerPointSettingData & operator = (
const PDF2PowerPointSettingData & data) {
206 enable_aggressively_split_sections = data.enable_aggressively_split_sections;
207 enable_adapt_to_largest_page = data.enable_adapt_to_largest_page;
229 void Set(
bool enable_aggressively_split_sections,
bool enable_adapt_to_largest_page) {
230 this->enable_aggressively_split_sections = enable_aggressively_split_sections;
231 this->enable_adapt_to_largest_page = enable_adapt_to_largest_page;
242 bool enable_aggressively_split_sections;
254 bool enable_adapt_to_largest_page;
258 class PDF2ExcelSettingData FS_FINAL :
public Object{
265 typedef enum _WorkbookSettings {
267 e_WorkbookSettingsDocument = 0,
269 e_WorkbookSettingsEachTable = 1,
271 e_WorkbookSettingsEachPage = 2
275 PDF2ExcelSettingData()
277 , workbook_settings(PDF2ExcelSettingData::e_WorkbookSettingsEachPage)
278 , thousands_separator(
"")
279 , enable_aggressive_table_repair(true)
280 , include_watermarks(false) { }
295 PDF2ExcelSettingData(
String decimal_symbol,
String thousands_separator, WorkbookSettings workbook_settings,
bool enable_aggressive_table_repair,
bool include_watermarks) {
296 this->decimal_symbol = decimal_symbol;
297 this->thousands_separator = thousands_separator;
298 this->workbook_settings = workbook_settings;
299 this->enable_aggressive_table_repair = enable_aggressive_table_repair;
300 this->include_watermarks = include_watermarks;
310 PDF2ExcelSettingData & operator = (
const PDF2ExcelSettingData & data) {
311 this->decimal_symbol = data.decimal_symbol;
312 this->thousands_separator = data.thousands_separator;
313 this->workbook_settings = data.workbook_settings;
314 this->enable_aggressive_table_repair = data.enable_aggressive_table_repair;
315 this->include_watermarks = data.include_watermarks;
334 void Set(
String decimal_symbol,
String thousands_separator, WorkbookSettings workbook_settings,
bool enable_aggressive_table_repair,
bool include_watermarks) {
335 this->decimal_symbol = decimal_symbol;
336 this->thousands_separator = thousands_separator;
337 this->workbook_settings = workbook_settings;
338 this->enable_aggressive_table_repair = enable_aggressive_table_repair;
339 this->include_watermarks = include_watermarks;
371 String thousands_separator;
379 WorkbookSettings workbook_settings;
389 bool enable_aggressive_table_repair;
400 bool include_watermarks;
404 class PDF2OfficeSettingData FS_FINAL :
public Object {
407 PDF2OfficeSettingData()
408 : enable_ml_recognition(false)
409 , include_pdf_comments(true)
410 , enable_trailing_space(true)
411 , include_images(true)
413 , enable_matching_system_fonts(false) { }
453 PDF2OfficeSettingData(
const wchar_t* metrics_data_folder_path,
bool enable_ml_recognition,
const common::Range& page_range,
bool include_pdf_comments,
454 const PDF2WordSettingData& word_setting_data,
const PDF2PowerPointSettingData& power_point_setting_data,
455 const PDF2ExcelSettingData& excel_setting_data,
bool enable_trailing_space,
bool include_images,
int timeout,
456 bool enable_matching_system_fonts) {
457 this->metrics_data_folder_path = metrics_data_folder_path;
458 this->enable_ml_recognition = enable_ml_recognition;
459 this->page_range = page_range;
460 this->include_pdf_comments = include_pdf_comments;
461 this->word_setting_data = word_setting_data;
462 this->power_point_setting_data = power_point_setting_data;
463 this->excel_setting_data = excel_setting_data;
464 this->enable_trailing_space = enable_trailing_space;
465 this->include_images = include_images;
466 this->timeout = timeout;
467 this->enable_matching_system_fonts = enable_matching_system_fonts;
477 PDF2OfficeSettingData &operator = (
const PDF2OfficeSettingData& data) {
478 metrics_data_folder_path = data.metrics_data_folder_path;
479 enable_ml_recognition = data.enable_ml_recognition;
480 page_range = data.page_range;
481 include_pdf_comments = data.include_pdf_comments;
482 word_setting_data = data.word_setting_data;
483 power_point_setting_data = data.power_point_setting_data;
484 excel_setting_data = data.excel_setting_data;
485 enable_trailing_space = data.enable_trailing_space;
486 include_images = data.include_images;
487 timeout = data.timeout;
488 enable_matching_system_fonts = data.enable_matching_system_fonts;
532 void Set(
const wchar_t* metrics_data_folder_path,
bool enable_ml_recognition,
const common::Range &page_range,
bool include_pdf_comments,
533 const PDF2WordSettingData& word_setting_data,
const PDF2PowerPointSettingData& power_point_setting_data,
534 const PDF2ExcelSettingData& excel_setting_data,
bool enable_trailing_space,
bool include_images,
int timeout,
535 bool enable_matching_system_fonts) {
536 this->metrics_data_folder_path = metrics_data_folder_path;
537 this->enable_ml_recognition = enable_ml_recognition;
538 this->page_range = page_range;
539 this->include_pdf_comments = include_pdf_comments;
540 this->word_setting_data = word_setting_data;
541 this->power_point_setting_data = power_point_setting_data;
542 this->excel_setting_data = excel_setting_data;
543 this->enable_trailing_space = enable_trailing_space;
544 this->include_images = include_images;
545 this->timeout = timeout;
546 this->enable_matching_system_fonts = enable_matching_system_fonts;
557 WString metrics_data_folder_path;
571 bool enable_ml_recognition;
580 common::Range page_range;
589 bool include_pdf_comments;
597 PDF2WordSettingData word_setting_data;
605 PDF2PowerPointSettingData power_point_setting_data;
613 PDF2ExcelSettingData excel_setting_data;
626 bool enable_trailing_space;
661 bool enable_matching_system_fonts;
668 class ConvertCallback {
675 virtual bool NeedToPause() = 0;
685 virtual void ProgressNotify(
int converted_count,
int total_count) = 0;
693 class ConvertCheckCallback {
704 virtual bool CheckUserPermissions(
uint32 user_permissions) = 0;
715 class PDF2Office FS_FINAL :
public Base {
733 static void Initialize(
const wchar_t* library_path,
const wchar_t* fx_engine_path = L
"");
742 static void Release();
751 static String GetVersion();
769 static bool SetConvertCheckCallback(ConvertCheckCallback* convert_check_callback);
796 static common::Progressive StartConvertToWord(
const wchar_t* src_pdf_path,
const wchar_t* src_pdf_password,
const wchar_t* saved_word_file_path,
797 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
826 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
853 static common::Progressive StartConvertToExcel(
const wchar_t* src_pdf_path,
const wchar_t* src_pdf_password,
const wchar_t* saved_excel_file_path,
854 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
883 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
910 static common::Progressive StartConvertToPowerPoint(
const wchar_t* src_pdf_path,
const wchar_t* src_pdf_password,
const wchar_t* saved_ppt_file_path,
911 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
940 const PDF2OfficeSettingData& setting_data, ConvertCallback* convert_callback =
NULL);
949 #endif //defined(WIN32)