通过 .NET COM 互操作设置 System.Drawing.Color

2024-06-05 10:44

本文主要是介绍通过 .NET COM 互操作设置 System.Drawing.Color,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

1. 问题背景

在尝试使用 Aspose.Words 库执行 COM 互操作时,遇到了一个关键问题:无法设置颜色。理论上,可以通过向 DocumentBuilder.Font.Color 赋值来设置颜色,但尝试时却出现了 OLE 错误 0x80131509。

以下代码示例演示了这个问题:

from win32com.client import Dispatch
Doc = Dispatch("Aspose.Words.Document")
Builder = Dispatch("Aspose.Words.DocumentBuilder")
Builder.Document = Doc
print Builder.Font.Size
print Builder.Font.Color

执行这段代码后,输出结果为:

12.0
Traceback (most recent call last):File "aaa.py", line 6, in <module>print Builder.Font.ColorFile "D:\Python26\lib\site-packages\win32com\client\dynamic.py", line 501, in __getattr__ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2146233079, 'OLE error 0x80131509', None, None)
```python尝试使用像 Font.Color = 0xff0000 这样的方式设置颜色也会出现同样的错误消息。然而,以下代码在 C# 中可以正常工作:```python
using Aspose.Words;
namespace ConsoleApplication1
{class Program{static void Main(string[] args){Document doc = new Document();DocumentBuilder builder = new DocumentBuilder(doc);builder.Font.Color = System.Drawing.Color.Blue;builder.Write("aaa");doc.Save("c:\\1.doc");}}
}
```python这表明问题很可能出在 COM 互操作上。## 2. 解决方案要解决这个问题,可以使用以下两种方法之一:* **方法一:使用 Aspose.Words .NET 库**这种方法是使用 Aspose.Words 的 .NET 库,这是一种用于 .NET 平台的 Word 处理库。它提供了与 COM 互操作类似的功能,但可以避免 COM 互操作中出现的问题。要使用 Aspose.Words .NET 库设置颜色,可以按照以下步骤操作:1. 创建一个 Document 对象。2. 创建一个 DocumentBuilder 对象,并将其与 Document 对象关联。3. 设置 DocumentBuilder.Font.Color 属性。4. 将文档保存到文件中。以下代码示例演示了如何使用 Aspose.Words .NET 库设置颜色:```python
using Aspose.Words;
namespace ConsoleApplication1
{class Program{static void Main(string[] args){Document doc = new Document();DocumentBuilder builder = new DocumentBuilder(doc);builder.Font.Color = System.Drawing.Color.Blue;builder.Write("aaa");doc.Save("c:\\1.doc");}}
}
  • 方法二:使用 System.Drawing.ColorConverter

    这种方法是使用 System.Drawing.ColorConverter 类,它可以将字符串或十六进制值转换为 System.Drawing.Color 对象。然后,可以使用此 System.Drawing.Color 对象来设置 DocumentBuilder.Font.Color 属性。

    以下代码示例演示了如何使用 System.Drawing.ColorConverter 类设置颜色:

from win32com.client import Dispatch
Doc = Dispatch("Aspose.Words.Document")
Builder = Dispatch("Aspose.Words.DocumentBuilder")
Builder.Document = Doc
print Builder.Font.Size
Converter = ColorConverter()
Color = Converter.ConvertFromString("Blue")
Builder.Font.Color = Color
print Builder.Font.Color

执行这段代码后,输出结果为:

12.0
16776960

这表明通过 System.Drawing.ColorConverter 类设置颜色成功了。

这篇关于通过 .NET COM 互操作设置 System.Drawing.Color的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032829

相关文章

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

UnityException: Gizmo drawing functions can only be used in OnDrawGizmos and OnDrawGizmosSelected.

You don't have to call OnDrawGizmos() From anywhere, it is a editor function to display gizmos in the scene-view and is called automatically called!! 不能在任何地方调用 OnDrawGizmos(),这个函数是自动调用的。这个函数是编辑器函数,用来

Windows中,.net framework 3.5安装

安装.net framework,目前已知2种方法,如下: 一、在MSDN下载对应的安装包,安装,这种可能无法安装成功,概率很大,不成功使用第二种方法,基本上没问题。 二、win8/8.1/10 下安装 .net framework 3.5.1: 1. 打开 win8/8.1/10 安装盘(这里指系统安装镜像文件),提取 sources\sxs 文件夹到 X:\sources\sxs (X代

如何设置windows计划任务

如何设置windows计划任务 前言:在工作过程中写了一个python脚本,用于调用jira接口查询bug单数量,想要在本地定时任务执行,每天发送到钉钉群提醒,写下操作步骤用于记录。 1. 准备 Python 脚本 确保你的 Python 脚本已经保存到一个文件,比如 jira_reminder.py。 2. 创建批处理文件 为了方便任务计划程序运行 Python 脚本,创建一个批处理文

FastAdmin/bootstrapTable 表格中生成的按钮设置成文字

公司有个系统后台框架用的是FastAdmin,后台表格的操作栏按钮只有图标,想要设置成文字。 查资料后发现其实很简单,主需要新增“text”属性即可,如下 buttons: [{name: 'acceptcompany',title: '复核企业',text:'复核企业',classname: 'btn btn-xs btn-primary btn-dialog',icon: 'fa fa-pe

众所周知,配置即代码≠基础设置即代码

​前段时间翻到几条留言,问: “配置即代码和基础设施即代码一样吗?” “配置即代码是什么?怎么都是基础设施即代码?” 我们都是知道,DevOp的快速发展,让服务器管理与配置的时间大大减少,配置即代码和基础设施即代码作为DevOps的重要实践,在其中起到了关键性作用。 不少人将二者看作是一件事,配置即大代码是关于管理特定的应用程序配置设置本身,而基础设施即代码更关注的是部署支持应用程序环境所需的

BD错误集锦7——在集成Spring MVC + MyBtis时使用c3p0作为数据库时报错Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatem

异常信息如下: Type Exception ReportMessage Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstractDescr

设置Nginx缓存策略

详细信息 Nginx服务器的缓存策略设置方法有两种:add_header或者expires。 1. add_header 1)语法:add_header name value。 2)默认值:none。 3)使用范围:http、server、location。 配置示例如下: add_header cache-control "max-age=86400";#设置缓存时间为1天。add

设置android返回键,保存和取得最高分

1.在.h中声明一些方法 virtual void keyBackClicked();           //Android返回键 bool isHaveSaveFile(); void getHighestHistoryScore(); 在.cpp中实现这个几个方法 void WelcomeLayer::keyBackClicked(

ASP.Net.WebAPI和工具PostMan

1.WebAPI概述 1.1 WebAPI WebAPI 是一种传统的方式,用于构建和暴露 RESTUI风格的Web服务。它提供了丰富的功能和灵活性,可以处理各种HTTP请求,并支持各种数据格式,如JSON、XML等。 WebAPI使用控制器(Controllers)和动作方法(ActionMethods)的概念、通过路由配置将请求映射到相应的方法上。 开发人员可以使用各种属性和过滤器来处