com.aspose.words中docx转pdf,生成的pdf字体错乱
时间: 2023-07-04 17:06:20 浏览: 107
出现字体错乱的原因可能是因为在转换过程中缺少相关字体文件或者字体文件未正确引用。您可以尝试以下解决方案:
1. 确认系统中安装了需要的字体,如果没有,可以手动下载相关字体并安装。
2. 在代码中指定字体路径,让Aspose.Words能够正确引用字体文件。示例代码如下:
```java
// 加载字体
String fontPath = "/usr/share/fonts/chinese/TrueType/simhei.ttf";
FontsLoader.loadExternalFonts(new String[] { fontPath });
// 转换文档到PDF
Document doc = new Document("input.docx");
doc.save("output.pdf");
```
3. 如果您使用的是较老版本的Aspose.Words,可以尝试升级到最新版本,因为新版本通常会修复一些字体转换方面的问题。
4. 最后,您也可以考虑将docx文件先转换成HTML或XPS格式,然后再使用Aspose.Pdf将其转换成PDF文件。这种方式可能比直接将docx转换成PDF更容易实现字体正确显示。
相关问题
com.aspose.words中docx转pdf设置字体
在使用Aspose.Words将DOCX文档转换为PDF时,可以使用以下代码设置字体:
```java
// 加载DOCX文档
Document doc = new Document("input.docx");
// 创建PDF的Options对象
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
// 设置嵌入字体
pdfSaveOptions.setEmbedFullFonts(true);
// 设置字体子集化
pdfSaveOptions.setSubsetFonts(true);
// 设置嵌入的字体格式
pdfSaveOptions.setEmbedStandardWindowsFonts(true);
// 设置PDF的输出路径
pdfSaveOptions.setSaveFormat(SaveFormat.PDF);
doc.save("output.pdf", pdfSaveOptions);
```
在这个例子中,我们创建了一个`PdfSaveOptions`对象并设置了字体的相关选项。`setEmbedFullFonts`方法指定是否嵌入完整字体集,`setSubsetFonts`方法指定是否启用字体子集化,`setEmbedStandardWindowsFonts`方法指定是否嵌入标准Windows字体。最后,我们将PDF的保存格式设置为`PDF`并将其保存到指定的输出路径中。
com.aspose.words中html转docx解决英文换行问题
在使用com.aspose.words将HTML转换为DOCX时,您可以采用以下方法解决英文换行问题:
1. 确保HTML中的所有标签和样式都正确闭合,以避免出现不必要的换行符。
2. 在将HTML转换为DOCX之前,可以使用jsoup等库对HTML进行预处理,将所有的换行符(\n)和回车符(\r)移除。
3. 在使用com.aspose.words将HTML转换为DOCX时,可以使用以下代码设置属性以解决英文换行问题:
```
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.getFont().setLocaleId(1033); //设置英文语言
builder.getFont().setNoProofing(true); //禁用拼写检查
builder.getParagraphFormat().setSpaceAfter(0); //设置段后间距为0
builder.getParagraphFormat().setLineSpacing(1.0); //设置行距为1.0
builder.insertHtml(htmlString);
doc.save(outputFile, SaveFormat.DOCX);
```
以上代码会将文档的语言设置为英文,并禁用拼写检查,同时设置段后间距为0,行距为1.0,以确保英文文本不会出现多余的换行符。