java 使用PDFBox、FontBox等将PDF解析为文本时的字体问题

s5a0g9ez  于 2023-01-15  发布在  Java
关注(0)|答案(1)|浏览(479)

我正在使用pdfbox APIpdf中提取文本。
我的程序工作正常,它实际上是从PDF中提取文本,但PDF中文本的问题字体是CDAC-GISTSurekh(印地语字体),我的程序输出的字体与Mangla中的字体不同。
它甚至与pdf中的文本不匹配。
我下载了相同的字体,即CDAC-GISTSurekh(印地语字体),并添加到我的计算机字体,但输出仍然是在曼格拉格式化。
有没有办法在解析时改变输出的字体?
感谢你的帮助。
代码我已经写:

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

l7mqbcuq1#

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

PdfTextStripper pdfStripper = new PDFTextStripper(ISO-XXXX)

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

相关问题