套打.常见问题.私有云自定义字体
【场景】私有云自定义字体
【方案一】无脚本方案:字体注册表方案(适用老版本客户,仅针对部分常用字体)
由于产品使用.net 4.0技术,不能简单直接使用服务器的字体安装逻辑,安装时写入的字体的注册表与蟾片访问的不一致
提供一个大部分场景下的字体安装逻辑
(1)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
其中字体文件在 C:\Windwos\Fonts 中,配置一个映射项
![image.webp](/download/0100abb69c66dfb14b88b7ffaa1ce925aea9.webp)
(2)字体服务重启FontCache
![image.webp](/download/01000672dbbb87ce4484867a6484a7738222.webp)
(3)IIS缓存目录删除c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\
(4)服务器电脑重启一次
【方案二】脚本方案
利用脚本引擎把字体文件替换,其中字体支持访问服务器上的任一自定义目录(自行配置权限)
(1)服务器将需要的ttf文件放在一个指定目录
![image.webp](/download/0100a15f2bebec0c40f69135bff273c1f2c5.webp)
说明:仅支持ttf文件
(2)利用套打脚本把文件替换掉
![image.webp](/download/010011d8ee9500e743bdbf04200092fdb01f.webp)
```python
import clr
clr.AddReference("System.Drawing")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS")
from System.Drawing import *
from System.Drawing.Text import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Util import *
def OutputElement(e):
fontStyleId1 = ['cell4','cell1'];##使用自定义字体的控件ID
if(e.ControlInfo.ControlID in fontStyleId1):
fontFile = 'D:\\TD\\20230607\\a.ttf';##这里填入字体文件在服务器的全路径
e.ControlInfo.DevBrick.Font = LoadFontFromCacheFontCollection(e.ControlInfo.DevBrick.Font, fontFile);
return;
fontStyleId2 = ['cell7'];##使用自定义字体的控件ID2
if(e.ControlInfo.ControlID in fontStyleId2):
fontFile = 'D:\\TD\\20230607\\b.ttf';##这里填入字体文件在服务器的全路径
e.ControlInfo.DevBrick.Font = LoadFontFromCacheFontCollection(e.ControlInfo.DevBrick.Font, fontFile);
return;
def LoadFontFromCacheFontCollection(srcFont, filePath):
dbid = 'dbid';##这里填入账套ID,做账套隔离比较好,当然不隔离也行
fontColl = CacheUtil.GetCache(dbid, "Custom_FontFileCache", filePath);
if fontColl == None:
fontColl = PrivateFontCollection();
fontColl.AddFontFile(filePath);
CacheUtil.SetCache(dbid, "Custom_FontFileCache", filePath, fontColl);
font = Font(fontColl.Families[0], srcFont.Size, srcFont.Style);
return font;
```
把需要使用自定义字体的控件放在fontStyleId1 里面,而后传入自定义的文件地址fontFile
(3)最终效果
![image.webp](/download/0100bcd2b05f6a1f48ad83ac3353fd358403.webp)
(4)补充说明
ttf文件转换可百度搜索字体转换工具进行转换
字体的样式、大小需要在模板上设置,仅是在最终渲染时使用自定义字体
字体文件和样式一一对应,部分文件字体会将常规和加粗分成两个字体文件,避免使用常规字体文件生成加粗字体
【说明】产品层面目前暂时不会对字体做其他优化计划,建议私有云客户使用方案二处理
这个解决方法真的是脱kz放p哦。【emoji】
客户端打印的时候为什么不直接调用本机电脑的字体进行打印呢?搞得这么复杂。
这个解决方法真的是脱kz放p哦。【emoji】
客户端打印的时候为什么不直接调用本机电脑的字体进行打印呢?搞得这么复杂。
套打.常见问题.私有云自定义字体
【场景】私有云自定义字体【方案一】无脚本方案:字体注册表方案(适用老版本客户,仅针对部分常用字体)由于产品使用.net 4.0技术,不能...
点击下载文档
本文2024-09-16 18:21:04发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-21573.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章