我想使用pdfbox保留布局和字体样式格式从pdf提取文本

我正在使用Pdfbox版本2.0.16

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.tools.PDFText2HTML;

import io.github.jonathanlink.PDFLayoutTextStripper;

 try {
            InputStream is = new FileInputStream(new File("filpath.pdf"));// ..... Read PDF file
            PDDocument pdd = PDDocument.load(is); //This is the      in-memory representation of the PDF document.
            PDFText2HTML converter = new PDFText2HTML(); // the converter

            String html = converter.getText(pdd); // html but lost layout

            String text =    new PDFLayoutTextStripper().getText(pdd); // layout but lost font style


            pdd.close();
            is.close();
        } catch (IOException ioe) {
            // ......
        }


我希望html结果保持布局格式?

最佳答案

这不是提取字体的正确方法。要阅读字体,必须遍历pdf页面并提取字体,如下所示:

PDDocument  doc = PDDocument.load("C:/mydoc3.pdf");
List<PDPage> pages = doc.getDocumentCatalog().getAllPages();
for(PDPage page:pages){
    Map<String,PDFont> pageFonts=page.getResources().getFonts();
}

07-24 12:42
查看更多