Как сделать разницу между PDF и PDF/A C#

Я разработал консольное приложение, которое в полночь просматривает одну и ту же папку, чтобы конвертировать PDF в PDF/A, используя ghostscript.

Это на самом деле работает, но теперь мы получаем сотни файлов, и мне нужно будет проверить, является ли каждый файл PDF или PDF/A, чтобы избежать запуска сценария в файлах PDF/A.

Есть ли какое-либо решение, чтобы сделать разницу между PDF и PDF/A?

Заранее спасибо.

4 ответа

Решение

Извините за задержку, я заболел.

Я нашел решение для моей проблемы, используя решение Pac0.

Вместо использования XML я использовал iTextSharp.xmp вот так:

public static bool CheckIfPdfa(PdfReader reader)
    {
        if (reader.Metadata != null && reader.Metadata.Length > 0)
        {
            IXmpMeta xmpMeta = XmpMetaParser.Parse(reader.Metadata, null);
            IXmpProperty pdfaidConformance = xmpMeta.GetProperty(XmpConst.NS_PDFA_ID, "pdfaid:conformance");
            IXmpProperty pdfaidPart = xmpMeta.GetProperty(XmpConst.NS_PDFA_ID, "pdfaid:part");
            reader.Close();

            if (pdfaidConformance == null || pdfaidPart == null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        return false;
    }

Спасибо всем за ваши ответы.

Вы можете использовать библиотеку, такую ​​как ITextSharp, которая позволит вам читать файл PDF.

Проверить, является ли это PDF/A (ну, на самом деле, проверить, является ли он PDF/A, которого должно быть достаточно для ваших нужд), - это простая операция по чтению тегов PDF.

Код в этом ответе на другой вопрос должен быть тем, что вам нужно. Это VB.NET, и его легко перевести на C# .

В принципе:

  • откройте PDF с помощью ридера из ITextSharp (или, возможно, любой библиотеки чтения PDF)
  • извлечь метаданные XML
  • проверить тег XML с именем pdfaid:conformanceи посмотреть, если его значение A

Вы можете проверить соответствие документа требованиям, проверив метаданные XMP документа.

Использование интерфейса Datalogics PDFL Library C#:

using (var docInput = new Document("input.pdf"))
{
    bool bIsPdfA1a =  docInput.XMPMetadata.Contains("pdfaid:conformance=\"A\"");
}

Отказ от ответственности: я работаю для Datalogics

Вы можете использовать Spire.PDF для определения уровня соответствия документа PDF. Проверьте следующий код:

PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("MS_Example.pdf");
PdfConformanceLevel conformance = pdf.Conformance;
Console.WriteLine(conformance.ToString());

Выход:

Отказ от ответственности: я сотрудник Spire.

Другие вопросы по тегам