我开发了一个基于控制台的应用程序,它使用ghostscript在所有midnights中浏览相同的文件夹以PDF / A转换PDF。
它确实有效,但现在我们收到了数百个文件,我需要检查每个文件是PDF还是PDF / A,以避免在PDF / A文件中启动脚本。
有没有解决方案来区分PDF和PDF / A?
提前谢谢你。
答案 0 :(得分:1)
您可以使用ITextSharp等库来阅读PDF文件。
要检查它是否是PDF / A(实际上,检查它是否声称是PDF / A,这应该足以满足您的需要)是阅读PDF标签的简单操作。
this answer to another question中的代码应该是您所需要的。它是VB.NET,它应该很容易转换为C#。
基本上:
pdfaid:conformance
的XML标记,看其值是否为A
答案 1 :(得分:0)
您可以使用Spire.PDF检测PDF文档的一致性级别。请查看以下代码:
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("MS_Example.pdf");
PdfConformanceLevel conformance = pdf.Conformance;
Console.WriteLine(conformance.ToString());
输出:
免责声明:我是Spire的员工。
答案 2 :(得分:0)
您可以通过检查文档的XMP元数据来检查文档是否声称符合要求。
使用Datalogics PDFL库C#接口:
using (var docInput = new Document("input.pdf"))
{
bool bIsPdfA1a = docInput.XMPMetadata.Contains("pdfaid:conformance=\"A\"");
}
免责声明:我为Datalogics工作
答案 3 :(得分:0)
对不起,我生病了。
我使用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;
}
谢谢大家的回答。