Úvod
Podniky, které ukládají smlouvy, finanční výkazy nebo regulatorní podání, musí tyto PDF soubory uchovávat v archivním formátu – PDF/A. Pokud jediný soubor unikne bez požadované konformity, auditoři mohou označit celou dávku a měsíce později může být spuštěno nákladné přepracování. Spoléhání se na ruční kontroly se rychle stává nepraktickým, když denně přichází stovky souborů.
GroupDocs.Metadata pro .NET odstraňuje hádání. Díky jasnému příznaku IsPdfA a přesné výčtové hodnotě PdfFormat knihovna v jedné řádce říká, zda dokument splňuje jakoukoli úroveň PDF/A a pokud ano, kterou konkrétní variantu (např. PDF/A‑1b, PDF/A‑2u) odpovídá. V tomto tutoriálu uvidíte, jak tuto logiku zapojit do konzolové aplikace, vystavit ji přes webové API a škálovat pro dávkové zpracování.
Na konci průvodce budete schopni:
- Načíst PDF pomocí třídy
Metadata. - Určit soulad s PDF/A pomocí Boolean vlastnosti.
- Vyextrahovat přesnou verzi PDF/A u souborů, které jsou v souladu.
- Integrovat kontrolu do větších pracovních toků (dávkové úlohy, API, serverless funkce).
Proč je přesná detekce PDF/A zásadní
Spolehlivá, automatizovaná kontrola vám pomůže:
- Zůstat připravený na audit: Prokažte regulátorům, že každý uložený PDF splňuje standard ISO 19005.
- Zachovat vizuální věrnost: PDF/A zaručuje, že písma, barvy a rozvržení přežijí budoucí prohlížeče.
- Automatizovat ingestní pipeline: Odmítněte nesouladné soubory dříve, než se dostanou do systému pro správu dokumentů.
- Vyhnout se nákladnému přepracování: Včasná detekce zabraňuje drahému opakovanému ověřování později v životním cyklu.
Požadavky
- .NET 6.0 nebo novější.
- GroupDocs.Metadata NuGet balíček (nejnovější verze).
- Jeden nebo více PDF souborů, které chcete vyhodnotit.
- (Volitelné) Dočasná evaluační licence – můžete ji získat na portálu GroupDocs.
Instalace
Vytvořte nový konzolový projekt a přidejte balíček:
dotnet new console -n DetectPdfA
cd DetectPdfA
dotnet add package GroupDocs.Metadata
Krok 1 – Inicializace enginu Metadata
Nejprve otevřeme PDF pomocí třídy Metadata. Konstruktor automaticky rozpozná formát souboru, takže nejsou potřeba žádné další parametry.
using GroupDocs.Metadata;
string pdfPath = "sample.pdf";
// Otevřete dokument – blok using zajišťuje uvolnění souborového handle.
using (Metadata metadata = new Metadata(pdfPath))
{
// Následující kroky půjdou sem.
}
Klíčový bod: Příkaz using zajišťuje, že nativní zdroje jsou uvolněny okamžitě, což zabraňuje únikům souborových handle v dlouho běžících službách.
Krok 2 – Získání kořenového balíčku specifického pro PDF
GroupDocs.Metadata poskytuje silně typovaný kořenový objekt pro každý formát. Pro PDF požadujeme PdfRootPackage, který obsahuje informace o FileType, jež potřebujeme.
using GroupDocs.Metadata.Formats.Pdf;
// Uvnitř using bloku z Kroku 1
var root = metadata.GetRootPackage<PdfRootPackage>();
root.FileType obsahuje dvě zajímavé vlastnosti:
IsPdfA–true, pokud dokument splňuje jakoukoli úroveň PDF/A.PdfFormat– výčet jakoPdfA1b,PdfA2uatd., který udává přesnou verzi.
Krok 3 – Provedení kontroly souladu
Nyní přečteme příznak a v případě potřeby vypíšeme konkrétní variantu PDF/A.
if (root.FileType.IsPdfA)
{
// Dokument splňuje – vypište přesnou verzi.
Console.WriteLine($"✅ PDF/A compliant – version: {root.FileType.PdfFormat}");
}
else
{
// Dokument nesplňuje požadavky PDF/A.
Console.WriteLine("❌ The document is NOT PDF/A compliant.");
}
Co vidíte:
- Jedna Boolean hodnota (
IsPdfA) poskytuje okamžitou odpověď ano/ne. - Když je
true,PdfFormatdává přesnou úroveň konformity, kterou můžete uložit do logů, databází nebo auditních zpráv.
Kompletní funkční příklad
Spojením tří kroků získáte kompaktní program připravený ke zkopírování:
using System;
using GroupDocs.Metadata;
using GroupDocs.Metadata.Formats.Pdf;
class Program
{
static void Main(string[] args)
{
string pdfPath = "sample.pdf";
using (Metadata metadata = new Metadata(pdfPath))
{
var root = metadata.GetRootPackage<PdfRootPackage>();
if (root.FileType.IsPdfA)
{
Console.WriteLine($"✅ PDF/A compliant – version: {root.FileType.PdfFormat}");
}
else
{
Console.WriteLine("❌ The document is NOT PDF/A compliant.");
}
}
}
}
Program spusťte pomocí dotnet run. Ukázkový výstup pro soubor, který je v souladu, může vypadat takto:
✅ PDF/A compliant – version: PdfA2u
A pro nesouladný soubor:
❌ The document is NOT PDF/A compliant.
Reálné aplikace
1. Automatizované archivní pipeline – Skenujte složku, validujte každý PDF pomocí výše uvedeného úryvku a přesunujte pouze soubory v souladu do dlouhodobého úložiště.
2. Validace nahrávání pro webový portál – Zabalte stejnou logiku do ASP.NET Core kontroleru (viz volitelný úryvek níže) a odmítněte nahrání, které není PDF/A, ještě před uložením.
3. Serverless kontroly souladu – Nasadíte metodu jako Azure Function, která se spustí při vytvoření Blobu a vrátí JSON payload se stavem souladu.
// Minimal Azure Function payload (excerpt)
var result = new
{
file = file.FileName,
isPdfA = root.FileType.IsPdfA,
format = root.FileType.IsPdfA ? root.FileType.PdfFormat.ToString() : null
};
Nejlepší postupy a tipy
- Nejprve ověřte cestu – použijte
Path.GetFullPatha