Spire.Office for Java 9.3.1 已正式发布。该版本新增了一些功能,如 Spire.PDF for Java 新增 PdfTextReplacer 类来替换 PDF 文本内容; Spire.XLS for Java 新增 AI 功能; Spire.Presentation for Java 支持在段落中添加数学公式以及获取形状的显示颜色。此外,一些已知问题也在该版本中得到修复。更多新功能及问题修复详情如下。
获取 Spire.Office for Java 9.3.1, 请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
Spire.Doc for Java
新功能:
- MergeImageFieldEventArgs 事件里面新增方法 setImageLink() 支持给邮件合并的图片添加超链接。
- 公开 getFieldOptions() 方法支持在在更新域时设置域属性。
- 新增 hasDigitalSignature() 方法支持判断文档是否存在数字签名。
- 新增 integrateFontTableTo 方法支持将源文档的 Fonttable 数据拷贝到目标文档。
- 新增 HtmlUrlLoadEvent 事件支持在加载 Html 文件时,对文件中的 url 的加载进行控制。
- 新增 setCustomFonts(InputStream[] fontStreamList) 方法支持通过流的方式设置自定义字体。
- 废弃 clearCustomFontsFolders() 方法,使用新增的clearCustomFonts()方法替代 。
- 废弃 setGlobalCustomFontsFolders(InputStream[] fontStreamList) 方法,使用新增的 setGlobalCustomFonts(InputStream[] fontStreamList) 替代。
- 废弃 clearGlobalCustomFontsFolders() 方法,使用新增的 clearGlobalCustomFonts() 方法替代。
Document document = new Document();
document.loadFromFile(inputFile);
String[] fieldNames = new String[]{"ImageFile"};
String[] fieldValues = new String[]{inputFile_img};
document.getMailMerge().MergeImageField = new MergeImageFieldEventHandler() {
@Override
public void invoke(Object sender, MergeImageFieldEventArgs args) {
mailMerge_MergeImageField(sender, args);
}
};
document.getMailMerge().execute(fieldNames, fieldValues);
document.saveToFile(outputFile, FileFormat.Docx);
private static void mailMerge_MergeImageField(Object sender, MergeImageFieldEventArgs field) {
String filePath = field.getImageFileName();
if (filePath != null && !"".equals(filePath)) {
try {
field.setImage(filePath);
field.setImageLink("https://www.baidu.com/");
} catch (Exception e) {
e.printStackTrace();
}
}
document.getFieldOptions().setCultureSource(FieldCultureSource.CurrentThread);
Document.hasDigitalSignature("filepath");
sourceDoc.integrateFontTableTo(Document destDoc);
public static void main(String[] args) {
Document document = new Document();
document.HtmlUrlLoadEvent = new MyDownloadEvent();
document.loadFromFile(inputFile, FileFormat.Html, XHTMLValidationType.None);
document.saveToFile(outputFile, FileFormat.PDF);
}
static class MyDownloadEvent extends HtmlUrlLoadHandler {
@Override
public void invoke(Object o, HtmlUrlLoadEventArgs htmlUrlLoadEventArgs) {
try {
byte[] bytes = downloadBytesFromURL(htmlUrlLoadEventArgs.getUrl());
htmlUrlLoadEventArgs.setDataBytes(bytes);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static byte[] downloadBytesFromURL(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// 设置连接超时时间和读取超时时间
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
return outputStream.toByteArray();
} else {
throw new Exception("Failed to download content. Response code: " + responseCode);
}
}
document.setCustomFonts(InputStream[] fontStreamList);
document.clearCustomFonts();
Document.setGlobalCustomFonts(InputStream[] fontStreamList);
Document.clearGlobalCustomFonts();
问题修复:
- 优化了转换 Word 到 OFD 后结果文件的大小。
Spire.XLS for Java
新功能:
- 新增 AI 功能,可以在 AI 的帮助下实现文档计算、范围合并、图片生成、文件上传、提问以及翻译等功能。
问题修复:
- 优化了解析 Excel 文档时,内存占用高的问题。
- 修复了直接加载保存 Excel 文档后,打开报错的问题。
- 修复了复制 worksheet 表后,形状丢失的问题。
Spire.PDF for Java
新功能:
- 新增 PdfTextReplacer 类来替换 PDF 文本内容。
- 支持了为 PDF 添加 InkAnnotation。
PdfDocument doc = new PdfDocument();
doc.loadFromFile("Input.pdf");
PdfPageBase page = doc.getPages().get(0);
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
textReplacer.replaceAllText("old", "NEW");
doc.saveToFile("output.pdf");
doc.dispose();
PdfDocument doc = new PdfDocument();
PdfPageBase pdfPage = doc.getPages().add();
List<int[]> inkList = new ArrayList<>();
int[] intPoints = new int[]
{
100,800,
200,800,
200,700
};
inkList.add(intPoints);
PdfInkAnnotation ia = new PdfInkAnnotation(inkList);
ia.setColor(new PdfRGBColor(Color.RED));
ia.getBorder().setWidth(12);
ia.setText("e-iceblue");
((PdfNewPage) pdfPage).getAnnotations().add(ia);
doc.saveToFile("inkannotation.pdf");
问题修复:
- 优化了 PDF 数字签名时间同系统本地时间。
- 修复了使用 pdfDocument.getConformance() 获取的 PDF 类型不正确的问题。
- 修复了两次使用 setRowSpan() 抛 "StackOverflow" 异常的问题。
- 修复了转 OFD 到 PDF 内容丢失的问题。
Spire.Presentation for Java
新功能:
- 支持在段落中添加数学公式。
- 支持了获取形状(shape)的显示颜色。
Presentation ppt = new Presentation();
String latexMathCode="x^{2}+\\sqrt{x^{2}+1=2}";
IAutoShape shape=ppt.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE,new Rectangle2D.Float(30,100,400,200));
shape.getTextFrame().getParagraphs().clear();
ParagraphEx p=new ParagraphEx();
shape.getTextFrame().getParagraphs().append(p);
PortionEx portionEx=new PortionEx("Test");
p.getTextRanges().append(portionEx);
p.appendFromLatexMathCode(latexMathCode);
PortionEx portionEx2=new PortionEx("Hello");
p.getTextRanges().append(portionEx2);
ppt.saveToFile(outputFile, FileFormat.AUTO);
Presentation ppt = new Presentation();
ppt.loadFromFile("input.pptx");
IAutoShape shape = (IAutoShape)ppt.getSlides().get(0).getShapes().get(0);
System.out.println(shape.getDisplayFill().getFillType().getName());
System.out.println(shape.getDisplayFill().getSolidColor().getColor());
问题修复:
- 修复了合并文档时程序抛“DocumentEditException”异常的问题。