最近一直研究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文件的基本操作相关推荐

  1. C语言中文件的基本操作函数fprintf和fscanf实例介绍

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

  2. c语言infile和outfile用法,C语言文件读写基本操作DEMO

    DEMO 来源于<C语言实战105例>中的34例:文件读写基本操作 把infile中的内容写到outfile中去 #include #include int main() { FILE * ...

  3. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构

    文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...

  4. 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)

    5.文件的基本操作 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 关闭文件 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 1.在系统中有一张系统的文件打开表,用 ...

  5. 【王道考研操作系统】—文件的基本操作

    [王道考研操作系统]-文件的基本操作 一.文件的逻辑结构 按文件是否有结构分为:无结构文件.有结构文件两种. 无结构文件:文件内部的数据就是一系列二进制流或字符流组成.又称流式文件,如Windows操 ...

  6. 文件的基本操作--利用爬取的王者荣耀李信台词进行练习

    文章目录 文件的基本操作 文件打开和关闭 文件打开模式 读取/写入文件 StringIO和BytesIO 内存假文件 上下文管理 os模块 os模块 的目录及文件操作 os.path模块 小练习-爬取 ...

  7. photoshopcs6文件的基本操作

    1.文件的基本操作 ①文件的打开(ctrl+o/直接双击编辑区/拖拽至标题栏处) ②文件的新建(ctrl+N)注意各种参数-单位.分辨率和颜色模式 单位:主要用于显示设备:像素(相对单位): 主要用于 ...

  8. 安装MinIO和使用MinIO Java SDK实现对文件的基本操作

    文章目录 一.MinIO 简介 二.安装 MinIO 1. 使用 Docker 安装 MinIO 2. 进入到 MinIO 的控制台页面 3. 创建 Bucket 4. 修改 Bucket 的 Acc ...

  9. 怎么把XPS文件转成Word——speedPDF在线批量免费帮您转换

    xps格式的文件虽然安装相关的软件可以打开,但修改起来却很难,所以我们经常会将它转换成Word文档.那如何把xps文件转换成word文档呢?今天介绍一款可以免费将XPS转Word产品. 首先,给您推荐 ...

最新文章

  1. python写游戏脚本-python实现简单贪吃蛇游戏
  2. 利用SNMP4J实现Snmp Trap
  3. UML学习(一)-----用例图
  4. (五)springcloud微服务分布式云架构 - 云架构代码结构构建
  5. oracle dd if=/dev/zero of=/dev,【转】dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解...
  6. python爬取json数据_Python爬取数据保存为Json格式的代码示例
  7. VScode+ROS(C++)代码断点调试实践笔记
  8. linux img提取文件系统,Linux下 mount IMG文件提示“您必须制定文件系统类型”解决方法...
  9. SQL纯手写创建数据库到表内内容
  10. cocoscreator 资源加密
  11. HTML5 SVG蝴蝶飞舞动画3D效果
  12. 读coco数据集的代码接口了解segmentation的处理方法
  13. java maincase 电影票的售卖与购买 day10-11
  14. 如何开发一款用户体验优秀的语音交友app?
  15. PHP 将两个数组合并,保持原有key,并保持在同一个维度
  16. 在 Jupyter Notebook 中使用R语言
  17. Navicat操作mysql遇问题1142-create command denied to user×××的解决
  18. 周赛题1(leetcode)
  19. Win11安装安卓子系统
  20. Apache Camel - 3 - Camel小栗子(HTTP)

热门文章

  1. 2017 ACM Arabella Collegiate Programming Contest F. Monkeying Around GYM101350F
  2. 如何解决Mathtype在Word中功能区是灰色的情况
  3. android自定义秒表,Android实现的秒表计时器示例
  4. 淘宝分布式数据库是如何实现高可用的
  5. WIN10 家庭版 安装DOCKER 遇到问题:THIS COMPUTER DOESN'T HAVE VT-X/AMD-V ENABLED
  6. 与人斗,其乐无穷!- 职场做人天天练 ! [推荐]
  7. 试题 基础练习 数的读法
  8. 手机投屏电视显示服务器连接失败,投屏失败怎么办?两种投屏到电视的方法教学...
  9. 侯捷 C++内存管理
  10. 《当下即是生活》季羡林——读书笔记