Проблемы с шрифтами при разборе PDF на текст с использованием PDFBox, FontBox и т. Д. - PullRequest
3 голосов
/ 17 сентября 2011

Я использую pdfbox api для извлечения текста из pdf.
моя программа работает нормально. На самом деле извлекает текст из pdf, но проблемный шрифт текста в pdf находится в CDAC-GISTSurekh (шрифт хинди) , и вывод моей программы не в том же шрифте, как в Mangla .
Это даже не соответствует тексту в 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 Ответ

1 голос
/ 19 августа 2012

Когда вы создаете новый объект PdfStripper, используйте синтаксис ниже и укажите для него кодировку.

PdfTextStripper pdfStripper = new PDFTextStripper(ISO-XXXX)

Где (ISO -XXX) - кодировка символов, используемая в PDF.

...