Spire.Office for Java 9.7.0 已正式发布。该版本新增了一些功能,如 Spire.Doc for Java 支持转换 Word 文档到 HTML Fixed 格式的 HTML 文档时内嵌 CSS 和图片;Spire.Presentation for Java 支持给指定文本添加批注;Spire.Barcode for Java 支持获取条码信息,包括类型、数据值和顶点位置信息。此外,一些已知问题也在该版本中被成功修复。更多新功能及问题修复详情如下。
获取 Spire.Office for Java 9.7.0,请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
Spire.Doc for Java
新功能:
- 支持转换 Word 文档到 HTML Fixed 格式的 HTML 文档时内嵌 CSS 和图片的功能。
String inputFile = "1.docx";
String outputFile ="1.html";
Document doc = new Document();
doc.loadFromFile(inputFile);
doc.getHtmlExportOptions().setCssStyleSheetType(CssStyleSheetType.Internal);
doc.getHtmlExportOptions().setImageEmbedded(true);
doc.saveToFile(outputFile, FileFormat.HtmlFixed);
doc.dispose();
问题修复:
- 修复了添加的图片方向不正确的问题。
- 修复了从 Docx 文档转换出的 OFD 文档的大小变大的问题。
- 修复了从 Docx 文档转换出的 HTML 文档中的水印丢失的问题。
- 修复了转换 Docx 文档到 PDF 文档时内容丢失的问题。
- 修复了转换 XML 文档到 Doc 文档时编辑区域丢失的问题。
- 修复了多线程下转换 Word 到 PDF 时程序抛出异常的问题。
- 修复了转换 Docx 文档到 PDF 文档时页码格式不正确的问题。
- 修复了转换 Docx 文档到 PDF 文档时程序抛出 "The authentication or decryption has failed." 错误的问题。
- 修复了多线程下转换 Word 到 OFD 时程序抛出异常的问题。
- 修复了转换 Docx 文档到 PDF 文档时文本方向改变的问题。
- 修复了在 Web 项目中添加目录,第二次以后的请求页码丢失的问题。
- 修复了转换 Docx 文档到 PDF 文档时字体嵌入失败的问题。
Spire.PDF for Java
问题修复:
- 修复了打开压缩后的 PDF 文件报错的问题。
- 修复了添加的 PdfInkAnnotation 效果不正确的问题。
- 修复了获取 PDF 文档的 Javascript,程序抛 "NullPointerException" 的问题。
- 修复了设置 "ImageQuality.Medium" 压缩图片时,程序抛 "java.lang.NoClassDefFoundError" 的问题。
- 修复了拆分的 PDF 文档大小并未减小的问题。
- 修复了创建的是 PdfActionAnnotation,但获取它的类型却为 PdfTextWebLinkAnnotationWidget 的问题。
- 修复了替换 PDF 文本时,程序抛 "NullPointerException" 的问题。
Spire.Presentation for Java
新功能:
- 支持给指定文本添加批注。
Presentation ppt = new Presentation();
ISlide slide = ppt.getSlides().get(0);
IAutoShape shape = ppt.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Double(100, 250, 350, 200));
ppt.getSlides().get(0).getShapes().get(0).getLine().getFillFormat().getSolidFillColor().setColor(Color.white);
shape.getFill().setFillType(FillFormatType.SOLID);
shape.getFill().getSolidColor().setColor(Color.GRAY);
ParagraphEx paragraphEx = shape.getTextFrame().getTextRange().getParagraph();
PortionEx ex = new PortionEx("文本文本文本md文本文本文本文本\ttmd文本文本文本文本md文本文本文本文\tt本md文本文本文本文本md文本文\tt本文本文本md文");
paragraphEx.getTextRanges().append(ex);
ICommentAuthor commentAuthor = ppt.getCommentAuthors().addAuthor("测试","12");
paragraphEx.addComment(commentAuthor,slide,shape,ex,"123");
String result = "result.pptx";
ppt.saveToFile(result, FileFormat.PPTX_2013);
Presentation ppt = new Presentation();
ppt.loadFromFile(inputFile);
ISlide slide = ppt.getSlides().get(0);
IAutoShape shape = (IAutoShape) slide.getShapes().get(0);
ParagraphEx paragraphEx = shape.getTextFrame().getTextRange().getParagraph();
PortionEx portionEx = paragraphEx.getTextRanges().get(0);
ICommentAuthor commentAuthor = ppt.getCommentAuthors().addAuthor("测试","18");
paragraphEx.addComment(commentAuthor,slide,shape,portionEx,"123456789");
String result = "result.pptx";
ppt.saveToFile(result, FileFormat.PPTX_2013);
问题修复:
- 修复了添加内容到形状后,形状高度不正确的问题。
- 修复了修改形状位置,效果不正确的问题。
- 修复了解析 Latex 公式大于和小于符号不正确的问题。
Spire.Barcode for Java
新功能:
- BarcodeScanner 类支持获取条码信息,包括类型、数据值和顶点位置信息。
- BarcodeScanner 类支持扫描 Aztec 类型。
- BarcodeScanner 类支持使用更多重载设置进行扫描。
- 新增外部使用枚举:
- IBarCodeSettings 接口变动
- BarcodeSettings 类接口变动:
BarcodeInfo[] infos = BarcodeScanner.scanInfo("barcode.png");
Point[] loaction = infos[0].getVertexes();
BarCodeReadType barCodeReadType = infos[0].getReadType();
String dataString = infos[0].getDataString();
String[] s = BarcodeScanner.scan("AZTEC.png",BarCodeType.Aztec);
Public static String[] scan(BufferedImage bitmap, java.awt.Rectangle rect, BarCodeType barcodeType, boolean IncludeCheckSum)
Public static String[] scan(String fileName, BarCodeType barcodeType, boolean IncludeCheckSum)
Public static String scanOne(String fileName, BarCodeType barcodeType, boolean IncludeCheckSum)
Public static String scanOne(InputStream stream, BarCodeType barcodeType, boolean IncludeCheckSum)
com.spire.barcode.publics.drawing.FontStyle
com.spire.barcode.publics.drawing.GraphicsUnit
com.spire.barcode.publics.drawing.StringAlignment
回收
public java.awt.Font getTopTextFont()
public java.awt.Font getBottomTextFont()
public java.awt.Font getTextFont()
改变
public void setBottomTextFont(java.awt.Font value)->public void setBottomTextFont(String familyName, float fontSize)
public void setTopTextFont(java.awt.Font value)->public void setTopTextFont(String familyName, float fontSize)
public boolean showBottomText->public boolean isShowBottomText()
public void setShowBottomText(boolean value) -> public void isShowBottomText(boolean value)
public com.spire.barcode.GraphicsUnit getUnit() -> public com.spire.barcode.publics.drawing.GraphicsUnit getUnit()
public void setUnit(com.spire.barcode.GraphicsUnit value) -> public void setUnit(com.spire.barcode.publics.drawing.GraphicsUnit value)
public void setTextFont(java.awt.Font value) -> public void setTextFont(String familyName, float fontSize)
public float getLeftMargin() ->The default value adjusted from 5 to 4.
新增
public float getTopTextMargin()
public void setTopTextMargin(float value)
public int getAztecErrorCorrection()
public void setAztecErrorCorrection(int value)
public int getAztecLayers()
public void setAztecLayers(int value)
public DataMatrixSymbolShape getDataMatrixSymbolShape()
public void setDataMatrixSymbolShape(DataMatrixSymbolShape value)
public ITF14BorderType getITF14BearerBars()
public void setITF14BearerBars(ITF14BorderType value)
public void setTextFont(String familyName, float fontSize, com.spire.barcode.publics.drawing.FontStyle style)
public boolean isShowStartCharAndStopChar()
public void isShowStartCharAndStopChar(boolean value)
回收
public java.awt.Font getTextFont()
public java.awt.Font getTopTextFont()
public java.awt.Font getBottomTextFont()
改变
public void setTextFont(java.awt.Font value) -> public void setTextFont(String familyName, float sizePoints)
public com.spire.barcode.GraphicsUnit getUnit() -> public com.spire.barcode.publics.drawing.GraphicsUnit getUnit()
public void setUnit(com.spire.barcode.GraphicsUnit value) -> public void setUnit(com.spire.barcode.publics.drawing.GraphicsUnit value)
public com.spire.barcode.StringAlignment getTextAlignment() -> public com.spire.barcode.publics.drawing.StringAlignment getTextAlignment()
public void setTextAlignment(com.spire.barcode.StringAlignment value) -> public void setTextAlignment(com.spire.barcode.publics.drawing.StringAlignment value)
public com.spire.barcode.StringAlignment getTopTextAligment() -> public com.spire.barcode.publics.drawing.StringAlignment getTopTextAligment()
public void setTopTextAligment(com.spire.barcode.StringAlignment value) -> public void setTopTextAligment(com.spire.barcode.publics.drawing.StringAlignment value)
public void setBottomTextFont(java.awt.Font value) -> public void setBottomTextFont(String familyName, float fontSize)
public void setTopTextFont(java.awt.Font value) -> public void setTopTextFont(String familyName, float fontSize)
public boolean showBottomText->public boolean isShowBottomText()
public void setShowBottomText(boolean value) -> public void isShowBottomText(boolean value)
public com.spire.barcode.StringAlignment getBottomTextAlignment() -> public com.spire.barcode.publics.drawing.StringAlignment getBottomTextAlignment()
public void setBottomTextAlignment(com.spire.barcode.StringAlignment value) -> public void setBottomTextAlignment(com.spire.barcode.publics.drawing.StringAlignment value)
public float getLeftMargin() ->The default value adjusted from 5 to 4.
新增
public float getTopTextMargin()
public void setTopTextMargin(float value)
public void setTextFont(String familyName, float sizePoints, com.spire.barcode.publics.drawing.FontStyle style)
public void setTopTextFont(String familyName, float fontSize, com.spire.barcode.publics.drawing.FontStyle style)
public void setITF14BearerBars(ITF14BorderType value)
public boolean isShowStartCharAndStopChar()
public void isShowStartCharAndStopChar(boolean value)
public int getAztecLayers()
public void setAztecLayers(int value)
public int getAztecErrorCorrection()
public void setAztecErrorCorrection(int value)
public DataMatrixSymbolShape getDataMatrixSymbolShape()
public void setDataMatrixSymbolShape(DataMatrixSymbolShape value)
public void setBottomTextFont(String familyName, float fontSize, com.spire.barcode.publics.drawing.FontStyle style)
Spire.OCR for Java
新功能:
- 新增 ConfigureOptions 类以及方法 ConfigureDependencies(ConfigureOptions configureOptions),支持配置 OCR 使用的模型、识别语言以及依赖库。
import com.spire.ocr.*;
import java.awt.geom.Rectangle2D;
public class OCRTest {
public static void main(String[] args) throws Exception{
OcrScanner scanner = new OcrScanner();
ConfigureOptions configureOptions = new ConfigureOptions("D:\\LanguageModel", "English");
String dependencies = "dependencies/";
configureOptions.setLibPath(dependencies);
scanner.ConfigureDependencies(configureOptions);
String imageFile = "Sample.png";
scanner. scan(imageFile);
String scannedText=scanner.getText().toString();
StringBuilder stringBuilder=new StringBuilder();
for(IOCRTextBlock blockItem :scanner.getText().getBlocks()){
Rectangle2D rectangle2D=blockItem.getBox();
stringBuilder.append(blockItem.getText() +","+ "X"+ rectangle2D.getX()+"; Y:"+rectangle2D.getY()+ "; Width:"+ rectangle2D.getWidth()+ "; Height:"+ rectangle2D.getHeight());
}
}
}