IPXV_FormatConverter Interface

From PDF XChange PDF SDK
Jump to: navigation, search
(Automatic page editing by robot)
 
Line 3: Line 3:
  
 
The interface of object of PDF-XChange Editor SDK.
 
The interface of object of PDF-XChange Editor SDK.
 +
 +
=== XXX => PDF ===
 +
 +
<pre class="brush:cpp; gutter:false">
 +
IAFS_File* pInputFile;
 +
</pre>
 +
 +
# маючи pInputFile беремо в нього розширення через його Name. якщо нема, то на п.4
 +
# по цьому розширенню шукаємо конвертер. якщо нема то на п.4
 +
# питаємо в конвертера через CheckFormat валідність файла. якщо результат CheckFormatResult_OK, то на п.6
 +
# послідовно викликаємо CheckFormat у зареєстрованих конвертерів для пошуку конветера якщо може опрацювати файл
 +
# якщо жодної форматки не підібрано - вихід з помилкою "Unknown File Format"
 +
# нехай наш конвертер - pConverter; викликаємо в нього <code>CreateParams(&pParams);</code>
 +
# <code>pConverter->Prepare(pInputFile, pParams, hWndParent);</code> викликається в головному потоці
 +
# <code>pConverter->Convert(pInputFile, pParams, pProgress, &pOutFile);</code> може викликатись в окремому потоці. pOutFile може бути: IStream, IAFS_File, або повністю готовий IPXC_Document;
 +
# якщо pOutFile не є IPXC_Document, то вважаємо що в pOutFile нормальний PDF file, який і пробуємо відкрити
 +
 +
=== PDF => XXX ===
 +
 +
<pre class="brush:cpp; gutter:false">
 +
IPXC_Document* pSource;
 +
</pre>
 +
 +
# при Save As (Export) будуємо стрічку для фільтра для діалога
 +
# світимо діалог з кнопкою "Settings..." на діалозі
 +
# при натисканні Settings, викликається Callback (який знає про pSource, про вибрану на данний момент форматку):
 +
## в форматки викликається CreateParams(&pParams)
 +
## викликається ShowPrefsDlg(pSource, pParams, SaveDlg.HWND)
 +
## параметри що повернулись зберігаються до переключення форматки і використовуються при наступному натисканні Settings та при конвертації
 +
# отримавши IDOK від діалога, якщо в нас немає ще pParams, то беремо їх в вибраного конвертера через <code>CreateParams(&pParams)</code>
 +
# викликаємо в головному потоці <code>pConverter->Prepare(pSource, pParams, DocView.HWND);</code>
 +
# <code>pConverter->Convert(pSource, pParams, pProgress, NULL);</code> передаємо останнім параметром NULL оскільки нам непотрібні результуючі файли
 +
 +
=== Preferences ===
 +
# використовуючи get_Name, get_Description, etc, показуємо список зареєстрованих конвертерів.
 +
# при виборі конвертера зі списку дивимось його флажки і якщо встановлено <code>HasPreferences</code>, то дозволяється "Settings..." кнопка, при натисканні якої викликаємо
 +
 +
<pre class="brush:cpp; gutter:false">
 +
ShowPrefsDlg(NULL, NULL, PrefsDlg.HWND);
 +
</pre>
  
 
== Methods ==
 
== Methods ==

Revision as of 01:47, 21 March 2015

The interface of object of PDF-XChange Editor SDK.

XXX => PDF

IAFS_File* pInputFile;
  1. маючи pInputFile беремо в нього розширення через його Name. якщо нема, то на п.4
  2. по цьому розширенню шукаємо конвертер. якщо нема то на п.4
  3. питаємо в конвертера через CheckFormat валідність файла. якщо результат CheckFormatResult_OK, то на п.6
  4. послідовно викликаємо CheckFormat у зареєстрованих конвертерів для пошуку конветера якщо може опрацювати файл
  5. якщо жодної форматки не підібрано - вихід з помилкою "Unknown File Format"
  6. нехай наш конвертер - pConverter; викликаємо в нього CreateParams(&pParams);
  7. pConverter->Prepare(pInputFile, pParams, hWndParent); викликається в головному потоці
  8. pConverter->Convert(pInputFile, pParams, pProgress, &pOutFile); може викликатись в окремому потоці. pOutFile може бути: IStream, IAFS_File, або повністю готовий IPXC_Document;
  9. якщо pOutFile не є IPXC_Document, то вважаємо що в pOutFile нормальний PDF file, який і пробуємо відкрити

PDF => XXX

IPXC_Document* pSource;
  1. при Save As (Export) будуємо стрічку для фільтра для діалога
  2. світимо діалог з кнопкою "Settings..." на діалозі
  3. при натисканні Settings, викликається Callback (який знає про pSource, про вибрану на данний момент форматку):
    1. в форматки викликається CreateParams(&pParams)
    2. викликається ShowPrefsDlg(pSource, pParams, SaveDlg.HWND)
    3. параметри що повернулись зберігаються до переключення форматки і використовуються при наступному натисканні Settings та при конвертації
  4. отримавши IDOK від діалога, якщо в нас немає ще pParams, то беремо їх в вибраного конвертера через CreateParams(&pParams)
  5. викликаємо в головному потоці pConverter->Prepare(pSource, pParams, DocView.HWND);
  6. pConverter->Convert(pSource, pParams, pProgress, NULL); передаємо останнім параметром NULL оскільки нам непотрібні результуючі файли

Preferences

  1. використовуючи get_Name, get_Description, etc, показуємо список зареєстрованих конвертерів.
  2. при виборі конвертера зі списку дивимось його флажки і якщо встановлено HasPreferences, то дозволяється "Settings..." кнопка, при натисканні якої викликаємо
ShowPrefsDlg(NULL, NULL, PrefsDlg.HWND);

Methods

Method Description
CreateParams ...
ShowPrefsDlg ...

Properties

Property Access Type Description
Description R .
Extensions R .
FilterName R .
Flags R .
Icon R .
MIME R .
Name R .