Pular para o conteúdo principal
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:
  1. Obtenha o subobjeto DocumentContentInfoWritingParams do objeto de parâmetros de exportação do formato de saída:
  2. 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.
  3. 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.
Para corrigir a data:
  1. Acesse o objeto DocumentСontentInfo usando a propriedade DocumentContentInfo do objeto FRDocument.
  2. Altere a data na propriedade CreationDate ou ModificationDate do objeto DocumentСontentInfo.
  3. Reinicie a exportação do documento com o método Export do objeto FRDocument.

Amostras

As amostras de código fornecidas neste tópico são específicas do Windows.
// Define o objeto de parâmetros de exportação das datas de criação e modificação
FREngine::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 novamente
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
     {
           // Restaura a exceção original não tratada e a passa adiante
           throw;
     }
  }
}
// Define os parâmetros de exportação das datas de criação e modificação
FREngine.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ção
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)
       {
           // 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;
       }
    }
}

Veja também

DocumentСontentInfo Códigos de retorno padrão Ajuste dos parâmetros de exportação Tratamento de erros