さまざまな PDF 仕様に従ってPDFの仕様準拠性を検証できます。
次の標準を検証できます。
| PDF/A | |
|---|---|
| PDF Reference 1.3-1.6 | PDF/A-1 (ISO 19005-1) |
| PDF 1.7 (ISO 32000-1) | PDF/A-2 (ISO 19005-2) |
| PDF 2.0 (ISO 32000-2) | PDF/A-3 (ISO 19005-3) |
APIリファレンスはこちらです。
PDF文書はPDF の ISO標準、長期アーカイブ用のPDF/A、および特定の適合レベルに従って検証されます。
PDF文書のバージョン番号の確認などの追加の検証テストも可能です。
さらに、適切な色の使用や適切なフォントの使用およびその他の仕様など内部指令への準拠を検証することもでき、個々のドキュメントとアーカイブ全体の準拠をチェックできます。
以下のようなチェックができます:
準拠レベルは PDF 標準によって決定されます。
PDF/A 仕様標準では、次の準拠レベルがサポートされています。
PDF文書を検証するとPDFのバージョンと準拠レベルに応じてさまざまな語彙、構文、および意味の検証チェックが実行されます。
ドキュメント検証プロセスの結果をどのように受け取るかを決めることができます。
レポートレベル(詳細レポートまたはエラーレポートの概要)を選択でき、説明には頻度、ページ番号、PDFオブジェクト番号などのすべての詳細が含まれます。
内部仕様(標準画像解像度など)の検証も同時に行うことができます。
C#のサンプルプロジェクトではPdftools SDKライブラリ(DLL)をNuGetから自動でダウンロードします。
CのサンプルプロジェクトにはPdftools SDKライブラリ(DLL)が含まれています。
ライセンスキー無し(無償)で試用できます。ただし、結果に「透かし」が入ります。
「透かし」の削除をご希望の場合は問い合わせページまたはメールでお問い合わせください。
License Agreement(利用許諾契約書)が含まれていますので必ず確認してください。
PDF文書の規格への準拠性を検証します。
void ErrorListener(void* pContext, const TCHAR* szDataPart, const TCHAR* szMessage,
TPdfToolsPdfAValidation_ErrorCategory iCategory, const TCHAR* szContext, int iPageNo, int iObjectNo)
{
if (iPageNo > 0)
_tprintf(_T("- %d: %s (%s on page %d)\n"), iCategory, szMessage, szContext, iPageNo);
else
_tprintf(_T("- %d: %s (%s)\n"), iCategory, szMessage, szContext);
}
void Validate(const TCHAR* szInPath)
{
TPdfToolsPdf_Document* pInDoc = NULL;
TPdfToolsPdfAValidation_Validator* pValidator = NULL;
TPdfToolsPdfAValidation_ValidationResult* pResult = NULL;
// 入力PDFファイルを開く
FILE* pInStream = _tfopen(szInPath, _T("rb"));
GOTO_CLEANUP_IF_NULL_PRINT_ERROR(pInStream, _T("Failed to open the input file \"%s\" for reading.\n"), szInPath);
TPdfToolsSys_StreamDescriptor inDesc;
PdfToolsSysCreateFILEStreamDescriptor(&inDesc, pInStream, 0);
pInDoc = PdfToolsPdf_Document_Open(&inDesc, _T(""));
GOTO_CLEANUP_IF_NULL_PRINT_ERROR(pInDoc, _T("Failed to open document \"%s\". %s (ErrorCode: 0x%08x).\n"), szInPath,
szErrBuf, PdfTools_GetLastError());
// すべての検証エラーメッセージをコンソールに書き出す検証オブジェクトを生成
pValidator = PdfToolsPdfAValidation_Validator_New();
PdfToolsPdfAValidation_Validator_AddErrorHandler(pValidator, NULL,
(TPdfToolsPdfAValidation_Validator_Error)ErrorListener);
// PDF文書の規格準拠性を検証
pResult = PdfToolsPdfAValidation_Validator_Validate(pValidator, pInDoc, NULL);
GOTO_CLEANUP_IF_NULL_PRINT_ERROR(pResult, _T("Failed to validate document. %s (ErrorCode: 0x%08x).\n"), szErrBuf,
PdfTools_GetLastError());
// 検証結果をレポート
TPdfToolsPdf_Conformance iClaimedConformance;
PdfToolsPdf_Document_GetConformance(pInDoc, &iClaimedConformance);
if (PdfToolsPdfAValidation_ValidationResult_IsConforming(pResult))
printf("Document conforms to %s.\n", PdfToolsPdf_Conformance_ToStringA(iClaimedConformance));
else
printf("Document does not conform to %s.\n", PdfToolsPdf_Conformance_ToStringA(iClaimedConformance));
cleanup:
PdfTools_Release(pResult);
PdfTools_Release(pValidator);
PdfToolsPdf_Document_Close(pInDoc);
if (pInStream)
fclose(pInStream);
}
private static ValidationResult Validate(string inPath)
{
// 入力PDFファイルを開く
using var inStr = File.OpenRead(inPath);
using var inDoc = Document.Open(inStr);
// すべての検証エラーメッセージをコンソールに書き出す検証オブジェクトを生成
var validator = new Validator();
validator.Error += (s, e) => Console.WriteLine("- {0}: {1} ({2}{3})", e.Category, e.Message, e.Context, e.PageNo > 0 ? " on page" + e.PageNo : "");
// PDF文書の規格準拠性を検証
return validator.Validate(inDoc);
}
def error_listener(context, data_part: str, message: str, category: ErrorCategory, context_text: str, page_no: int, object_no: int):
if page_no > 0:
print(f"- {category.name}: {message.decode()} ({context_text.decode()} on page {page_no})")
else:
print(f"- {category.name}: {message.decode()} ({context_text.decode()})")
def validate(input_file_path: str):
# 入力文書を開く
with io.FileIO(input_file_path, 'rb') as in_stream:
with Document.open(in_stream) as input_document:
# すべての検証エラーメッセージをコンソールに書き出す検証オブジェクトを生成
validator = Validator()
validator.add_error_handler(error_listener)
# PDF文書の規格準拠性を検証
return validator.validate(input_document)
validation_result = validate(input_file_path)
# 検証結果を表示
if validation_result.is_conforming:
print(f"Document conforms to {Conformance(validation_result.conformance).name}.")
else:
print(f"Document does not conform to {Conformance(validation_result.conformance).name}.")
他の機能サンプルを参照してください。
質問のページからお送りいただくようお願いします。
または、メールでsupport@trustss.co.jpあてにお送りください。
ご購入前の技術的質問も無償で対応します。サポート受付ページからお願いします。