문서를 PDF 또는 XPS 형식으로 내보낼 때 다음과 같은 특정 오류가 발생할 수 있습니다:
FREN_E_INVALID_CREATION_DATE_FORMAT;
FREN_E_INVALID_MODIFICATION_DATE_FORMAT.
이 오류는 문서 메타데이터에 지정된 생성일 또는 수정일이 PDF 2.0 표준을 준수하지 않을 경우 발생합니다. 올바른 날짜 형식은 D:YYYYMMDDHHmmSSOHH’mm이며, 여기서 YYYY — 연도, MM — 월, DD — 일, HHmmSS — 시간, OHH’mm — 협정 세계시(Universal Time)로부터의 오프셋 절댓값을 의미합니다.이 유형의 오류를 처리하려면 날짜 내보내기 설정을 변경하거나 형식에 맞게 날짜를 수정하면 됩니다.날짜 내보내기 설정을 변경하려면:
DocumentContentInfoWritingParams 객체의 WriteCreationDate 및 WriteModificationDate 속성은 출력 문서에 저장할 날짜를 지정합니다. 이 경우 날짜 저장을 비활성화하려면 WD_No 값을 사용하고, 현재 날짜를 사용하려면 WD_Current 값을 사용할 수 있습니다.
방금 설정한 매개변수 객체를 마지막 입력 매개변수로 전달하여, 예를 들어 FRDocument 객체의 Export 메서드를 사용해 문서 내보내기를 다시 시작합니다.
// 생성 날짜와 수정 날짜에 대한 내보내기 매개변수 객체를 설정합니다FREngine::IPDFExportParamsPtr pdfExportParams = Engine->CreatePDFExportParams();pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteCreationDate ( FREngine::WD_DocumentContentInfo );pdfExportParams->PDFFeatures->MetaDataWritingParams->put_WriteModificationDate ( FREngine::WD_DocumentContentInfo );// 생성/수정 날짜를 바로잡고 문서를 다시 내보냅니다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 { // 원래의 미처리 예외를 그대로 다시 전달합니다 throw; } }}
C# 코드
// 생성 날짜와 수정 날짜에 대한 내보내기 매개변수를 설정합니다FREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;// 두 가지 유형의 내보내기 오류를 처리하므로 내보내기 시도는 최대 3회입니다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) { // 생성 날짜를 바로잡습니다 document.DocumentContentInfo.CreationDate = "D:20181011234506Z"; } else if (error.ErrorCode == (int)FREngine.ErrorCodes.FREN_E_INVALID_MODIFICATION_DATE_FORMAT) { // 수정 날짜에 대한 내보내기 매개변수를 변경합니다 pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_Current; } else { // 원래의 미처리 예외를 그대로 다시 전달합니다 throw; } }}