Java Pdf内容到字符串

时间:2018-03-21 12:42:31

标签: java pdfbox

我想知道是否有办法使用Apache PdfBox 2.0.8将pdf文件(原始字节)的内容作为String获取。我正在做的是将PDDocument对象保存到ByteArrayOutputStream,然后创建一个新的String获取ByteArrayOutputStream的字节数组。但是如果我将String保存到文件中,结果是一个空白的pdf。原因是因为pdf的流部分字节与直接从PdDocument对象创建的文件不同。知道这一点后,我尝试使用juniversalchardet获取ByteArrayOutputStream的字符编码,但没有运气。那么,有没有办法实现这个? 这是我到目前为止所尝试的:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PDDocument doc = new PDDocument();
... //Add page, font, pdPageContentStream and text only to doc object with some latin chars (áéíóú)
doc.save(baos);

因此,如果我使用baos对象创建文件,则pdf文件看起来像预期的那样,但如果我这样做:

String str = new String(baos.toByteArray());

然后使用str字节创建一个文件,pdf文件只显示一个空白页面。 希望这次我很清楚:)

1 个答案:

答案 0 :(得分:1)

使用this,只需将所有内容附加到String

StringBuilder sb =  new StringBuilder();
try (PDDocument document = PDDocument.load(new File("your\\path\\file.pdf"))) {
    document.getClass();
    if (!document.isEncrypted()) {
        PDFTextStripperByArea stripper = new PDFTextStripperByArea();
        stripper.setSortByPosition(true);
        PDFTextStripper tStripper = new PDFTextStripper();
        String pdfFileInText = tStripper.getText(document);
        String lines[] = pdfFileInText.split("\\r?\\n");
        for (String line : lines) {
            sb.append(line);
        }
    }
}
return sb.toString();