3

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"));
        }
    }


4

1 に答える 1

1

新しいPdfStripperオブジェクトを作成するときは、以下の構文を使用して、そのエンコーディングを指定します。

PdfTextStripper pdfStripper = new PDFTextStripper(ISO-XXXX)

ここで、(ISO -XXX)は、PDFで使用される文字エンコードです。

于 2012-08-19T01:20:49.963 に答える