xps文件的基本操作
最近一直研究XPS文件,目前已经解决了二进制流转XPS文件、XPS文件转二进流、XPS文件的解析、XPS文件转图片、XPS文件打印等。但是一直没有找到如何向xps文件中插入图片的方法,好烦恼啊!!!!如果那位大神有向xps文件中插入图片的方法请及时联系我谢谢,QQ470163177。本人研究的成果如下,需要的码友可以学习下。
注意:
xps命名空间在 ReachFramework.dll中
using xps2img;引用需要的是.net4.0版本
1.二进制流生成xps文件:
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory+"yuan.xps"))
{
File.Delete(AppDomain.CurrentDomain.BaseDirectory + "yuan.xps");
}
string xpsTempFilePath = string.Format("{0}" + "yuan.xps", AppDomain.CurrentDomain.BaseDirectory);
using (BinaryWriter writer = new System.IO.BinaryWriter(File.OpenWrite(xpsTempFilePath)))
{
writer.Write(文件);
writer.Flush();
}
2.XPS文件转二进流:
try
{
string strPath = AppDomain.CurrentDomain.BaseDirectory + "DW1031221.xps";
byte[] xpsBytes = File.ReadAllBytes(strPath);
string sql2 = "insert into 打印任务文件(任务id,文件内容) values((select case when max(任务id) IS NULL then '1' else max(任务id)+1 end from 打印任务文件),@wjnr)";
SqlParameter param = new SqlParameter("wjnr", xpsBytes);
DBHelper.ExecuteNonQuery(sql2, CommandType.Text, param);
System.Windows.MessageBox.Show("转换成功!");
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("转换失败!");
}
3.XPS文件的解析:
//打开待识别的XPS文件
StringBuilder sb = new StringBuilder();
XpsDocument xpsDocument = new System.Windows.Xps.Packaging.XpsDocument(pdffile, FileAccess.Read);
var reader = xpsDocument.FixedDocumentSequenceReader;
foreach (var document in reader.FixedDocuments)
{
foreach (var page in document.FixedPages)
{
XmlReader xrdr = page.XmlReader;
while (xrdr.Read())
{
switch (xrdr.NodeType)
{
case XmlNodeType.Element:
if (xrdr.Name == "Glyphs")
sb.Append(xrdr["UnicodeString"]+"\n");
break;
default: break;
}
}
}
}
//将xps内容赋值给文本框
if (!string.IsNullOrEmpty(sb.ToString()))
{
richTextBox1.Text = sb.ToString();
}
else
{
MessageBox.Show("该XPS文件无法识别!");
}
4.XPS文件转图片:
try
{
using (var xpsConverter = new Xps2Image(this.Tag.ToString()))
{
IEnumerable<Bitmap> images = xpsConverter.ToBitmap(new Parameters
{
ImageType = ImageType.Png,
//转成图片的大小比例
Dpi = 73
});
foreach (var item in images)
{
pdfp.Image = item;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
注意:需要引用xps2img类库
5.XPS文件打印:
xpsClass.PrintXPS(comboBox1.Text, strPath);
public static class xpsClass
{
/// <summary>
/// 打印
/// </summary>
/// <param name="strPrint">打印机名称</param>
/// <param name="xpsFilePath">打印文件路径</param>
public static void PrintXPS(string strPrint, string xpsFilePath)
{
PrintQueue defaultPrintQueue = new PrintQueue(new PrintServer(), strPrint);
string filename = Path.GetFileName(xpsFilePath);
String nextFile = xpsFilePath;
try
{
// 打印Xps文件同时提供Xps验证和进展通知
PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob(filename, nextFile, false);
}
catch (PrintJobException e)
{
Console.WriteLine(e.ToString());
}
}
}
注意:需要添加System.Printing.dll引用
转载于:https://www.cnblogs.com/libj/p/5952010.html
xps文件的基本操作相关推荐
- C语言中文件的基本操作函数fprintf和fscanf实例介绍
C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...
- c语言infile和outfile用法,C语言文件读写基本操作DEMO
DEMO 来源于<C语言实战105例>中的34例:文件读写基本操作 把infile中的内容写到outfile中去 #include #include int main() { FILE * ...
- 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...
- 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)
5.文件的基本操作 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 关闭文件 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 1.在系统中有一张系统的文件打开表,用 ...
- 【王道考研操作系统】—文件的基本操作
[王道考研操作系统]-文件的基本操作 一.文件的逻辑结构 按文件是否有结构分为:无结构文件.有结构文件两种. 无结构文件:文件内部的数据就是一系列二进制流或字符流组成.又称流式文件,如Windows操 ...
- 文件的基本操作--利用爬取的王者荣耀李信台词进行练习
文章目录 文件的基本操作 文件打开和关闭 文件打开模式 读取/写入文件 StringIO和BytesIO 内存假文件 上下文管理 os模块 os模块 的目录及文件操作 os.path模块 小练习-爬取 ...
- photoshopcs6文件的基本操作
1.文件的基本操作 ①文件的打开(ctrl+o/直接双击编辑区/拖拽至标题栏处) ②文件的新建(ctrl+N)注意各种参数-单位.分辨率和颜色模式 单位:主要用于显示设备:像素(相对单位): 主要用于 ...
- 安装MinIO和使用MinIO Java SDK实现对文件的基本操作
文章目录 一.MinIO 简介 二.安装 MinIO 1. 使用 Docker 安装 MinIO 2. 进入到 MinIO 的控制台页面 3. 创建 Bucket 4. 修改 Bucket 的 Acc ...
- 怎么把XPS文件转成Word——speedPDF在线批量免费帮您转换
xps格式的文件虽然安装相关的软件可以打开,但修改起来却很难,所以我们经常会将它转换成Word文档.那如何把xps文件转换成word文档呢?今天介绍一款可以免费将XPS转Word产品. 首先,给您推荐 ...
最新文章
- python写游戏脚本-python实现简单贪吃蛇游戏
- 利用SNMP4J实现Snmp Trap
- UML学习(一)-----用例图
- (五)springcloud微服务分布式云架构 - 云架构代码结构构建
- oracle dd if=/dev/zero of=/dev,【转】dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解...
- python爬取json数据_Python爬取数据保存为Json格式的代码示例
- VScode+ROS(C++)代码断点调试实践笔记
- linux img提取文件系统,Linux下 mount IMG文件提示“您必须制定文件系统类型”解决方法...
- SQL纯手写创建数据库到表内内容
- cocoscreator 资源加密
- HTML5 SVG蝴蝶飞舞动画3D效果
- 读coco数据集的代码接口了解segmentation的处理方法
- java maincase 电影票的售卖与购买 day10-11
- 如何开发一款用户体验优秀的语音交友app?
- PHP 将两个数组合并,保持原有key,并保持在同一个维度
- 在 Jupyter Notebook 中使用R语言
- Navicat操作mysql遇问题1142-create command denied to user×××的解决
- 周赛题1(leetcode)
- Win11安装安卓子系统
- Apache Camel - 3 - Camel小栗子(HTTP)
热门文章
- 2017 ACM Arabella Collegiate Programming Contest F. Monkeying Around GYM101350F
- 如何解决Mathtype在Word中功能区是灰色的情况
- android自定义秒表,Android实现的秒表计时器示例
- 淘宝分布式数据库是如何实现高可用的
- WIN10 家庭版 安装DOCKER 遇到问题:THIS COMPUTER DOESN'T HAVE VT-X/AMD-V ENABLED
- 与人斗,其乐无穷!- 职场做人天天练 ! [推荐]
- 试题 基础练习 数的读法
- 手机投屏电视显示服务器连接失败,投屏失败怎么办?两种投屏到电视的方法教学...
- 侯捷 C++内存管理
- 《当下即是生活》季羡林——读书笔记