強力なオープンソースのXDF処理pdf 2 txt
6392 ワード
2008-09-17 22:47
:http://book.csdn.net/bookfiles/312/10031212844.shtml
xpdf PDF
、PDFBox , API 。 Lucene 。 , 。 , xpdf。
、xpdf
http://www.foolabs.com/xpdf/download.html xpdf。 7-7
xpdf-3.01pl2-win32.zip。 , xpdf-chinese-simplified.tar.gz。
、
xpdf-3.01pl2-win32.zip c:\xpdftest , xpdf-chinese-simplified.tar.gz c:\xpdftest\xpdf\ , 7-8 。
xpdfrc , , 。
7.3
cidToUnicode Adobe-GB1 c:\xpdftest\xpdf\xpdf-chinese-simplified\Adobe-GB1.cidToUnicode
unicodeMap ISO-2022-CN c:\xpdftest\xpdf\xpdf-chinese-simplified\ISO-2022-CN.unicodeMap
unicodeMap EUC-CN c:\xpdftest\xpdf\xpdf-chinese-simplified\EUC-CN.unicodeMap
unicodeMap GBK c:\xpdftest\xpdf\xpdf-chinese-simplified\GBK.unicodeMap
cMapDir Adobe-GB1 c:\xpdftest\xpdf\xpdf-chinese-simplified\CMap
toUnicodeDir c:\xpdftest\xpdf\xpdf-chinese-simplified\CMap
fontDir C:\WINDOWS\Fonts
displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\simhei.ttf
textEOL CR+LF
, windows 2000 ,fontDir C:\WINNT\Fonts,displayCIDFontTT Adobe-GB1 C:\WINNT\Fonts\simhei.ttf。
、
ch7.xpdf , Pdf2Text 。 Runtime , pdftotext.exe 。 。
7.4
public class Pdf2Text {
// PDF
private File pdffile;
// , c:\xpdf
private String CONVERTOR_STORED_PATH = "c:\\xpdf";
// , pdftotext
private String CONVERTOR_NAME = "pdftotext";
// , pdf
public Pdf2Text(String pdffile) throws IOException {
this(new File(pdffile));
}
// , pdf
public Pdf2Text(File pdffile) throws IOException {
this.pdffile = pdffile;
}
// pdf
public void toTextFile() throws IOException {
toTextFile(pdffile, true);
}
// pdf , , PDF
public void toTextFile(String targetfile) throws IOException {
toTextFile(new File(targetfile), true);
}
// pdf , 1 ,
// 2 true PDF
public void toTextFile(String targetfile, boolean isLayout)
throws IOException {
toTextFile(new File(targetfile), isLayout);
}
// pdf ,
public void toTextFile(File targetfile) throws IOException {
toTextFile(targetfile, true);
}
// pdf , 1 ,
// 2 true PDF
public void toTextFile(File targetfile, boolean isLayout)
throws IOException {
String[] cmd = getCmd(targetfile, isLayout);
Process p = Runtime.getRuntime().exec(cmd);
}
// PDF
public String getCONVERTOR_STORED_PATH() {
return CONVERTOR_STORED_PATH;
}
// PDF
public void setCONVERTOR_STORED_PATH(String path) {
if (!path.trim().endsWith("\\"))
path = path.trim() + "\\";
this.CONVERTOR_STORED_PATH = path;
}
//
private String[] getCmd(File targetfile, boolean isLayout) {
//
String command = CONVERTOR_STORED_PATH + CONVERTOR_NAME;
// PDF
String source_absolutePath = pdffile.getAbsolutePath();
//
String target_absolutePath = targetfile.getAbsolutePath();
// layout
String layout = "-layout";
//
String encoding = "-enc";
String character = "GBK";
//
String mistake = "-q";
//
String nopagebrk = "-nopgbrk";
// isLayout false, layout
if (!isLayout)
layout = "";
return new String[] { command, layout, encoding, character, mistake,
nopagebrk, source_absolutePath, target_absolutePath };
}
}
toTextFile() 。 2 :targetfile PDF ,isLayout PDF layout 。 getCmd() , String 。 String , , 。 , Runtime.getRuntime().exec(String[]) 。
: getCmd() , GBK。 , , PDF encoding 。 xpdfrc unicodeMap , 3 , ISO-2022-CN,EUC-CN,GBK, 7-9 。
7-9 xpdfrc
、
Pdf2Text , ch7.xpdf Pdf2TextTest , main , 。
7.5
public class Pdf2TextTest {
public static void main(String[] args) {
try {
// PDF
Pdf2Text p2t = new Pdf2Text("c:\\test.pdf");
//
p2t.setCONVERTOR_STORED_PATH("c:\\xpdftest\\xpdf");
//
p2t.toTextFile("c:\\test.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
}
PDF 7-10 。
7-10
7.5 , 7-11 。
7-11