使用PDFBox,FontBox等解析PDF到文本的字体问题

时间:2011-09-17 11:06:29

标签: java pdfbox

我正在使用 pdfbox api pdf中提取文字。
我的程序工作正常它实际上是从pdf中提取文本,但pdf中的问题字体是 CDAC-GISTSurekh(印地语字体),我的程序的输出与忙拉的。
它甚至不与pdf中的文本匹配。
我下载了相同的字体,即CDAC-GISTSurekh(印地语字体),并将其添加到我的计算机字体中,但仍然输出格式为Mangla。
解析时有没有办法改变输出的字体。

感谢任何帮助..

我编写的代码:



    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import org.apache.pdfbox.cos.COSDocument;
    import org.apache.pdfbox.pdfparser.PDFParser;
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.util.PDFTextStripper;

    public class PDFTextParser {
        static String pdftoText(String fileName) {
            PDFParser parser;
            String parsedText = null;
            PDFTextStripper pdfStripper = null;
            PDDocument pdDoc = null;
            COSDocument cosDoc = null;
            File file = new File(fileName);
            if (!file.isFile()) {
                System.out.println("File " + fileName + " does not exist.");
                return null;
            }
            try {
                parser = new PDFParser(new FileInputStream(file));
            } catch (IOException e) {
                System.out.println("Unable to open PDF Parser. " + e.getMessage());
                return null;
            }
            try {
                parser.parse();
                cosDoc = parser.getDocument();
                pdfStripper = new PDFTextStripper();
                pdDoc = new PDDocument(cosDoc);
                pdfStripper.setStartPage(1);
                pdfStripper.setEndPage(5);
                parsedText = pdfStripper.getText(pdDoc);
            } catch (Exception e) {
                        e.printStackTrace();
                System.out.println("An exception occured in parsing the PDF Document."+ e.getMessage());
            } finally {
                try {
                    if (cosDoc != null)
                        cosDoc.close();
                    if (pdDoc != null)
                        pdDoc.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return parsedText;
        }
        public static void main(String args[]){
            System.out.println(pdftoText("J:\\Users\\Shantanu\\Documents\\NetBeansProjects\\Pdf\\src\\PDfman\\A0410001.pdf"));
        }
    }


1 个答案:

答案 0 :(得分:1)

创建新的PdfStripper对象时,请使用以下语法并为其指定编码。

PdfTextStripper pdfStripper = new PDFTextStripper(ISO-XXXX)

其中(ISO -XXX)是PDF中使用的字符编码。