CSS背景属性在使用java的pdfHTML iText7中不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS背景属性在使用java的pdfHTML iText7中不起作用相关的知识,希望对你有一定的参考价值。

我试图通过使用其方法在iText的帮助下将html转换为pdf

HtmlConverter.convertToPdf(htmlString, pdfDocument, converterProp);

但似乎这项服务并不尊重html中定义的css属性。

这是我的html字符串

String html = "<html>"
            + "<head>"
            + "<style>"
                + "* {-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;}"
                + ".ng-hide {display: none !important;}"
                + "label { font-weight: normal; }"
                + "table { border-spacing: 0;border-collapse: collapse;}"
                + "td, th { padding: 0; }"
                + "@font-face { font-family: Muli; src: url(../fonts/Muli.woff2); }"
                + "body { font-family: 'Muli', sans-serif!important; margin: 0;padding: 0; }"
                + ".font-muli { font-family: Muli !important; }"
            + "</style>"
            + "</head>"
            + "<body>" 
            + "<div>"
                + "<div class='font-muli'>"
                    + "<div style='height: 0.69in; padding: 11px 16px; line-height: 0.49in; display: flex; font-size: 20pt;'>"
                        + "<div>"
                            + "<img style='float: left; height: 45px; margin-right: 11px;vertical-align: middle;' src='icon.png'>"
                            + "<label title='abc' class='it pull-left' style='font-style: italic;float: left;max-width: 3.6in; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;'>abc</label>"
                        + "</div>"
                        + "<div style='font-size: 10pt;margin: auto;max-width: 12in;'>"
                            + "<table style='width: 7.5in;'>"
                                + "<tbody><tr>"
                                    + "<td>"
                                        + "<div style='text-align: center; display: grid;'>"
                                            + "<label class='' style='font-style: italic;float: left;line-height: 1.0;margin: 0;font-size: 20pt;'>1</label>"
                                            + "<label style='float: left;clear: both;line-height: 1;margin: 0 0px;text-transform: capitalize;'>abc</label>"
                                        + "</div>"
                                    + "</td>"
                                    + "<td>"
                                        + "<div style='text-align: center; display: grid;'>"
                                            + "<label style='font-style: italic;float: left;line-height: 1.0;margin: 0;font-size: 20pt;' class=''>2</label>"
                                            + "<label style='float: left;clear: both;line-height: 1;margin: 0 0px;text-transform: capitalize;' class=''>efg</label>"
                                        + "</div>"
                                    + "</td>"
                                    + "<td>"
                                        + "<div style='text-align: center; display: grid;'>"
                                            + "<label style='font-style: italic;float: left;line-height: 1.0;margin: 0;font-size: 20pt;'>3</label>"
                                            + "<label style='float: left;clear: both;line-height: 1;margin: 0 0px;text-transform: capitalize;'>jkl</label>"
                                        + "</div>"
                                    + "</td>"
                                    + "<td>"
                                        + "<div style='text-align: center; display: grid;'>"
                                            + "<label style='font-style: italic;float: left;line-height: 1.0;margin: 0;font-size: 20pt;'>4</label>"
                                            + "<label style='float: left;clear: both;line-height: 1;margin: 0 0px;text-transform: capitalize;'>afqw</label>"
                                        + "</div>"
                                    + "</td>"
                                    + "<td>"
                                        + "<div style='text-align: center; display: grid;'>"
                                            + "<label style='font-style: italic;float: left;line-height: 1.0;margin: 0;font-size: 20pt;'>5</label>"
                                            + "<label style='float: left;clear: both;line-height: 1;margin: 0 0px;text-transform: capitalize;'>qw</label>"
                                        + "</div>"
                                    + "</td>"
                                + "</tr>"
                            + "</tbody></table>"
                        + "</div>"
                    + "</div>"
                    + "<div style='background: url(../imgs/large.png) no-repeat; height: 0.12in; background-position: 0 0px; background-repeat-x: repeat;' class='mainHeaderSeparation'></div>"
                + "</div>"
            + "</div>"
            + "</body>"
}

在这里,我将其转换为pdf

LicenseKey.loadLicenseFile(LICENSE);
PdfWriter writer = new PdfWriter(destination_file);
PdfDocument pdf = new PdfDocument(writer);
pdf.addNewPage(PageSize.A2);
ConverterProperties prop = new ConverterProperties();
HtmlConverter.convertToPdf(html, pdf, prop);

但是pdf没有重复x的背景图像。如果我做错了什么,请帮帮我?或任何步骤都缺失。任何帮助/建议将不胜感激。

注意:图片网址路径没有问题,我看到图片但没有x重复图案。谢谢。

答案

使用属性background-image而不是background

<div style="background-image: url(../imgs/large.png)...

CSS语法:<div style="background-image:url(bgimage.jpg)">

以上是关于CSS背景属性在使用java的pdfHTML iText7中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

你不知道的CSS背景—css背景属性全解

css中background简写属性

css background 属性

java 生成pdf

java 生成pdf

CSS3背景属性详解