ConverterExcelDialogViewModel.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. using ComDocumentAIKit;
  2. using ComPDFKit_Conversion.Options;
  3. using ComPDFKitViewer.PdfViewer;
  4. using Microsoft.Office.Interop.Excel;
  5. using PDF_Master.CustomControl;
  6. using PDF_Master.Helper;
  7. using PDF_Master.Model;
  8. using PDF_Master.Model.Dialog.ConverterDialogs;
  9. using PDF_Master.Model.Dialog.HomePageToolsDialogs.HomePageBatchProcessing;
  10. using PDF_Master.ViewModels.Dialog.HomePageToolsDialogs.HomePageBatchProcessing.HomePageConverter;
  11. using Prism.Commands;
  12. using Prism.Mvvm;
  13. using Prism.Services.Dialogs;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Diagnostics;
  17. using System.Globalization;
  18. using System.IO;
  19. using System.Linq;
  20. using System.Windows.Forms;
  21. using DialogResult = Prism.Services.Dialogs.DialogResult;
  22. namespace PDF_Master.ViewModels.Dialog.ConverterDialogs
  23. {
  24. public class ConverterExcelDialogViewModel : BindableBase, IDialogAware
  25. {
  26. #region 文案
  27. private string T_title;
  28. public string T_Title
  29. {
  30. get { return T_title; }
  31. set
  32. {
  33. SetProperty(ref T_title, value);
  34. }
  35. }
  36. private string T_yes;
  37. public string T_YES
  38. {
  39. get { return T_yes; }
  40. set
  41. {
  42. SetProperty(ref T_yes, value);
  43. }
  44. }
  45. private string T_no;
  46. public string T_No
  47. {
  48. get { return T_no; }
  49. set
  50. {
  51. SetProperty(ref T_no, value);
  52. }
  53. }
  54. private string T_onlyTables;
  55. public string T_OnlyTables
  56. {
  57. get { return T_onlyTables; }
  58. set
  59. {
  60. SetProperty(ref T_onlyTables, value);
  61. }
  62. }
  63. private string T_allContents;
  64. public string T_AllContents
  65. {
  66. get { return T_allContents; }
  67. set
  68. {
  69. SetProperty(ref T_allContents, value);
  70. }
  71. }
  72. private string T_eachPageAllContents;
  73. public string T_EachPageAllContents
  74. {
  75. get { return T_eachPageAllContents; }
  76. set
  77. {
  78. SetProperty(ref T_eachPageAllContents, value);
  79. }
  80. }
  81. private string T_fileAllContents;
  82. public string T_FileAllContents
  83. {
  84. get { return T_fileAllContents; }
  85. set
  86. {
  87. SetProperty(ref T_fileAllContents, value);
  88. }
  89. }
  90. private string T_eachTableOnlyTables;
  91. public string T_EachTableOnlyTables
  92. {
  93. get { return T_eachTableOnlyTables; }
  94. set
  95. {
  96. SetProperty(ref T_eachTableOnlyTables, value);
  97. }
  98. }
  99. private string T_eachPageOnlyTables;
  100. public string T_EachPageOnlyTables
  101. {
  102. get { return T_eachPageOnlyTables; }
  103. set
  104. {
  105. SetProperty(ref T_eachPageOnlyTables, value);
  106. }
  107. }
  108. private string T_fileOnlyTables;
  109. public string T_FileOnlyTables
  110. {
  111. get { return T_fileOnlyTables; }
  112. set
  113. {
  114. SetProperty(ref T_fileOnlyTables, value);
  115. }
  116. }
  117. private string T_onlyText;
  118. public string T_OnlyText
  119. {
  120. get { return T_onlyText; }
  121. set
  122. {
  123. SetProperty(ref T_onlyText, value);
  124. }
  125. }
  126. private string T_settings;
  127. public string T_Settings
  128. {
  129. get { return T_settings; }
  130. set
  131. {
  132. SetProperty(ref T_settings, value);
  133. }
  134. }
  135. private string T_pageRange;
  136. public string T_PageRange
  137. {
  138. get { return T_pageRange; }
  139. set
  140. {
  141. SetProperty(ref T_pageRange, value);
  142. }
  143. }
  144. private void IntString()
  145. {
  146. T_Title = App.MainPageLoader.GetString("Convert_PDFToExcelTitle");
  147. T_YES = App.MainPageLoader.GetString("Convert_Yes");
  148. T_No = App.MainPageLoader.GetString("Convert_No");
  149. T_AllContents = App.MainPageLoader.GetString("Convert_PDFToExcelAllContents");
  150. T_EachPageAllContents = App.MainPageLoader.GetString("Convert_PDFToExcelAllContentsEachPage");
  151. T_FileAllContents = App.MainPageLoader.GetString("Convert_PDFToExcelAllContentsFile");
  152. T_OnlyTables = App.MainPageLoader.GetString("Convert_PDFToExcelAllOnlyTables");
  153. T_EachTableOnlyTables = App.MainPageLoader.GetString("Convert_PDFToExcelAllOnlyTablesEachTable");
  154. T_EachPageOnlyTables = App.MainPageLoader.GetString("Convert_PDFToExcelAllOnlyTablesEachPage");
  155. T_FileOnlyTables = App.MainPageLoader.GetString("Convert_PDFToExcelAllOnlyTablesFile");
  156. T_OnlyText = App.MainPageLoader.GetString("Convert_PDFToExcelOnlyText");
  157. T_Settings = App.MainPageLoader.GetString("Convert_PDFToExcelSettings");
  158. T_PageRange = App.MainPageLoader.GetString("Convert_PDFPageRange");
  159. }
  160. #endregion 参数和属性
  161. public string Title => "";
  162. public event Action<IDialogResult> RequestClose;
  163. #region 参数和属性
  164. public ConverterExcelDialogModel ConverterExcelModel = new ConverterExcelDialogModel();
  165. public CPDFViewer currentViewer;
  166. public string CurrentPageIndex = "1";
  167. public bool IsCurrentPageIndex = false;
  168. public IDialogService dialogs;
  169. public string PageRangeText { set; get; } = "0";
  170. public string PageRangeSelectIndex { set; get; } = "0";
  171. private int _anyContentSelectIndex = 0;
  172. public int AnyContentSelectIndex
  173. {
  174. get { return _anyContentSelectIndex; }
  175. set
  176. {
  177. SetProperty(ref _anyContentSelectIndex, value);
  178. AnyContent(_anyContentSelectIndex);
  179. }
  180. }
  181. private int _onlyTableSelectIndex = 0;
  182. public int OnlyTableSelectIndex
  183. {
  184. get { return _onlyTableSelectIndex; }
  185. set
  186. {
  187. SetProperty(ref _onlyTableSelectIndex, value);
  188. OnlyTable(_onlyTableSelectIndex);
  189. }
  190. }
  191. private int maxPageRange = 0;
  192. public int MaxPageRange
  193. {
  194. get { return maxPageRange; }
  195. set
  196. {
  197. SetProperty(ref maxPageRange, value);
  198. }
  199. }
  200. private bool oCRCheckBoxIsCheckBox = true;
  201. public bool OCRCheckBoxIsCheckBox
  202. {
  203. get { return oCRCheckBoxIsCheckBox; }
  204. set
  205. {
  206. SetProperty(ref oCRCheckBoxIsCheckBox, value);
  207. ConverterExcelModel.Options.IsAllowOCR = oCRCheckBoxIsCheckBox;
  208. }
  209. }
  210. private bool oCRIsEnable = true;
  211. public bool OCRIsEnable
  212. {
  213. get { return oCRIsEnable; }
  214. set
  215. {
  216. SetProperty(ref oCRIsEnable, value);
  217. if (value == true)
  218. {
  219. ConverterExcelModel.Options.IsAllowOCR = OCRCheckBoxIsCheckBox;
  220. }
  221. else
  222. {
  223. ConverterExcelModel.Options.IsAllowOCR = false;
  224. }
  225. }
  226. }
  227. private int languageSelectedIndex = 2;
  228. public int LanguageSelectedIndex
  229. {
  230. get { return languageSelectedIndex; }
  231. set
  232. {
  233. SetProperty(ref languageSelectedIndex, value);
  234. SelectLanguage(languageSelectedIndex);
  235. }
  236. }
  237. private Dictionary<string, string> CheckPageSelect = new Dictionary<string, string>();
  238. private void InitCheckPageSelect()
  239. {
  240. CheckPageSelect.Clear();
  241. if (!IsCurrentPageIndex)
  242. {
  243. CheckPageSelect.Add("0", "0");
  244. CheckPageSelect.Add("1", "1");
  245. CheckPageSelect.Add("2", "2");
  246. CheckPageSelect.Add("3", "3");
  247. CheckPageSelect.Add("4", "4");
  248. }
  249. else
  250. {
  251. CheckPageSelect.Add("0", "0");
  252. CheckPageSelect.Add("1", "-2");
  253. CheckPageSelect.Add("2", "1");
  254. CheckPageSelect.Add("3", "2");
  255. CheckPageSelect.Add("4", "3");
  256. }
  257. }
  258. #endregion
  259. #region 委托声明
  260. public DelegateCommand<string> RadioButtonCommand { get; set; }
  261. public DelegateCommand CancelCommand { get; set; }
  262. public DelegateCommand ConverterCommnad { get; set; }
  263. public DelegateCommand<object> CmbPageSelectionChanged { get; set; }
  264. public DelegateCommand<object> CmbPageTextChanged { get; set; }
  265. public DelegateCommand BatchConverterCommand { get; set; }
  266. public DelegateCommand<object> PreviewCancelDownCommand { get; set; }
  267. public DelegateCommand SetCustomPageRangeCommand { get; set; }
  268. #endregion
  269. public ConverterExcelDialogViewModel(IDialogService dialogService)
  270. {
  271. IntString();
  272. CancelCommand = new DelegateCommand(cancel);
  273. ConverterCommnad = new DelegateCommand(converter);
  274. RadioButtonCommand = new DelegateCommand<string>(radiobutton);
  275. SetCustomPageRangeCommand = new DelegateCommand(SetCustomPageRange);
  276. CmbPageSelectionChanged = new DelegateCommand<object>(CmbPageSelectionChangedEvent);
  277. CmbPageTextChanged = new DelegateCommand<object>(CmbPageTextChangedEvent);
  278. PreviewCancelDownCommand = new DelegateCommand<object>(PreviewCancelDown);
  279. BatchConverterCommand = new DelegateCommand(BatchConverter);
  280. dialogs = dialogService;
  281. }
  282. #region 逻辑函数
  283. public void SetCustomPageRange()
  284. {
  285. if (PageRangeSelectIndex == CheckPageSelect["4"])
  286. {
  287. List<int> PageIndexLists = new List<int>();
  288. if (!CommonHelper.GetPagesInRange(ref PageIndexLists, PageRangeText, currentViewer.Document.PageCount, new char[] { ',' }, new char[] { '-' }))
  289. { //TODO
  290. //AlertsMessage alertsMessage = new AlertsMessage();
  291. //alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  292. //if (alertsMessage.result == ContentResult.Ok)
  293. //{
  294. // return;
  295. //}
  296. //else
  297. //{
  298. // //this.eventAggregator.GetEvent<DeleteWatermarkEvent>().Publish(new EnumDeleteUnicode
  299. // //{
  300. // // Unicode = Unicode,
  301. // // Status = EnumDelete.StatusCreate
  302. // //});
  303. // return;
  304. //}
  305. }
  306. }
  307. }
  308. private void cancel()
  309. {
  310. RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
  311. }
  312. private void PreviewCancelDown(object e)
  313. {
  314. var PageRangeComboBox = e as WritableComboBox;
  315. if (PageRangeComboBox != null)
  316. {
  317. PageRangeComboBox.IsloseFocus = false;
  318. }
  319. }
  320. private void converter()
  321. {
  322. if (PageRangeSelectIndex == CheckPageSelect["4"])
  323. {
  324. List<int> PageIndexLists = new List<int>();
  325. if (!CommonHelper.GetPagesInRange(ref PageIndexLists, PageRangeText, currentViewer.Document.PageCount, new char[] { ',' }, new char[] { '-' }))
  326. { //TODO
  327. AlertsMessage alertsMessage = new AlertsMessage();
  328. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  329. if (alertsMessage.result == ContentResult.Ok)
  330. {
  331. return;
  332. }
  333. else
  334. {
  335. //this.eventAggregator.GetEvent<DeleteWatermarkEvent>().Publish(new EnumDeleteUnicode
  336. //{
  337. // Unicode = Unicode,
  338. // Status = EnumDelete.StatusCreate
  339. //});
  340. return;
  341. }
  342. }
  343. }
  344. System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog();
  345. /*
  346. *设置这个对话框的起始保存路径
  347. */
  348. sfd.InitialDirectory = currentViewer.Document.FilePath;
  349. /*
  350. *设置保存的文件的类型,注意过滤器的语法 例子:“文件类型|*.后缀名;*.后缀名;”
  351. */
  352. sfd.Filter = "Excel|*.xlsx;";
  353. /*
  354. *调用ShowDialog()方法显示该对话框,该方法的返回值代表用户是否点击了确定按钮
  355. */
  356. sfd.FileName = currentViewer.Document.FileName + ".xlsx";
  357. /*
  358. * 做一些工作
  359. */
  360. if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  361. {
  362. ConverterExcelModel.OutputPath = sfd.FileName;
  363. try { if (File.Exists(ConverterExcelModel.OutputPath)) File.Delete(ConverterExcelModel.OutputPath); }
  364. catch
  365. {
  366. AlertsMessage alertsMessage = new AlertsMessage();
  367. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("FileNotExistWarning"), App.ServiceLoader.GetString("Text_ok"));
  368. return;
  369. }
  370. }
  371. else
  372. {
  373. return;
  374. }
  375. HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterExcelModel.PageRange, PageRangeText, !IsCurrentPageIndex, CurrentPageIndex);
  376. if (ConverterExcelModel.PageRange == "")
  377. {
  378. Trace.WriteLine("输入不对");
  379. AlertsMessage alertsMessage = new AlertsMessage();
  380. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  381. return;
  382. }
  383. char[] enumerationSeparator = new char[] { ',' };
  384. char[] rangeSeparator = new char[] { '-' };
  385. if (!CommonHelper.GetPagesInRange(ref ConverterExcelModel.PageIndexLists, ConverterExcelModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
  386. { //TODO
  387. Trace.WriteLine("输入不对");
  388. AlertsMessage alertsMessage = new AlertsMessage();
  389. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  390. return;
  391. }
  392. ConverterExcelModel.excelOptions = ConverterExcelModel.ExcelOptions();
  393. //DialogParameters value = new DialogParameters();
  394. //value.Add(ParameterNames.ConverterType, "Excel");
  395. //value.Add(ParameterNames.ConverterTypeModel, ConverterExcelModel);
  396. var dialogresult = new DialogResult(ButtonResult.OK);
  397. dialogresult.Parameters.Add(ParameterNames.ConverterType, "Excel");
  398. dialogresult.Parameters.Add(ParameterNames.ConverterTypeModel, ConverterExcelModel);
  399. RequestClose.Invoke(dialogresult);
  400. //RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
  401. //dialogs.ShowDialog(DialogNames.ConverterProgressBarDialog, value, e =>
  402. //{
  403. //});
  404. }
  405. private void CmbPageSelectionChangedEvent(object e)
  406. {
  407. ///这里采用的是将预览UI控件传递过来的方式,为下下策
  408. ///正确的方式应该是 通过声明一些属性,再通过绑定来更新预览控件对应值的形式
  409. ///但是目前发现自定义控件的依赖属性绑定有些问题,因此先用此方法,将业务逻辑代码先调整到VM里
  410. var ConverterPreview = e as PageTurningPreview;
  411. if (ConverterPreview != null)
  412. {
  413. string PageRangeSelectIndex = this.PageRangeSelectIndex;
  414. var currentViewer = this.currentViewer;
  415. string PageRange = "";
  416. var PageRangeText = this.PageRangeText;
  417. if (PageRangeSelectIndex == CheckPageSelect["0"] || PageRangeSelectIndex == CheckPageSelect["2"] || PageRangeSelectIndex == CheckPageSelect["3"] || PageRangeSelectIndex == CheckPageSelect["4"])
  418. {
  419. if (PageRangeSelectIndex == CheckPageSelect["4"]) { HomePageEditHelper.GetPagerange("0", currentViewer, ref PageRange, PageRangeText, !IsCurrentPageIndex); } else { HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, !IsCurrentPageIndex); }
  420. char[] enumerationSeparator = new char[] { ',' };
  421. char[] rangeSeparator = new char[] { '-' };
  422. if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
  423. { //TODO
  424. ConverterPreview.PageIndexLists.Add(0);
  425. Trace.WriteLine("输入不对");
  426. AlertsMessage alertsMessage = new AlertsMessage();
  427. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  428. return;
  429. }
  430. }
  431. if (PageRangeSelectIndex == CheckPageSelect["1"])
  432. {
  433. char[] enumerationSeparator = new char[] { ',' };
  434. char[] rangeSeparator = new char[] { '-' };
  435. if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (currentViewer.CurrentIndex + 1).ToString()
  436. , currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
  437. { //TODO
  438. Trace.WriteLine("输入不对");
  439. AlertsMessage alertsMessage = new AlertsMessage();
  440. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  441. return;
  442. }
  443. this.CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
  444. }
  445. // ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
  446. ConverterPreview.PageIndex.Text = ConverterPreview.PageIndexLists.Count.ToString();
  447. ConverterPreview.CurrentIndex = 0;
  448. }
  449. }
  450. private void CmbPageTextChangedEvent(object e)
  451. {
  452. var ConverterPreview = e as PageTurningPreview;
  453. if (ConverterPreview != null)
  454. {
  455. if (ConverterPreview != null)
  456. {
  457. string PageRangeSelectIndex = this.PageRangeSelectIndex;
  458. var currentViewer = this.currentViewer;
  459. string PageRange = "";
  460. var PageRangeText = this.PageRangeText;
  461. HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, !IsCurrentPageIndex);
  462. char[] enumerationSeparator = new char[] { ',' };
  463. char[] rangeSeparator = new char[] { '-' };
  464. if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
  465. { //TODO
  466. HomePageEditHelper.GetPagerange("0", currentViewer, ref PageRange, PageRangeText, !IsCurrentPageIndex);
  467. if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
  468. { //TODO
  469. ConverterPreview.PageIndexLists.Add(0);
  470. Trace.WriteLine("输入不对");
  471. AlertsMessage alertsMessage = new AlertsMessage();
  472. alertsMessage.ShowDialog("", App.MainPageLoader.GetString("PageRangeWarning"), App.ServiceLoader.GetString("Text_ok"));
  473. return;
  474. }
  475. ConverterPreview.PageIndex.Text = ConverterPreview.PageIndexLists.Count.ToString();
  476. ConverterPreview.CurrentIndex = 0;
  477. return;
  478. }
  479. else
  480. {
  481. // ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
  482. ConverterPreview.PageIndex.Text = ConverterPreview.PageIndexLists.Count.ToString();
  483. ConverterPreview.CurrentIndex = 0;
  484. }
  485. }
  486. }
  487. }
  488. private void BatchConverter()
  489. {
  490. DialogParameters convertpdftoword = new DialogParameters();
  491. convertpdftoword.Add(ParameterNames.BatchProcessing_Name, "0");
  492. convertpdftoword.Add("ConverterTypeIndex", 1);
  493. HomePageBatchProcessingDialogModel.FilePaths = new List<string> { currentViewer.Document.FilePath.ToString() };
  494. HomePageBatchProcessingDialogModel.BatchProcessingIndex = 1;
  495. convertpdftoword.Add(ParameterNames.FilePath, new string[] { currentViewer.Document.FilePath.ToString() });
  496. dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdftoword, e => { });
  497. }
  498. private void radiobutton(string e)
  499. {
  500. string radioButton = e;
  501. if (radioButton != null)
  502. {
  503. switch (radioButton)
  504. {
  505. case "AnyContentRadioBtn":
  506. OCRIsEnable = true;
  507. AnyContent(AnyContentSelectIndex);
  508. break;
  509. case "OnlyTableRadioBtn":
  510. OnlyTable(OnlyTableSelectIndex);
  511. OCRIsEnable = false;
  512. break;
  513. case "OnlyTextRadioBtn":
  514. OCRIsEnable = true;
  515. ConverterExcelModel.Options.WorksheetOpts = WorksheetOptions.ForTheDocument;
  516. ConverterExcelModel.Options.ContentOpts = ContentOptions.OnlyText;
  517. break;
  518. default:
  519. break;
  520. }
  521. }
  522. }
  523. private void AnyContent(int SelectedIndex)
  524. {
  525. switch (SelectedIndex)
  526. {
  527. case 0:
  528. ConverterExcelModel.Options.WorksheetOpts = WorksheetOptions.ForEachPage;
  529. ConverterExcelModel.Options.ContentOpts = ContentOptions.AllContent;
  530. break;
  531. case 1:
  532. ConverterExcelModel.Options.WorksheetOpts = WorksheetOptions.ForTheDocument;
  533. ConverterExcelModel.Options.ContentOpts = ContentOptions.AllContent;
  534. break;
  535. default:
  536. break;
  537. }
  538. }
  539. private void OnlyTable(int SelectedIndex)
  540. {
  541. ConverterExcelModel.Options.ContentOpts = ContentOptions.OnlyTable;
  542. switch (SelectedIndex)
  543. {
  544. case 0:
  545. ConverterExcelModel.Options.WorksheetOpts = WorksheetOptions.ForEachTable;
  546. break;
  547. case 1:
  548. ConverterExcelModel.Options.WorksheetOpts = WorksheetOptions.ForEachPage;
  549. break;
  550. case 2:
  551. ConverterExcelModel.Options.WorksheetOpts = WorksheetOptions.ForTheDocument;
  552. break;
  553. default:
  554. break;
  555. }
  556. }
  557. private void SelectLanguage(int SelectedIndex)
  558. {
  559. switch (SelectedIndex)
  560. {
  561. case 0:
  562. ConverterExcelModel.Options.OCRLanguage = COCRLanguage.COCRLanguageChinese;
  563. break;
  564. case 1:
  565. ConverterExcelModel.Options.OCRLanguage = COCRLanguage.COCRLanguageChineseTraditional;
  566. break;
  567. case 2:
  568. ConverterExcelModel.Options.OCRLanguage = COCRLanguage.COCRLanguageEnglish;
  569. break;
  570. case 3:
  571. ConverterExcelModel.Options.OCRLanguage = COCRLanguage.COCRLanguageJapanese;
  572. break;
  573. case 4:
  574. ConverterExcelModel.Options.OCRLanguage = COCRLanguage.COCRLanguageKorean;
  575. break;
  576. default:
  577. break;
  578. }
  579. }
  580. #endregion
  581. #region 构架行为
  582. public bool CanCloseDialog()
  583. {
  584. return true;
  585. }
  586. public void OnDialogClosed()
  587. {
  588. }
  589. public void OnDialogOpened(IDialogParameters parameters)
  590. {
  591. CPDFViewer pdfViewer = null;
  592. parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
  593. parameters.TryGetValue<bool>("PageRangeComboBoxCurrentPage", out IsCurrentPageIndex);
  594. if (pdfViewer != null)
  595. {
  596. InitCheckPageSelect();
  597. currentViewer = pdfViewer;
  598. MaxPageRange = currentViewer.Document.PageCount;
  599. if (currentViewer.Tag != null) { ConverterExcelModel.Pawssword = currentViewer.Tag.ToString(); }
  600. ConverterExcelModel.InputPath = pdfViewer.Document.FilePath;
  601. FileInfo fileinfo = new FileInfo(ConverterExcelModel.InputPath);
  602. ConverterExcelModel.OutputPath = fileinfo.DirectoryName;
  603. }
  604. }
  605. #endregion
  606. }
  607. }