首页 > 其他分享 >GhostXPS转PDF后续

GhostXPS转PDF后续

时间:2023-11-05 20:59:42浏览次数:47  
标签:GhostXPS 后续 Png Xps PDF PNG 图片

GhostXPS转PDF

目录


记录使用GhostXPS转PDF过程中碰到的一些问题。

Q&A

之前有分享过 Xps转PDF 的文章,其中通过GhostXPS转PDF时存在如下问题:

通过虚拟打印机生成Xps文件时,如果Xps中有非PNG图片那么转换是不会报错的但是图片会丢失。

对比结果

注意:上图中Xps文件中的图片是通过Graphics绘制的。

此问题我在 https://bugs.ghostscript.com/ 上也提了疑问,得到的回答是绘制到Xps中的Jpg图片的Dpi为0导致的。

问题的地址为:image in xps convert to pdf failed

文章末尾也给了官方提供的Xps定义规范,遗憾的是本人英文水平有限也没从给出的规范中找到跟此问题有关的信息。

与此同时我也一直有个新的疑惑:既然并不是所有的图片都能顺利的转换成PDF,那么Xps中哪些图片类型能够转换成PDF呢?

此问题从Xps定义规范中我也没找到答案,如果有人有GhostXps的使用经验,或者从Xps定义规范中找到了答案也希望可以与我共同分享。

解决方式

既然PNG图片可以打印,那么就在打印图片前做下处理,处理方式是“判断要绘制的图片是否为PNG,非PNG图片则进行转换”。

判断图片是否为PNG图片推荐阅读:PNG文件格式详解

核心实现如下,其中判断图片是否为Png的方式换了,因为绘制前已经拿到了图片,因此使用图片直接判断(而不是转成图片二进制然后通过图片头部标识来判断)。

        /// <summary>
        /// 转成Png(GhostXPS.XpsConverter目前只支持Png)
        /// </summary>
        /// <param name="imgPhoto"></param>
        /// <param name="isNew"></param>
        /// <returns></returns>
        public static Image ConvertToPng(this Image imgPhoto, out bool isNew)
        {
            isNew = false;
            if (imgPhoto.IsPng())
            {
                return imgPhoto;
            }
            else
            {
                // 转换成Png
                var base64 = imgPhoto.ToPngBase64String();
                isNew = true;
                return base64.ToImage();
            }
        }

        /// <summary>
        /// 判断是否为Png图片
        /// </summary>
        /// <param name="imgPhoto"></param>
        /// <returns></returns>
        public static bool IsPng(this Image imgPhoto)
        {
            return imgPhoto.RawFormat.Equals(ImageFormat.Png);
        }

相关推荐

  1. image in xps convert to pdf failed

  2. GhostScript Pdf 转换图片 记录

  3. PNG文件格式详解

  4. Pdf文件处理组件对比(Aspose.Pdf,Spire.Pdf,iText7)

标签:GhostXPS,后续,Png,Xps,PDF,PNG,图片
From: https://www.cnblogs.com/lanwah/p/17811122.html

相关文章

  • 039-第三代软件开发-PDF阅读器
    第三代软件开发-PDF阅读器文章目录第三代软件开发-PDF阅读器项目介绍PDF阅读器1初始化PDFview2qml中使用3创建模块关键字:Qt、Qml、pdf、LTDev、本地项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的......
  • 免费格式转换工具箱,PDF candy
     随着我们办公所遇到的情况多样化,有时候为了让word文件不在别的电脑上乱码,或者为了符合任务的要求,我们经常需要针对格式进行转换,可是虽然wps有这个功能,但是它需要会员,今天就给大家带来稳定免费的PDF转换工具,没错,就是PDFCandydesktop!!!PDFCandydesktop具有以下特点:支持多种文......
  • 再也不用充值会员转换PDF了!!!
    PDFCandyDesktop是一款强大的PDF编辑和管理工具,它提供了一套全面的解决方案,让您可以轻松地创建、编辑、转换和优化PDF文件。无论您是一名学生、教师、企业家还是自由职业者,PDFCandyDesktop都能满足您的所有需求。PDFCandyDesktop的界面设计简洁明了,所有的功能都一目了然。您......
  • python实现PDF文件指定页码号裁剪
    代码importPyPDF2out_pdf=PyPDF2.PdfFileWriter()dst_file=f'output.pdf'withopen('input.pdf','rb')assrc_file: reader=PyPDF2.PdfFileReader(src_file) pages=reader.numPages forpinrange(12): #这里是获取源PDF前12页,......
  • 总结后续
    编程小结套接字中的服务器与客户端交互模式是网络通信中一种典型且高效保密的通信方式,广泛应用于目前信息化时代的网络通信。本篇记录了模拟套接字编程中出现的问题,以供参考。若出现客户端可以自由给服务器发送信息并被接收,但服务器无法成功发送信息给客户端,这是由于服务器无法......
  • 【专题】生成式AI:产业变革与机会论坛(演讲PPT)报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34132自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如今,数字化技术的发展为工业注入......
  • 【专题】数字美的智慧工业白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34132自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如今,数字化技术的发展为工业注入......
  • 【专题】2023工业视觉技术与应用白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34132自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如今,数字化技术的发展为工业注入......
  • 【专题】2023面向工业智能化时代的新一代工业控制体系架构白皮书报告PDF合集分享(附原
    原文链接:https://tecdat.cn/?p=34132自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如今,数字化技术的发展为工业注入......
  • 【专题】工业数字化绿色化融合发展白皮书(2022年)报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34132自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如今,数字化技术的发展为工业注入......