我想使用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();
}