Как сделать разницу между 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.