彩票走势图

Aspose.Words 15.3 含多项功能改进和漏洞修复

原创|产品更新|编辑:龚雪|2015-04-22 10:10:26.000|阅读 395 次

概述:Aspose.Words 15.3 正式发布。此次更新内容有131项,包含功能改进和漏洞修复。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Aspose.Words 15.3 正式发布。此次更新内容有131项,包含功能改进和漏洞修复。其中最显著的内容有:

  • 关于处理 RTL text, text boxes, cell vertical alignment及其他的排版引擎的改进。
  • 改进了所有文件格式的导入和导出。
  • 优化了某些情形下输出PDF文档的尺寸大小。
  • 在整个周期内Document.WarningCallback 属性都可以向你发送格式化报告。
  • 字段现在更新在内部DrawingML形状。
  • ShapeRenderer.OpaqueBoundsInPoints返回"real"形状边界。
  • 改进了填充、3D文字效果和其他东西的渲染。
  • 目前支持条形码字段了,您可以添加一个自定义条码生成器。

引入Public BarCode Generation API

支持 DISPLAYBARCODE字段。 Aspose.Words API新引入下列字符实体:

  • 添加IBarcodeGenerator界面
  • 添加BarcodeParameters类
  • 添加FieldOptions.BarcodeGenerator属性

使用案例:

点击查看 “DISPLAYBARCODE字段的自定义条码图像生成 DISPLAYBARCODE” 功能: 

InsertDocument method添加到 DocumentBuilder Class

The following new method inserts content of the document into the current position of DocumentBuilder’s cursor 下列新类函数插入文档内容到DocumentBuilder光标的当前位置。

  public Node InsertDocument(Document, ImportFormatMode);  

使用案例:

点击查看 “DISPLAYBARCODE字段的自定义条码图像生成 DISPLAYBARCODE” 功能: 

添加DocumentBase.WarningCallback属性

文档可以在任何周期发出警告消息 。所以为了收取所有的警告,DocumentBase class.添加了一个新的属性。

  public IWarningCallback WarningCallback  

与此同时 time SaveOptions.WarningCallback被淘汰了,因此就不要在新的代码中出现了。

OpaqueBoundsInPoints 属性和GetOpaqueRectangleInPixels 类函数都添加到ShapeRenderer 类

OpaqueBoundsInPoints属性和类函数 GetOpaqueRectangleInPixels 添加到ShapeRenderer类。这样就可以恰当的获取图形的不透明边界。新的工作机制如下:

  public static void RenderNode(Node node, string filePath, ImageSaveOptions imageOptions)  {      
// This code is taken from public API samples of AW.      
// Previously to find opaque bounds of the shape the function      
// that checks every pixel of the rendered image was used.      
// For now opaque bounds is got using ShapeRenderer.GetOpaqueRectangleInPixels method.        
// If no image options are supplied, create default options.      
if (imageOptions == null)         
 imageOptions = new ImageSaveOptions(FileFormatUtil.ExtensionToSaveFormat(Path.GetExtension(filePath)));        
// Store the paper color to be used on the final image and change to transparent.      
// This will cause any content around the rendered node to be removed later on.      
Color savePaperColor = imageOptions.PaperColor;      
imageOptions.PaperColor = Color.Transparent;        
// There a bug which affects the cache of a cloned node. 
To avoid this we instead clone the entire document including all nodes,      
// find the matching node in the cloned document and render that instead.      
Document doc = (Document)node.Document.Clone(true);      
node = doc.GetChild(NodeType.Any, node.Document.GetChildNodes(NodeType.Any, true).IndexOf(node), true);        
// Create a temporary shape to store the target node in. This shape will be rendered to retrieve      
// the rendered content of the node.      
Shape shape = new Shape(doc, ShapeType.TextBox);      
Section parentSection = (Section)node.GetAncestor(NodeType.Section);        
// Assume that the node cannot be larger than the page in size.      
shape.Width = parentSection.PageSetup.PageWidth;      
shape.Height = parentSection.PageSetup.PageHeight;      
shape.FillColor = Color.Transparent; 
// We must make the shape and paper color transparent.        
// Don't draw a surronding line on the shape.      shape.Stroked = false;        
// Move up through the DOM until we find node which is suitable to insert 
into a Shape (a node with a parent can contain paragraph, tables the same as a shape).      
// Each parent node is cloned on the way up so even a descendant node passed to this method can be rendered.      
// Since we are working with the actual nodes of the document we need to clone the target node into the temporary shape.     
 Node currentNode = node;     
 while (!(currentNode.ParentNode is InlineStory || currentNode.ParentNode is Story || currentNode.ParentNode is ShapeBase))     
 {          CompositeNode parent = (CompositeNode)currentNode.ParentNode.Clone(false);         
 currentNode = currentNode.ParentNode;          
parent.AppendChild(node.Clone(true));          
node = parent; // Store this new node to be inserted into the shape.      }        
// We must add the shape to the document tree to have it rendered.     
 shape.AppendChild(node.Clone(true));      
parentSection.Body.FirstParagraph.AppendChild(shape);        
// Render the shape to stream so we can take advantage of the effects of the ImageSaveOptions class.      
// Retrieve the rendered image and remove the shape from the document.     
 MemoryStream stream = new MemoryStream();      
ShapeRenderer renderer = shape.GetShapeRenderer();     
 renderer.Save(stream, imageOptions);      shape.Remove();       
 Rectangle crop = renderer.GetOpaqueRectangleInPixels(imageOptions.Scale,
 imageOptions.Resolution);        
// Load the image into a new bitmap.      
using (Bitmap renderedImage = new Bitmap(stream))  
    {          Bitmap croppedImage = new Bitmap(crop.Width, crop.Height);         
 croppedImage.SetResolution(imageOptions.Resolution, imageOptions.Resolution);            
// Create the final image with the proper background color.         
 using (Graphics g = Graphics.FromImage(croppedImage))        
  {              g.Clear(savePaperColor);            
  g.DrawImage(renderedImage, new Rectangle(0, 0, croppedImage.Width,
 croppedImage.Height), crop.X, crop.Y, crop.Width, crop.Height, 
GraphicsUnit.Pixel);                croppedImage.Save(filePath);          }      }  }

标签:Aspose.words

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP