強力なオープンソースの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