我有一个docx文件,带有Calibri Light的Heading1样式(每隔一个文本也使用Calibri Light)。转换为html后,每个文本都是Calibri Light(正确),但当我打开html文件时,Heading1样式的文本是Times New Roman。(原因:html文件内部没有为Heading1样式设置字体系列)
当我打开docx文件并检查Heading1样式的字体时,它显示Calibri Light。
Heading1基于docx中的“正常”样式。
这是docx中的常规样式:
<w:style w:type="paragraph"
w:default="1"
w:styleId="Normal">
<w:name w:val="Normal"/>
<w:qFormat/>
<w:rsid w:val="003D736F"/>
<w:pPr>
<w:spacing w:before="40"
w:after="40"
w:line="240"
w:lineRule="auto"/>
<w:ind w:left="851"/>
<w:jc w:val="both"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri Light"
w:eastAsia="SimSun"
w:hAnsi="Calibri Light"
w:cs="Times New Roman"/>
<w:szCs w:val="20"/>
<w:shd w:val="clear"
w:color="auto"
w:fill="FFFFFF"/>
<w:lang w:eastAsia="zh-CN"/>
</w:rPr>
</w:style>
我明白了,我们有4种字体。但是我们能告诉DOCX4J使用一种特定的字体吗(比如,使用w:ascii并将这种字体放在html文件的Heading1样式中?)标题样式的文本也应该是Calibri Light,这是我的目标。
这就是Heading1的风格:
<w:style w:type="paragraph"
w:styleId="Heading1">
<w:name w:val="heading 1"/>
<w:basedOn w:val="Normal"/>
<w:next w:val="Normal"/>
<w:link w:val="Heading1Char"/>
<w:qFormat/>
<w:rsid w:val="00232342"/>
<w:pPr>
<w:keepNext/>
<w:keepLines/>
<w:numPr>
<w:numId w:val="4"/>
</w:numPr>
<w:spacing w:before="360"
w:after="240"/>
<w:jc w:val="left"/>
<w:outlineLvl w:val="0"/>
</w:pPr>
<w:rPr>
<w:b/>
<w:sz w:val="32"/>
</w:rPr>
</w:style>
这是我正在使用的代码:
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(source));
HTMLSettings htmlSettings = Docx4J.createHTMLSettings();
htmlSettings.setWmlPackage(wordMLPackage);
htmlSettings.setImageDirPath("temp_images");
htmlSettings.setImageTargetUri("temp_images");
htmlSettings.setImageIncludeUUID(false);
boolean nestLists = false;
if (nestLists) {
SdtWriter.registerTagHandler("HTML_ELEMENT", new SdtToListSdtTagHandler());
} else {
// convert numberings to plain text
htmlSettings.getFeatures().remove(ConversionFeatures.PP_HTML_COLLECT_LISTS);
}
OutputStream os = new java.io.FileOutputStream(dest);
Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);
这是html中的两种样式
.Normal {display:block;text-align: justify;position: relative; margin-left: 15mm;margin-top: 1mm;margin-bottom: 1mm;line-height: 100%;}
.Heading1 {display:block;text-align: left;page-break-after: avoid;margin-top: 0.25in;margin-bottom: 4mm;font-weight: bold;font-size: 16.0pt;}
编辑:其他可接受的解决方案是:在html文件中将字体系列设置为“DocDefaults”样式。可能吗?
字体系列使用直接应用的CSS处理。
例如:
<li class="Heading1 Normal DocDefaults " style="display: list-item;"><span class="DefaultParagraphFont " style="font-family: 'Calibri Light';">Chapter 2</span></li></ol>
<p class="Normal DocDefaults "><span class="" style="font-family: 'Calibri Light';">This is an example part, chapter 2</span></p></div>
要应用字体系列,字体必须实际存在于计算机上,或者映射到实际存在的字体(有关示例,请参阅docx4j的ConvertOutHtml示例)。
如果不是这种情况,则不会发出字体系列属性。
为了获得更深入的了解,您可以打开org的调试级别日志。docx4j。字体。RunFontSelector。日志记录示例:
08:54:21.295 [main] DEBUG org.docx4j.fonts.RunFontSelector 1136 - looking for: Calibri Light
08:54:21.295 [main] DEBUG org.docx4j.fonts.RunFontSelector 1144 - Font 'Calibri Light' maps to Calibri Light
我是Docx4j的新手,我需要一些建议。 目前,我正在用Java创建一个简单的(X)超文本标记语言文档。它包含来自数据库的一些信息。创建这个html后,Docx4j使用一个非常简单的word模板创建了一个Word Docx文件。这工作罚款。 现在我必须增强这个HTML。一个数据库值包含保存RTF文件的字节数组。 目前,我将这些数据作为字符串放入HTML。 至少html文件如下所示: Docx4J现
我到处找,到处找。我已经看到了我将要发布的PHP代码中的许多问题,但没有看到任何与我所看到的特定问题相关的问题。 这是我的问题-两行($values/$required),其中我有“name”,“email”,“subject”,“message” 我想在上面加上“电话”。(即“姓名”、“电子邮件”、“电话”、“主题”、“信息”) 如果我把它添加到两行中的一行(不管是哪一行),我仍然可以提交表格,
这困扰我太久了,我很感激你的帮助。我一直在为kable投入时间,但它并没有像我希望的那样对我产生效果。我希望创建多组行,如图所示 执行此操作的代码如下: 这显然不够好。如果我织成pdf,我可以得到正确的输出(第一张图片),但仅此而已。如果我尝试执行save_kable(),结果显示为HTML格式,如第二幅图像所示。每次都编织成pdf格式是如此不切实际,如果我不能解决这个问题,我就不能再使用kabl
对于上面的html内容,我如何使用Jsoup解析并获取文本 当我使用 我得到了这样的东西
我打开这个链接"http://www.amazon.com/s?rh=n: 1"与urllib2和我试图获取下一页链接(href="/s/ref=lp_1_pg_2?rh=n: 283155, n:!1000, n: 1
我是新来的。我想解析html,但问题是我们必须在中指定的URL,我将在运行时从其他页面响应此URL。有没有办法将收到的网址传递到中?我读过这样的东西: 但是我不知道如何使用它。我很想知道是否有其他方法比jsoup更好。