簡體   English   中英

PDFBox TextToPdf保留字體

[英]PDFBox TextToPdf keep font

我目前正在將文本文檔轉換為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);

但這似乎也不起作用

因為我在文本文檔中有一種字體作為快遞。

不,您不會,編輯器通常使用Courier來顯示它。 因此,您必須進行設置,因為默認值為Helvetica。

更改此:

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

對此:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM