Manejo de errores durante la exportación a PDF/XPS
Al exportar un documento a formato PDF o XPS, puede encontrarse con algunos errores específicos:
FREN_E_INVALID_CREATION_DATE_FORMAT;
FREN_E_INVALID_MODIFICATION_DATE_FORMAT.
Estos aparecen si la fecha de creación o de modificación especificada en los metadatos del documento no cumple con el estándar PDF 2.0. El formato de fecha correcto es D:YYYYMMDDHHmmSSOHH’mm, donde YYYY — el año, MM — el mes, DD — el día, HHmmSS — la hora, OHH’mm — el valor absoluto del desfase con respecto al Tiempo Universal.Para gestionar errores de este tipo, puede cambiar la configuración de exportación de fechas o corregir la fecha para que se ajuste al formato.Para cambiar la configuración de exportación de fechas:
Obtenga el subobjeto DocumentContentInfoWritingParams del objeto de parámetros de exportación correspondiente a su formato de salida:
Las propiedades WriteCreationDate y WriteModificationDate del objeto DocumentContentInfoWritingParams especifican qué fechas deben guardarse en el documento de salida. En este caso, puede usar el valor WD_No para deshabilitar el guardado de fechas y el valor WD_Current para usar la fecha actual.
Vuelva a iniciar la exportación del documento usando, por ejemplo, el método Export del objeto FRDocument, pasando como último parámetro de entrada el objeto de parámetros que acaba de configurar.
Los ejemplos de código proporcionados en este tema son específicos de Windows.
Código C++
// Configure el objeto de parámetros de exportación para las fechas de creación y modificaciónFREngine::IPDFExportParamsPtr pdfExportParams = Engine->CreatePDFExportParams();pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteCreationDate ( FREngine::WD_DocumentContentInfo );pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_DocumentContentInfo );// Corrija la fecha de creación o modificación y vuelva a exportar el documentoconst 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 { // Restaure la excepción no controlada original y propáguela throw; } }}
Código C#
// Configure los parámetros de exportación para las fechas de creación y modificaciónFREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;// Gestione dos tipos de errores de exportación, por lo que no debería haber más de 3 intentos de exportaciónconst 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) { // Corrija la fecha de creación document.DocumentContentInfo.CreationDate = "D:20181011234506Z"; } else if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_MODIFICATION_DATE_FORMAT) { // Cambie los parámetros de exportación de la fecha de modificación pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_Current; } else { // Restaure la excepción no controlada original y propáguela throw; } }}