ドキュメントを 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 は協定世界時からのオフセットの絶対値を表します。
この種のエラーに対処するには、日付のエクスポート設定を変更するか、形式に合うように日付を修正します。
日付のエクスポート設定を変更するには:
- 出力形式のエクスポートパラメーターオブジェクトから DocumentContentInfoWritingParams サブオブジェクトを取得します。
- DocumentContentInfoWritingParams オブジェクトの WriteCreationDate プロパティと WriteModificationDate プロパティでは、出力ドキュメントに保存する日付を指定します。この場合、日付の保存を無効にするには WD_No 値を使用し、現在の日付を使用するには WD_Current 値を使用できます。
- たとえば、FRDocument オブジェクトの Export メソッドを使用し、設定したばかりのパラメーターオブジェクトを最後の入力パラメーターとして渡して、ドキュメントのエクスポートを再実行します。
日付を修正するには:
- FRDocument オブジェクトの DocumentContentInfo プロパティを使用して、DocumentСontentInfo オブジェクトにアクセスします。
- DocumentСontentInfo オブジェクトの CreationDate プロパティまたは ModificationDate プロパティの日付を修正します。
- FRDocument オブジェクトの Export メソッドを使用して、ドキュメントのエクスポートを再実行します。
このトピックで示すコードサンプルは、Windows 固有のものです。
// 作成日と更新日のエクスポートパラメーターオブジェクトを設定します
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;
}
}
}
// 作成日と更新日のエクスポートパラメーターを設定します
FREngine.PDFExportParams pdfExportParams = engineLoader.Engine.CreatePDFExportParams();
pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteCreationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;
pdfExportParams.PDFFeatures.MetaDataWritingParams.WriteModificationDate = FREngine.WriteDateEnum.WD_DocumentContentInfo;
// 2 種類のエクスポートエラーを処理するため、エクスポートの試行回数は最大 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;
}
}
}
DocumentСontentInfo
標準戻りコード
エクスポート パラメーターの調整
エラー処理