我正在使用docparser处理Pdfs到Excel的转换。 但docparser无法正确处理扫描的pdfs。所以我需要从普通的pdf 中分离扫描的pdf,并且只想通过docparser处理普通的pdf(即API调用)。 是否有退出方式以编程方式识别pdf类型(扫描或正常)以便我可以进一步工作? 如果有人知道如何解决这个问题,请帮忙.....
答案 0 :(得分:0)
最后,我找到了我的问题的解决方案。但不是标准的解决方案(我认为)。感谢评论并提供帮助的人们。
使用 Pdfbox库,我们可以提取扫描的pdf页面,并将每个页面与图像对象的实例(PDImageXObject)进行比较,如果它成真,页面将被视为图像,我们可以计算这些图像。如果 图像等于pdf中的页数。我们会说这是扫描的pdf 。
这是代码 ...
public static String testPdf(String filename) throws IOException
{
String s = "";
int g = 0;
int gg = 0;
PDDocument doc = PDDocument.load(new File(filename));
gg = doc.getNumberOfPages();
for(PDPage page:doc.getPages())
{
PDResources resource = page.getResources();
for(COSName xObjectName:resource.getXObjectNames())
{
PDXObject xObject = resource.getXObject(xObjectName);
if (xObject instanceof PDImageXObject)
{
((PDImageXObject) xObject).getImage();
g++;
}
}
}
doc.close();
if(g==gg) // pdf pages if equal to the images
{
return "Scanned pdf";
}
else
{
return "Searchable pdf";
}
}