python解析xps文件_xps文件的基本操作

python解析xps文件_xps文件的基本操作最近一直研究XPS文件,目前已经解决了二进制流转XPS文件、XPS文件转二进流、XPS文件的解析、XPS文件转图片、XPS文件打印等。但是一直没有找到如何向xps文件中插入图片的方法,好烦恼啊!!!!如果那位大神有向xps文件中插入图片的方法请及时联系我谢谢,QQ470163177。本人研究的成果如下,需要的码友可以学习下。注意:xps命名空间在ReachFramework.dll中using…

大家好,又见面了,我是你们的朋友全栈君。

最近一直研究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 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

{

///

/// 打印

///

/// 打印机名称

/// 打印文件路径

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://javaforall.net/136233.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2019 Python接口自动化测试框架实战开发(一)

    2019 Python接口自动化测试框架实战开发(一)说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!目录一丶叙述二丶接口基础知识三丶接口测试工具四丶Fiddler的使用五丶unittest使用六丶mock服务入门到实战七丶接口自动化框架设计到开发一丶叙述1.项目介绍整个项目分为四个部分:接口基础丶接口开发丶Unittest与接口测试结合以及接口自动化框架从设计到开发接口基础包括:H…

    2022年4月30日
    34
  • dynamic中文_dynamic cast

    dynamic中文_dynamic castC# 反射、与dynamic最佳组合

    2022年4月21日
    41
  • SWD应用接口

    SWD应用接口随着ARM公司对Cortex系列的推出,采样SWD方式调试成了大家的首选。SWD不仅速度可以与JTAG媲美,而且使用的调试线少得多。很多人在采样SWD方式进行调试时,一般都是采用4线:①VCC     –    电源②GND    –   地线③SWDIO-   数据④SWCLK-  时钟       在对NXP的LPC111

    2022年4月25日
    58
  • 数据库中的左连接和右连接的区别是什么_左连接右连接内连接图解

    数据库中的左连接和右连接的区别是什么_左连接右连接内连接图解数据库中的左连接和右连接的区别今天,别人问我一个问题:数据库中的左连接和右连接有什么区别?如果有A,B两张表,A表有3条数据,B表有4条数据,通过左连接和右连接,查询出的数据条数最少是多少条?最多是多少条?我被这个问题问住了,后来我去问了数据库开发人员,问到的答案也是各种各样:a最大12最小0b最大12最小未知c…

    2022年9月16日
    0
  • 如何用vscode进行前端开发 知乎_vscode单步调试

    如何用vscode进行前端开发 知乎_vscode单步调试如何用VsCode进行Debug本文以Mac系统,C++程序为例,进行Debug操作安装插件不同的语言需要安装的debug插件不一样,如下Debug页面VsCode的Debug页面如下配置Debug环境点击左侧的Debug图标,默认情况下,展示的是配置提示点击图中的【运行和调试】,选择【GDB/LLDB】环境,之后在下拉列表选择【默认配置】,系统自动创建launch.json文件,用于记录debug的配置信息,其中最主要的是配置调试的程序,program字段,选择要debug运行的

    2022年10月15日
    0
  • 蓝湖+Vue.js+SosoApi+Spring Cloud+Rancher——项目架构总结介绍

    蓝湖+Vue.js+SosoApi+Spring Cloud+Rancher——项目架构总结介绍蓝湖+Vue.js+SosoApi+Spring Cloud+Rancher——项目架构总结介绍

    2022年4月23日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号