我目前正在将文本文档转换为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);
但这似乎不起作用
答案 0 :(得分:1)
因为我在文本文档中有一个字体作为快递。
不,你没有,编辑通常会用Courier显示它。所以你必须设置它,因为默认是Helvetica。
改变这个:
PDDocument pdDocument = new TextToPDF().createPDFFromText(new InputStreamReader(....
到此:
TextToPDF textToPDF = new TextToPDF();
textToPDF.setFont(PDType1Font.COURIER);
textToPDF.createPDFFromText(new InputStreamReader(....