zoukankan      html  css  js  c++  java
  • xps转pdf

    先安装PdfSharp 程序包。

        class Converter
        {
            public static void Xps2Pdf(string xpsFileName, string pdfName)
            {
                if (!Directory.Exists(Path.GetDirectoryName(pdfName)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(pdfName));
                }
                
                PdfDocument pdf = new PdfDocument();
                XpsDocument xpsDoc = new XpsDocument(xpsFileName, System.IO.FileAccess.Read);
                FixedDocumentSequence docSeq = xpsDoc.GetFixedDocumentSequence();
                var PageCount = docSeq.References[0].GetDocument(false).Pages.Count;
    
                double scale = 300 / 96;
    
                for (int pageNum = 0; pageNum < PageCount; pageNum++)
                {
                    DocumentPage docPage = docSeq.DocumentPaginator.GetPage(pageNum);
    
                    RenderTargetBitmap renderTarget =
                        new RenderTargetBitmap((int)(scale * (docPage.Size.Height + 1)),
                                                                       (int)(scale * (docPage.Size.Height + 1)),
                                                                       scale * 96,
                                                                       scale * 96, PixelFormats.Pbgra32);
                    renderTarget.Render(docPage.Visual);
                    PngBitmapEncoder encoder = new PngBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(renderTarget));
    
                    MemoryStream s = new MemoryStream();
                    encoder.Save(s);
                    XImage img = XImage.FromStream(s);
    
                    PdfPage page = pdf.AddPage();
                    page.Width = renderTarget.Width;
                    page.Height = renderTarget.Height;
                    page.Size = PageSize.A4;
                    XGraphics g = XGraphics.FromPdfPage(page);
                    g.DrawImage(img, 0, 0);
    
                }
                pdf.Save(pdfName);
            }
    
        }
  • 相关阅读:
    VS2010 正则批量替换头文件路径
    VC++ 内存泄露与检测的一种方法
    命令行编译C++程序
    Link1123:转换到COFF期间失败:文件无效或损坏
    C语言基础知识
    PCL深度图像(2)
    PCL关键点(1)
    PCL采样一致性算法
    PCL滤波介绍(3)
    PCL滤波介绍(2)
  • 原文地址:https://www.cnblogs.com/jonney-wang/p/13266963.html
Copyright © 2011-2022 走看看