Lors de l’export d’un document au format PDF ou XPS, vous pouvez rencontrer certaines erreurs spécifiques :
FREN_E_INVALID_CREATION_DATE_FORMAT ;
FREN_E_INVALID_MODIFICATION_DATE_FORMAT.
Ces erreurs surviennent si la date de création ou de modification spécifiée dans les métadonnées du document n’est pas conforme à la norme PDF 2.0. Le format de date correct est D:YYYYMMDDHHmmSSOHH’mm, où YYYY correspond à l’année, MM au mois, DD au jour, HHmmSS à l’heure, et OHH’mm à la valeur absolue du décalage par rapport au Temps Universel.Pour gérer les erreurs de ce type, vous pouvez soit modifier les paramètres d’export de la date, soit corriger la date pour qu’elle soit conforme au format requis.Pour modifier les paramètres d’export de la date :
Récupérez le sous-objet DocumentContentInfoWritingParams de l’objet de paramètres d’export correspondant à votre format de sortie :
Les propriétés WriteCreationDate et WriteModificationDate de l’objet DocumentContentInfoWritingParams déterminent quelles dates doivent être enregistrées dans le document de sortie. Vous pouvez utiliser la valeur WD_No pour désactiver l’enregistrement des dates et la valeur WD_Current pour utiliser la date actuelle.
Relancez l’export du document en utilisant, par exemple, la méthode Export de l’objet FRDocument, en passant l’objet de paramètres que vous venez de configurer comme dernier paramètre d’entrée.
Les exemples de code fournis dans cette rubrique sont spécifiques à Windows.
Code C++
// Définir l'objet des paramètres d'export des dates de création et de modificationFREngine::IPDFExportParamsPtr pdfExportParams = Engine->CreatePDFExportParams();pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteCreationDate ( FREngine::WD_DocumentContentInfo );pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_DocumentContentInfo );// Corriger la date de création/modification et réexporter le documentconst 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 { // Restaurer l'exception d'origine non gérée et la relancer throw; } }}
Code C#
// Définir les paramètres d'export des dates de création et de modificationFREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;// Gérer deux types d'erreurs d'export ; il ne doit donc pas y avoir plus de 3 tentatives d'exportconst 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) { // Corriger la date de création document.DocumentContentInfo.CreationDate = "D:20181011234506Z"; } else if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_MODIFICATION_DATE_FORMAT) { // Modifier les paramètres d'export de la date de modification pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_Current; } else { // Restaurer l'exception d'origine non gérée et la relancer throw; } }}