PDFBox TextToPdf保留字体

时间:2017-11-15 17:31:51

标签: java pdfbox

我目前正在将文本文档转换为pdf并将其呈现给浏览器,但似乎无法保留字体。字体是快递的,但在转换为pdf时会转换为其他字体。是否有一种简单的方法可以保持默认字体?或者至少能够在转换后设置它?这是代码。

public void downloadFile(HttpServletResponse response, List<Report> reports) throws IOException{
    OutputStream outputStream = response.getOutputStream();
    PDFMergerUtility pdfMergerUtility = new PDFMergerUtility();
    PDDocument documentToPrint = new PDDocument();
    for(Report report : reports){
        PDDocument pdDocument = new TextToPDF().createPDFFromText(new InputStreamReader(
                new FileInputStream(fileDirectory + File.separator + report.getFileLocation()), "UTF8")
        );
        pdfMergerUtility.appendDocument(documentToPrint, pdDocument);
    }
    pdfMergerUtility.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());

    response.setContentType("application/pdf");
    response.addHeader("Content-Disposition", "inline; filename=" + "download.pdf");
    documentToPrint.save(outputStream);
    documentToPrint.close();
}

我还尝试在添加文档之前将其设置为以下内容。

    PDDocumentCatalog documentCatalog = pdDocument.getDocumentCatalog();
    PDResources pdResources = documentCatalog.getPages().get(i).getResources();
    pdResources.add(PDType1Font.COURIER);
    documentCatalog.getPages().get(i++).setResources(pdResources);

但这似乎不起作用

1 个答案:

答案 0 :(得分:1)

  

因为我在文本文档中有一个字体作为快递。

不,你没有,编辑通常会用Courier显示它。所以你必须设置它,因为默认是Helvetica。

改变这个:

PDDocument pdDocument = new TextToPDF().createPDFFromText(new InputStreamReader(....

到此:

TextToPDF textToPDF = new TextToPDF();
textToPDF.setFont(PDType1Font.COURIER);
textToPDF.createPDFFromText(new InputStreamReader(....