跳轉到主要內容
當您將文件匯出為 PDF 或 XPS 格式時,可能會遇到某些特定錯誤:
  • FREN_E_INVALID_CREATION_DATE_FORMAT;
  • FREN_E_INVALID_MODIFICATION_DATE_FORMAT.
如果文件中繼資料中指定的建立日期或修改日期不符合 PDF 2.0 標準,就會出現這些錯誤。正確的日期格式為 D:YYYYMMDDHHmmSSOHH’mm,其中 YYYY — 年,MM — 月,DD — 日,HHmmSS — 時間,OHH’mm — 與世界標準時間的位移絕對值。 若要處理這類錯誤,您可以變更日期匯出設定,或修正日期使其符合此格式。 若要變更日期匯出設定:
  1. 取得您輸出格式之匯出參數物件的 DocumentContentInfoWritingParams 子物件:
  2. DocumentContentInfoWritingParams 物件的 WriteCreationDateWriteModificationDate 屬性可指定哪些日期應儲存到輸出文件中。在此情況下,您可以使用 WD_No 值停用日期儲存,並使用 WD_Current 值採用目前日期。
  3. 例如,使用 FRDocument 物件的 Export 方法重新執行文件匯出,並將您剛設定好的參數物件作為最後一個輸入參數傳入。
若要修正日期:
  1. 使用 FRDocument 物件的 DocumentContentInfo 屬性存取 DocumentСontentInfo 物件。
  2. 變更 DocumentСontentInfo 物件中 CreationDateModificationDate 屬性的日期。
  3. 使用 FRDocument 物件的 Export 方法重新執行文件匯出。

範例

本主題提供的程式碼範例僅適用於 Windows。
// 設定建立日期和修改日期的匯出參數物件
FREngine::IPDFExportParamsPtr pdfExportParams = Engine->CreatePDFExportParams();
pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteCreationDate ( FREngine::WD_DocumentContentInfo );
pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_DocumentContentInfo );
 
// 更正建立/修改日期,然後再次匯出文件
const int numberOfExportAttempts = 3;
for (int i = 0; i < numberOfExportAttempts; i++)
{
  try
  {
     frDocument->Export( pdfExportPath, FREngine::FEF_PDF, pdfExportParams );
  }
  catch (_com_error & e)
  {
     if (e.Error() == (int) FREngine::FREN_E_INVALID_CREATION_DATE_FORMAT) {
         frDocument->DocumentContentInfo->put_CreationDate( L"D:20181011234506Z" );
     }
     else if (e.Error() == (int) FREngine::FREN_E_INVALID_MODIFICATION_DATE_FORMAT) {
         pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_Current );
     }
     else
     {
           // 還原原始未處理的例外,並將其重新擲出
           throw;
     }
  }
}
// 設定建立日期和修改日期的匯出參數
FREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();
pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;
pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;
 
// 處理兩種匯出錯誤,因此最多只需嘗試匯出 3 次
const int numberOfExportAttempts = 3;
for (int i = 0; i < numberOfExportAttempts; ++i)
{
    try
    {
       document.Export( "D:\\Demo.pdf", FREngine.FileExportFormatEnum.FEF_PDF, pdfExportParams );
       break;
    }
    catch (COMException error)
    {
       if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_CREATION_DATE_FORMAT)
       {
           // 更正建立日期
           document.DocumentContentInfo.CreationDate = "D:20181011234506Z";
       }
       else if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_MODIFICATION_DATE_FORMAT)
       {
           // 變更修改日期的匯出參數
           pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_Current;
       }
       else
       {
           // 還原原始未處理的例外,並將其重新擲出
           throw;
       }
    }
}

另請參見

DocumentСontentInfo 標準傳回碼 調整匯出參數 錯誤處理