Tratamento de erros durante a exportação para PDF/XPS
Ao exportar um documento para o formato PDF ou XPS, você pode encontrar alguns erros específicos:
FREN_E_INVALID_CREATION_DATE_FORMAT;
FREN_E_INVALID_MODIFICATION_DATE_FORMAT.
Esses erros ocorrem se a data de criação ou de modificação especificada nos metadados do documento não estiver em conformidade com o padrão PDF 2.0. O formato de data correto é D:YYYYMMDDHHmmSSOHH’mm, em que YYYY — o ano, MM — o mês, DD — o dia, HHmmSS — a hora, OHH’mm — o valor absoluto do deslocamento em relação ao Tempo Universal.Para tratar erros desse tipo, você pode alterar as configurações de exportação de data ou corrigir a data para que ela fique no formato adequado.Para alterar as configurações de exportação de data:
As propriedades WriteCreationDate e WriteModificationDate do objeto DocumentContentInfoWritingParams especificam quais datas devem ser salvas no documento de saída. Nesse caso, você pode usar o valor WD_No para desativar o salvamento de datas e o valor WD_Current para usar a data atual.
Reinicie a exportação do documento usando, por exemplo, o método Export do objeto FRDocument, passando o objeto de parâmetros que você acabou de configurar como último parâmetro de entrada.
As amostras de código fornecidas neste tópico são específicas do Windows.
Código C++
// Define o objeto de parâmetros de exportação das datas de criação e modificaçãoFREngine::IPDFExportParamsPtr pdfExportParams = Engine->CreatePDFExportParams();pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteCreationDate ( FREngine::WD_DocumentContentInfo );pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_DocumentContentInfo );// Corrige a data de criação ou modificação e tenta exportar o documento novamenteconst 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 { // Restaura a exceção original não tratada e a passa adiante throw; } }}
Código C#
// Define os parâmetros de exportação das datas de criação e modificaçãoFREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;// Lida com dois tipos de erros de exportação, garantindo no máximo 3 tentativas de exportaçãoconst 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) { // Corrige a data de criação document.DocumentContentInfo.CreationDate = "D:20181011234506Z"; } else if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_MODIFICATION_DATE_FORMAT) { // Altera os parâmetros de exportação da data de modificação pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_Current; } else { // Restaura a exceção original não tratada e a passa adiante throw; } }}