IPXV_FormatConverter Interface
From PDF XChange PDF SDK
XXX => PDF
IAFS_File* pInputFile;
- маючи pInputFile беремо в нього розширення через його Name. якщо нема, то на п.4
- по цьому розширенню шукаємо конвертер. якщо нема то на п.4
- питаємо в конвертера через CheckFormat валідність файла. якщо результат CheckFormatResult_OK, то на п.6
- послідовно викликаємо CheckFormat у зареєстрованих конвертерів для пошуку конветера якщо може опрацювати файл
- якщо жодної форматки не підібрано - вихід з помилкою "Unknown File Format"
- нехай наш конвертер - pConverter; викликаємо в нього
CreateParams(&pParams);
-
pConverter->Prepare(pInputFile, pParams, hWndParent);
викликається в головному потоці -
pConverter->Convert(pInputFile, pParams, pProgress, &pOutFile);
може викликатись в окремому потоці. pOutFile може бути: IStream, IAFS_File, або повністю готовий IPXC_Document; - якщо pOutFile не є IPXC_Document, то вважаємо що в pOutFile нормальний PDF file, який і пробуємо відкрити
PDF => XXX
IPXC_Document* pSource;
- при Save As (Export) будуємо стрічку для фільтра для діалога
- світимо діалог з кнопкою "Settings..." на діалозі
- при натисканні Settings, викликається Callback (який знає про pSource, про вибрану на данний момент форматку):
- в форматки викликається CreateParams(&pParams)
- викликається ShowPrefsDlg(pSource, pParams, SaveDlg.HWND)
- параметри що повернулись зберігаються до переключення форматки і використовуються при наступному натисканні Settings та при конвертації
- отримавши IDOK від діалога, якщо в нас немає ще pParams, то беремо їх в вибраного конвертера через
CreateParams(&pParams)
- викликаємо в головному потоці
pConverter->Prepare(pSource, pParams, DocView.HWND);
-
pConverter->Convert(pSource, pParams, pProgress, NULL);
передаємо останнім параметром NULL оскільки нам непотрібні результуючі файли
Preferences
- використовуючи get_Name, get_Description, etc, показуємо список зареєстрованих конвертерів.
- при виборі конвертера зі списку дивимось його флажки і якщо встановлено
HasPreferences
, то дозволяється "Settings..." кнопка, при натисканні якої викликаємо
ShowPrefsDlg(NULL, NULL, PrefsDlg.HWND);
Methods
CreateParams | ShowPrefsDlg |
Properties
Description | FilterName | Icon | MIME |
Extensions | Flags | ID | Name |