开发silverlight下的xps浏览器,支持xps printer输出格式

简介:

很多人都做出了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 的 First floor Document toolKit,它可是看准了这个问题,重写了大堆东西,整了个控件拿来卖钱的;

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

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




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

相关文章
|
4月前
|
JavaScript 前端开发 开发工具
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
|
28天前
|
Web App开发 前端开发 JavaScript
为什么浏览器兼容性在开发网站时很重要?
浏览器兼容性在网站开发中确实非常重要。
|
3月前
|
Web App开发 JavaScript 前端开发
浏览器内小脚本开发
【8月更文挑战第31天】
56 1
|
3月前
|
Web App开发 JSON 安全
【跨域难题终结者】:一键解锁Chrome浏览器神秘设置,彻底告别开发阶段的跨域烦恼!
【8月更文挑战第20天】跨域是前端开发常遇难题,尤其在前后端分离项目中。浏览器因安全考量会阻止不同源间的请求。本文对比CORS、JSONP、代理服务器等解法,并介绍开发阶段通过调整Chrome设置来临时禁用跨域限制的方法,提供启动Chrome及使用`fetch`API示例,适合快速测试。但请注意这不适用于生产环境,存在一定安全风险。
684 1
|
3月前
|
Web App开发 前端开发 JavaScript
手摸手教你,从0到1开发一个Chrome浏览器插件
开发 Chrome 插件既有趣又具成就感。本教程将引导你从零开始,逐步创建一个简单的 Chrome 插件。首先了解 Chrome 插件是可增强浏览器功能的小程序。以一个基础示例开始,你将学习如何设置开发环境,包括安装 Chrome 和准备文本编辑器,并掌握 HTML、CSS 和 JavaScript 的基础知识。接着,我们将构建插件的基本结构,涉及 `manifest.json` 配置文件、`background.js` 后台脚本、`popup.html` 用户界面以及 `style.css` 样式表。
297 8
|
5月前
|
数据可视化 安全 区块链
区块链钱包浏览器开发功能,价格和时间周期
开发区块链钱包浏览器涉及账户管理、交易查询、区块浏览、智能合约查询及数据可视化等功能。价格因开发难度、需求、团队专业度及第三方服务费用而异,通常在数万至数百万元。开发周期约数月到半年,包括需求分析、设计、开发、测试和上线等阶段。
区块链钱包浏览器开发功能,价格和时间周期
|
4月前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
70 0
|
4月前
|
Web App开发 编解码
软件开发常见流程之兼容性和手机屏页面设计,PC端和移动端常见浏览器,国内的UC都是根据Webkit修改过来的内核,开发重点关注尺寸,常见移动端尺寸汇总,移动端,理想视口根据你设别的样式进行修改
软件开发常见流程之兼容性和手机屏页面设计,PC端和移动端常见浏览器,国内的UC都是根据Webkit修改过来的内核,开发重点关注尺寸,常见移动端尺寸汇总,移动端,理想视口根据你设别的样式进行修改
|
6月前
|
开发工具 开发者
谷歌浏览器打开DWG图纸,实现圆转多边形功能(在线CAD开发教程)
本文介绍了如何使用在线CAD SDK实现圆转多边形功能。首先,需搭建绘图环境和添加命令行交互。接着,通过mxcad库,根据用户输入的边数实现两种转换方式:内接于圆(目标圆为多边形外接圆)和外切于圆(目标圆为多边形内切圆)。具体实现包括选中圆、获取边数、选择转换方式,然后根据用户选择绘制多边形。最终展示了转换效果。
谷歌浏览器打开DWG图纸,实现圆转多边形功能(在线CAD开发教程)
|
6月前
|
移动开发 JavaScript
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
210 0