Javascript Java xhtmlrenderer itextrenderer html pdf缺少字母(粗体)

Javascript Java xhtmlrenderer itextrenderer html pdf缺少字母(粗体),javascript,java,pdf,fonts,xhtmlrenderer,Javascript,Java,Pdf,Fonts,Xhtmlrenderer,服务器端: StringBuilder excelExportText=reportService.exportDealReport(criteria); final ITextRenderer renderer = new ITextRenderer(); renderer.getFontResolver().addFont("reports/fonts/Arial.ttf", BaseFont.IDENTITY_H, Ba

服务器端:

        StringBuilder excelExportText=reportService.exportDealReport(criteria);

        final ITextRenderer renderer = new ITextRenderer();
        renderer.getFontResolver().addFont("reports/fonts/Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        renderer.getFontResolver().addFont("reports/fonts/Arial_Bold.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

        String htmlText=excelExportText.toString();

        renderer.setDocumentFromString(new StringBuilder()
                .append("<html>")
                .append("<head><style>@page { size: landscape; } body { font-size: .5em; font-family: Arial,\"Arial bold\";} table tr th {background: #eee;font-weight: bold;border-bottom: 1px solid black;text-align: center;padding: 5px 3px; } tr:nth-child(even) {background: #DDEEF2} tr:nth-child(odd) {background: #FFF} table tr td {padding: 3px;} table {page-break-after: always;border-collapse: collapse;width: 100%;}</style></head>")
                .append("<body>")
                .append(htmlText)
                .append("</body></html>")
                .toString()
                .replaceAll("<br/>", "<br></br>")
                .replaceAll("&","&amp;")
                .replaceAll("&amp;nbsp;"," "));

        renderer.layout();
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        renderer.createPDF(baos);
        Encoder encoder = Base64.getEncoder();
        String base64PDF =encoder.encodeToString(baos.toByteArray());
        baos.close(); 

        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "attachment; filename=report.pdf");
    
        InputStream targetStream = IOUtils.toInputStream(base64PDF, "UTF-8");
        FileCopyUtils.copy(targetStream, response.getOutputStream());
        response.flushBuffer();
}

private base64到ArrayBuffer(数据){
让binaryString=window.atob(数据);
设binaryLen=binaryString.length;
let bytes=新的Uint8Array(二进制数);
for(设i=0;i
}

pdf文件可以从客户端创建和获取。但当打开它时,一些字母消失了,如“d”,“b”。。。缺少的字母都应该用粗体标记th或h。 正如您所见,我在字体解析器中包含了粗体字体(Arial_bold.ttf)。关于英语,没有其他语言字母

请提供建议,并提前感谢

private downloadPdf = (fileName: string, content: any, mimeType: string) => {
  let arrBuffer = this.base64ToArrayBuffer(content);
  let arrBuffer = this.base64ToArrayBuffer(content);
  let newBlob = new Blob([arrBuffer], { type: mimeType });
  let data = window.URL.createObjectURL(newBlob);
  let link = document.createElement("a");
  document.body.appendChild(link);
  link.href = data;
  link.download = fileName;
  link.click();
  window.URL.revokeObjectURL(data);
  link.remove();
private base64ToArrayBuffer(data) {
  let binaryString = window.atob(data);
  let binaryLen = binaryString.length;
  let bytes = new Uint8Array(binaryLen);
  for (let i = 0; i < binaryLen; i++) {
    let ascii = binaryString.charCodeAt(i);
    bytes[i] = ascii;
  }
  return bytes;