gpt4 book ai didi

java - 为什么在使用 PDFBox 时出现此错误 "java.io.IOException: Error: Header doesn' t 包含版本信息?

转载 作者:行者123 更新时间:2023-11-29 09:31:56 48 4
gpt4 key购买 nike

这是我第一次在这里发帖,如有不当之处,请见谅。我正在尝试编写一个程序,在 pdf 文件夹中找到某些模式,然后使用 PDFBox 将它们打印为列表。目前,它会在一些文件中找到模式匹配,但不是所有文件,即使我检查过并且每个文件中应该有一个。它还会在打印前返回一个错误,提示“java.io.IOException: Error: Header doesn't contain versioninfo”。我想知道这是否是它不返回某些模式匹配的原因?如果是,我该如何解决?整个 try/catch/finally 部分让我有点困惑,所以可能与此有关。 (我删除了一些该问题不需要的代码)

public class PDF
{
public static void main(String[] args) throws IOException

{
String number;
String name;
String state;
String numberR = "\\d{3}([.-])?\\d{3}\\1?\\d{4}|\\(\\d{3}\\)([.-])?\\d{3}\\2?\\d{4}|\\(\\d{3}\\)\\s\\d{3}([.-])?\\d{4}";
String stateR = "[,]\\sAL\\s|[,]\\sMT\\s|[,]\\sAK\\s|[,]\\sNE\\s|[,]\\sAZ\\s|[,]\\sNV\\s|[,]\\sAR\\s|[,]\\sNH\\s|[,]\\sCA\\s|[,]\\sNJ\\s|[,]\\sCO\\s|[,]\\sNM\\s|[,]\\sCT\\s|[,]\\sNY\\s|[,]\\sDE\\s|[,]\\sNC\\s|[,]\\sFL\\s|[,]\\sND\\s|[,]\\sGA\\s|[,]\\sOH\\s|[,]\\sHI\\s|[,]\\sOK\\s|[,]\\sID\\s|[,]\\sOR\\s|[,]\\sIL\\s|[,]\\sPA\\s|[,]\\sIN\\s|[,]\\sRI\\s|[,]\\sIA\\s|[,]\\sSC\\s|[,]\\sKS\\s|[,]\\sSD\\s|[,]\\sKY\\s|[,]\\sTN\\s|[,]\\sLA\\s|[,]\\sTX\\s|[,]\\sME\\s|[,]\\sUT\\s|[,]\\sMD\\s|[,]\\sVT\\s|[,]\\sMA\\s|[,]\\sVA\\s|[,]\\sMI\\s|[,]\\sWA\\s|[,]\\sMN\\s|[,]\\sWV\\s|[,]\\sMS\\s|[,]\\sWI\\s|[,]\\sMO\\s|[,]\\sWY\\s|s";
File folder = new File("/Users/bob/Desktop/");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles)
{
if (file.isFile())
{
name = file.getName();
state = findInfo(stateR, name);
number = findInfo(numberR, name);
System.out.print(name + " " + number + " " + state.substring(1));
System.out.println();
}
}
}

public static String findInfo(String regex,String name) throws IOException
{
File input = new File("/Users/bob/Desktop/" + name);
PDDocument pd = null;
try
{
pd = PDDocument.load(input);
StringBuilder sb = new StringBuilder();
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage(1);
sb.append(stripper.getText(pd));
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(sb);

while (m.find())
{
return m.group();
}

}
catch (Exception e)
{
e.printStackTrace();
return " ";
}
finally
{
if (pd != null)
{
pd.close();
}
}
return " ";
}
}

编辑:也许这与 PDFBox 读取文件的方式有关?我尝试打印出其中一个不起作用的文件并得到了这个:

         !"#    $%&'(! (

) *$

    +   )
,-

."/!01%%23/4$56667“ $$4$% 8 %85 % $8 - %,(# 58"89$"...

最佳答案

我遇到了同样的问题,这是因为您在此处阅读的 pdf 文件不正确

PDDocument.load(input);

当您尝试加载不同的 pdf 文件时,PDFBox 将抛出该错误

关于java - 为什么在使用 PDFBox 时出现此错误 "java.io.IOException: Error: Header doesn' t 包含版本信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730959/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com