Java 解析PDF文件时出现问题
我使用HTMLPasser1.6解析网站 问题是,当我解析pdf网站时,我在输出文件中获得奇怪的字符,如Java 解析PDF文件时出现问题,java,parsing,pdf,Java,Parsing,Pdf,我使用HTMLPasser1.6解析网站 问题是,当我解析pdf网站时,我在输出文件中获得奇怪的字符,如 ØÇÁÖÜ/:?ÖQØ?WÕWÏ 这是我的代码片段: try { parser = new Parser (); if (1 < args.length) filter = new TagNameFilter (args[1]); else { filter = null; parser.setF
ØÇÁÖÜ/:?ÖQØ?WÕWÏ
这是我的代码片段:
try {
parser = new Parser ();
if (1 < args.length)
filter = new TagNameFilter (args[1]);
else
{
filter = null;
parser.setFeedback (Parser.STDOUT);
Parser.getConnectionManager ().setMonitor (parser);
}
Parser.getConnectionManager ().setRedirectionProcessingEnabled (true);
Parser.getConnectionManager ().setCookieProcessingEnabled (true);
// Here the pdf web site
parser.setResource ("http://hal.archives-ouvertes.fr" +
"/docs/00/16/76/78/PDF /27_Bendaoud.pdf");
NodeList list = parser.parse(filter);
NodeIterator i = list.elements ();
while (i.hasMoreNodes ())
processMyNodes(i.nextNode ());
}
catch (EncodingChangeException ece) {
try {
parser.reset ();
NodeList list = parser.parse(filter);
for (NodeIterator i = list.elements (); i.hasMoreNodes (); )
processMyNodes (i.nextNode ());
}
catch (ParserException e) {
e.printStackTrace ();
}
}
catch (ParserException e) {
e.printStackTrace ();
}
试试看{
parser=newparser();
如果(1<参数长度)
过滤器=新的标记名过滤器(args[1]);
其他的
{
filter=null;
parser.setFeedback(parser.STDOUT);
Parser.getConnectionManager().setMonitor(解析器);
}
Parser.getConnectionManager().setRedirectionProcessingEnabled(true);
Parser.getConnectionManager().setCookieProcessingEnabled(true);
//这里是pdf网站
parser.setResource(“http://hal.archives-ouvertes.fr" +
“/docs/00/16/76/78/PDF/27_Bendaoud.PDF”);
NodeList list=parser.parse(过滤器);
节点运算符i=list.elements();
而(i.hasMoreNodes())
processMyNodes(i.nextNode());
}
捕获(编码更改异常ece){
试一试{
parser.reset();
NodeList list=parser.parse(过滤器);
对于(NodeIterator i=list.elements();i.hasMoreNodes();)
processMyNodes(i.nextNode());
}
捕获(解析){
e、 printStackTrace();
}
}
捕获(解析){
e、 printStackTrace();
}
更新:
我使用iText解析PDF文件。它在本地文件上运行良好,但我想解析托管在web服务器中的PDF文件,例如:
"
如何使用iText或其他库执行此任务?线索在名称中-parses HTML。HTML如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>SimonJ's homepage</title></head>
<body>...</body>
</html>
%PDF-1.5^M%<E2><E3><CF><D3>1 0 obj<</Contents 3 0 R/Type/Page/Parent 121 0
R/Rotate 0/MediaBox[0 0 419.528015 595.276001]/CropBox[0 0 419.528015
595.276001]/Resources 2 0 R>>^Mendobj^M2 0 obj<</ColorSpace<</Cs6 132 0 R>>
/Font<</F3 102 0 R/F4 105 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS1 134 0
R>>>>^Mendobj^M3 0 obj<</Length 917/Filter/FlateDecode>>stream
H<89><A4><95><DB>r<A3>F^P<86><9F><80>w<E8>K<94>Z<8D><E7><C0><CC>0<97>^X!^E^WF
<8A><C0><9B><B8>\{At2ESC ^\!<EF><96><DF>>= K"<B1>R<9B>Jq<C1><A9>^O_<FF>...
SimonJ的主页
...
PDF不是HTML-在其原始形式中,它们看起来像这样:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>SimonJ's homepage</title></head>
<body>...</body>
</html>
%PDF-1.5^M%<E2><E3><CF><D3>1 0 obj<</Contents 3 0 R/Type/Page/Parent 121 0
R/Rotate 0/MediaBox[0 0 419.528015 595.276001]/CropBox[0 0 419.528015
595.276001]/Resources 2 0 R>>^Mendobj^M2 0 obj<</ColorSpace<</Cs6 132 0 R>>
/Font<</F3 102 0 R/F4 105 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS1 134 0
R>>>>^Mendobj^M3 0 obj<</Length 917/Filter/FlateDecode>>stream
H<89><A4><95><DB>r<A3>F^P<86><9F><80>w<E8>K<94>Z<8D><E7><C0><CC>0<97>^X!^E^WF
<8A><C0><9B><B8>\{At2ESC ^\!<EF><96><DF>>= K"<B1>R<9B>Jq<C1><A9>^O_<FF>...
%PDF-1.5^M%10对象^Mendobj^M2 0对象^Mendobj^M3 0对象流
H或者尽管需要提醒:PDF文件格式不是为方便提取文本而设计的-许多博士生在尝试时都筋疲力尽了…线索在名称中-解析HTML。HTML如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>SimonJ's homepage</title></head>
<body>...</body>
</html>
%PDF-1.5^M%<E2><E3><CF><D3>1 0 obj<</Contents 3 0 R/Type/Page/Parent 121 0
R/Rotate 0/MediaBox[0 0 419.528015 595.276001]/CropBox[0 0 419.528015
595.276001]/Resources 2 0 R>>^Mendobj^M2 0 obj<</ColorSpace<</Cs6 132 0 R>>
/Font<</F3 102 0 R/F4 105 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS1 134 0
R>>>>^Mendobj^M3 0 obj<</Length 917/Filter/FlateDecode>>stream
H<89><A4><95><DB>r<A3>F^P<86><9F><80>w<E8>K<94>Z<8D><E7><C0><CC>0<97>^X!^E^WF
<8A><C0><9B><B8>\{At2ESC ^\!<EF><96><DF>>= K"<B1>R<9B>Jq<C1><A9>^O_<FF>...
SimonJ的主页
...
PDF不是HTML-在其原始形式中,它们看起来像这样:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>SimonJ's homepage</title></head>
<body>...</body>
</html>
%PDF-1.5^M%<E2><E3><CF><D3>1 0 obj<</Contents 3 0 R/Type/Page/Parent 121 0
R/Rotate 0/MediaBox[0 0 419.528015 595.276001]/CropBox[0 0 419.528015
595.276001]/Resources 2 0 R>>^Mendobj^M2 0 obj<</ColorSpace<</Cs6 132 0 R>>
/Font<</F3 102 0 R/F4 105 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS1 134 0
R>>>>^Mendobj^M3 0 obj<</Length 917/Filter/FlateDecode>>stream
H<89><A4><95><DB>r<A3>F^P<86><9F><80>w<E8>K<94>Z<8D><E7><C0><CC>0<97>^X!^E^WF
<8A><C0><9B><B8>\{At2ESC ^\!<EF><96><DF>>= K"<B1>R<9B>Jq<C1><A9>^O_<FF>...
%PDF-1.5^M%10对象^Mendobj^M2 0对象^Mendobj^M3 0对象流
H或者尽管需要提醒:PDF文件格式不是为方便提取文本而设计的-许多博士生在尝试时已经筋疲力尽了…HTMLPasser或任何其他HTML或XML解析器在解析PDF文件方面都没有希望。HTML是一种与PDF格式完全不同的格式
您需要做的是让web爬网软件注意远程web服务器在您获取文档时返回的内容类型标题。这会告诉您刚获取的资源的标称格式。如果内容类型是PDF,或链接提取器无法处理的其他格式,则您可以使用我们不会试图解析它
目前,您的代码执行以下操作:
parser.setResource ("http://hal.archives-ouvertes.fr" +
"/docs/00/16/76/78/PDF /27_Bendaoud.pdf");
这需要替换为使用已打开的InputStream等设置资源的内容。HtmlParser或任何其他HTML或XML解析器都不希望解析PDF。HTML与PDF格式完全不同
您需要做的是让web爬网软件注意远程web服务器在您获取文档时返回的内容类型标题。这会告诉您刚获取的资源的标称格式。如果内容类型是PDF,或链接提取器无法处理的其他格式,则您可以使用我们不会试图解析它
目前,您的代码执行以下操作:
parser.setResource ("http://hal.archives-ouvertes.fr" +
"/docs/00/16/76/78/PDF /27_Bendaoud.pdf");
这需要替换为使用已打开的InputStream等设置资源的内容。如果1/您格式化代码摘要,2/您提供更多详细信息(代码语言,链接到HTMLPasser,…),您很可能会得到答案嗯,pdf不是html,因此我不希望HTMLPasser以任何形式或形式解析它们。如果1/您格式化代码摘要,2/您提供更多细节(代码语言,链接到HTMLPasser,…),您很可能会得到答案嗯,pdf不是html,因此我不希望HTMLPasser以任何形式解析它们。