java - Java:包含不同样式的更多 span 无法使用 OpenHtmlToPdf 转换为 PDF 格式
问题描述
我正在发现 OpenHtmlToPdf 用于将 html 转换为 pdf。好吧,它正在使用我的自定义字体,但是当我为样式提供多个跨度标签时,它失败了。在这种情况下,它没有加载正确的字体....
<p>invalid format</p>
<span style="font-family:'Courier Prime'">
<span style="color:yellow">
<span style="font-size:36pt">
Hello World!
</span>
</span> </span>
<p>working format</p>
<span style="font-family:'Courier
Prime';color:yellow;font-size:36pt">Hello World!</span>
代码:这是spring-boot服务的相关部分...
@Service
public class HtmltoPdfServiceImpl implements HtmlToPdfService {
@Autowired
private PdfRendererBuilder pdfRendererBuilder;
@Override
public byte[] topdf(HtmlToPdfModel htmlmap) throws HtmlToPdfException {
byte[] pdf;
String html = htmlmap.getHtmlbody();
try (ByteArrayOutputStream os = new ByteArrayOutputStream()){
pdfRendererBuilder.withHtmlContent(html, "");
pdfRendererBuilder.toStream(os);
pdfRendererBuilder.run();
pdf = os.toByteArray();
} catch (IOException e) {
throw new HtmlToPdfException("...");
}
return pdf;
}}
@Configuration
@Slf4j
public class PdfRendererBuilderConfig {
@Bean
public PdfRendererBuilder pdfRendereBuilderBean() throws IOException {
Integer x = 210;
Integer y = 297;
Path fontDirectory = Paths.get("/fonts");
PdfRendererBuilder pdfRendererBuilder = new PdfRendererBuilder();
pdfRendererBuilder.useDefaultPageSize(x, y, BaseRendererBuilder.PageSizeUnits.MM);
pdfRendererBuilder.useFastMode();
List<CSSFont> fonts = AutoFont.findFontsInDirectory(fontDirectory);
fonts.forEach(s->log.info(s.familyCssEscaped()+" loaded ..."));
AutoFont.toCSSEscapedFontFamily(fonts);
AutoFont.toBuilder(pdfRendererBuilder, fonts);
return pdfRendererBuilder;
}}
解决方案
推荐阅读
- r - 使用 Lavaan 的 CFA 中复杂指标的 Rsquared 值
- freemarker - 如何以正常方式过早结束 FreeMarker 处理?
- rust - 取消固定 BoxStream 以使用 Tonic gRPC 流发送
- css - Bootstrap 的 div 高度问题
- javascript - 定义为继承时,HTML 输入字体大小更大
- java - 在 java 中使用 TextIO.read 读取文件时,Beam 无法检测到分隔符
- javascript - 处理成文件后不显示数据 proDetails
- python - 这个 Flask 请求有什么问题?
- android - 无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 构建的字节码中。请指定正确的“-jvm-target”选项
- wordpress - 更改 WordPress 帖子状态标签