博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发silverlight下的xps浏览器,支持xps printer输出格式
阅读量:7020 次
发布时间:2019-06-28

本文共 1325 字,大约阅读时间需要 4 分钟。

很多人都做出了silverlight 版本的xps 浏览器,但很多人都卡在了xps printer输出的xps格式上,结果只能浏览Office saveas 导出的xps,而xps printer输出的xps文件一概不认;今天就来说说这个xps printer 输出的格式问题

当xps文档是打印输出的,导致的现象是如下这样子

1、Application.GetResourceStream娶不到任何东西,因为它缺少了zipPackageStreamResourceInfo

2、用SharpZip写了Application.GetResourceStream替换方法,字体出不来,xaml load一执行,就报个0行0列错

问题1很好解决

找个silverlight 的zip库的开源实现,然后重写个 Application.GetResourceStream 方法,类似:

internal static StreamResourceInfo GetResourceStream(Stream stream, Uri path)

{
var result = Application.GetResourceStream(new System.Windows.Resources.StreamResourceInfo(stream, null), path);
if (result != null)
return result;

if (stream.CanRead)

{
ZipFile zipFile = new ZipFile(stream);
return (from ZipEntry entity in zipFile
where entity.Name == path.ToString()
select ExtractFile(zipFile, entity)
into outMem select new StreamResourceInfo(outMem, null)).FirstOrDefault();
}
return null;
}

问题2又是个什么现象呢?

问题起源与 FontSource 只支持Application.GetResourceStream获取的Stream(internalMemoryStream) ;并不支持上面那个zip返回的 MemoryStream。

出现这个问题,一般也就是死菜了,除非你重写FontSource ,Glyphs相关的字体字库的实现,比如这个很牛 X 的 ,它可是看准了这个问题,重写了大堆东西,整了个控件拿来卖钱的;

解决办法也不是没有,用替换大法;Glyphs 用来描述文本,找个类似的UIElement,替换过去,也差不多了;前提是,还是得处理好 FontInfo,毕竟没给字体字形,那文本也就面目全非了;

这个时候需要做什么,就是读odttf文件,找出字体名,具体参照

本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2010/09/24/1833863.html,如需转载请自行联系原作者

你可能感兴趣的文章
最完美解决Nginx部署ThinkPHP项目的办法
查看>>
python-day1 补充
查看>>
linux 查看进程“打开”的文件或文件对应的进程及网络状态
查看>>
【AndroidSupport】RoundedBitmapDrawable 创建一个圆角图片
查看>>
9月27日28家中国域名商六类国际域名注册保有量统计
查看>>
zabbix监控之lvs
查看>>
百度贴吧在线外链制作
查看>>
如何在阿里云•对象存储OSS托管用户域名的https证书
查看>>
FreeMarker速查手册
查看>>
929. Unique Email Address - LeetCode
查看>>
Cisco 3560 级联端口不通的原因
查看>>
Zend Studio 无法打开的解决办法
查看>>
IEEE 802.3标准
查看>>
[安装程序]HDDScan(硬盘坏道检测工具) 3.3[详细检测你的硬盘信息]
查看>>
我的友情链接
查看>>
Linux基础笔记用户管理
查看>>
用Java集合中的Collections.sort方法对list排序的两种方法
查看>>
利用mysql的注射点得到更多mysql的信息
查看>>
好程序员web前端分享CSS基础篇
查看>>
粘性(sticky)mac地址
查看>>