如何从 TOleContainer 中提取图元文件?
我有一个带有 TOleContainer 控件的 Delphi (BDS 2006) 应用程序。它内部有一个 OLE 对象,即 MS Office 2003 中的 MS 方程公式(名称“Equation.3”)。
如何从公式图像中提取矢量图元文件,以将其插入网页或其他没有 OLE 支持的文档中?
TOleContainer 内部只有“Equation.3”对象,没有其他可能性。 我尝试使用 .Copy 方法使其通过剪贴板,但它复制了一个空图像。
I have a Delphi (BDS 2006) application with TOleContainer control. It has an OLE object inside, MS Equation formula (name 'Equation.3') from MS Office 2003.
How can I extract the vector metafile from the formula image to insert it into web-page or some other document without OLE support?
TOleContainer has only 'Equation.3' objects inside, no other possibilities.
I've tried to use .Copy method to make it through clipboard, but it's copied an empty image.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
OLE 容器具有您可以访问的底层 IOLEObject 接口。您可以将其传递给 OLEDraw 函数你自己的画布。您可以使用位图或图元文件画布,然后以您需要的格式保存图像。
OleDraw(OleContainer.OleObjectInterface, DVASPECT_CONTENT, Bmp.Canvas.Handle, R);
OLE Container has on underlying IOLEObject interface you can access. You can pass that to the OLEDraw function with your own canvas. You could use either a Bitmap or Metafile canvas and then save out the image in the format you need.
OleDraw(OleContainer.OleObjectInterface, DVASPECT_CONTENT, Bmp.Canvas.Handle, R);
当您使用 OleContainer 的 SaveAsDocument 方法时,将创建一个复合文档。该文档将包含一个名称为 #2OlePress000 的 IStream(#2 是字节值 2)。该流的内容是方程的缓存表示形式,用于在未安装方程编辑器的计算机上显示它。
如果您知道该流的格式,也许您可以使用它来创建要在网页上显示的图像。
When you use the SaveAsDocument method of your OleContainer, a compound document is created. That document will contain an IStream with a name #2OlePress000 (#2 is byte value 2). The contents of this stream is a cached representation of the equation and is used to show it on computers that don't have the equation editor installed.
If you know the format of that stream, maybe you can use it to create an image to show on a webpage.