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)
上一篇 2022年6月3日 下午10:36
下一篇 2022年6月3日 下午10:36


相关推荐

  • DrawerLayout详解「建议收藏」

    DrawerLayout详解「建议收藏」drawerLayout是SupportLibrary包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。

    2022年6月16日
    33
  • 即梦ai需要付费吗

    即梦ai需要付费吗

    2026年3月12日
    2
  • ReLU激活函数的特点

    ReLU激活函数的特点ReLU RectifiedLin 修正线性单元 函数 1 公式 可以看出这是个非常简单的函数 大于 0 部分不变 小于 0 的值全部压缩成 0 2 优点 作为激活函数 计算简单 更加高效 速度快神经元得到一个值 可以直接看这个值的大小 然后直接得出结果 不用多余的加减乘除计算 ReLU 函数也被认为具有生物学合理性单侧抑制 小于 0 全部抑制 宽兴奋边界 大于 0 的部分达到无穷都可以 没有限制 即兴奋程度可以很高 有很好的稀疏性 能让小于 0 的全部变为 0 增大了稀疏性 稀疏性越大 是指

    2026年3月17日
    2
  • android studio 导出的jar中没有主清单属性「建议收藏」

    android studio 导出的jar中没有主清单属性「建议收藏」问题:androidstudio工程的module生成的jar包,在执行中出现“没有主清单属性”错误。解决办法:原因:MANIFEST.MF中的没有Main-Class在对应的module中的gradle文件中加入:jar{manifest{attributes’Main-Class’:’com.MainClass’}}

    2025年9月14日
    9
  • 总结 – Ajax工作原理和实现步骤

    总结 – Ajax工作原理和实现步骤目录一 Ajax 技术与原理 1 1Ajax 简介 1 2Ajax 所包含的技术 1 3Ajax 的工作原理 1 4XMLHttpRequ 对象的三个常用的属性 1 onreadystate 属性 2 readyState 属性 3 responseText 属性 1 5xmlhttprequ 的方法 1 open 方法 2 send

    2026年3月18日
    1
  • 卸载Office密钥或删除序列号

    卸载Office密钥或删除序列号以管理员权限运行命令行查询序列号 cscript C ProgramFiles x86 MicrosoftOff Office16 ospp vbs dstatus 记住执行该命令后出现的后五位字母 替换下面的蓝色字母 卸载序列号 cscript C ProgramFiles x86 MicrosoftOff Office16 OSPP VBS

    2026年3月19日
    2

发表回复

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

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