Gestione degli errori durante l'esportazione in PDF/XPS
Quando si esporta un documento in formato PDF o XPS, è possibile che si verifichino alcuni errori specifici:
FREN_E_INVALID_CREATION_DATE_FORMAT;
FREN_E_INVALID_MODIFICATION_DATE_FORMAT.
Questi errori si verificano se la data di creazione o di modifica specificata nei metadati del documento non è conforme allo standard PDF 2.0. Il formato corretto della data è D:YYYYMMDDHHmmSSOHH’mm, dove YYYY — l’anno, MM — il mese, DD — la data, HHmmSS — l’ora, OHH’mm — il valore assoluto dello scostamento dal Tempo Universale.Per gestire errori di questo tipo, è possibile modificare le impostazioni di esportazione della data oppure correggere la data in modo che rispetti questo formato.Per modificare le impostazioni di esportazione della data:
Le proprietà WriteCreationDate e WriteModificationDate dell’oggetto DocumentContentInfoWritingParams specificano quali date devono essere salvate nel documento di output. In questo caso, è possibile usare il valore WD_No per disabilitare il salvataggio della data e il valore WD_Current per usare la data corrente.
Riavviare l’esportazione del documento usando, ad esempio, il metodo Export dell’oggetto FRDocument, passando come ultimo parametro di input l’oggetto dei parametri appena configurato.
Gli esempi di codice forniti in questo argomento sono specifici per Windows.
Codice C++
// Imposta l'oggetto dei parametri di esportazione per le date di creazione e modificaFREngine::IPDFExportParamsPtr pdfExportParams = Engine->CreatePDFExportParams();pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteCreationDate ( FREngine::WD_DocumentContentInfo );pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_DocumentContentInfo );// Corregge la data di creazione/modifica ed esporta di nuovo il 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 { // Ripristina l'eccezione originale non gestita e la propaga throw; } }}
Codice C#
// Imposta i parametri di esportazione per le date di creazione e modificaFREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;// Gestisce due tipi di errori di esportazione, quindi non saranno necessari più di 3 tentativiconst 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) { // Corregge la data di creazione document.DocumentContentInfo.CreationDate = "D:20181011234506Z"; } else if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_MODIFICATION_DATE_FORMAT) { // Modifica i parametri di esportazione della data di modifica pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_Current; } else { // Ripristina l'eccezione originale non gestita e la propaga throw; } }}