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); } }
posted on 2020-07-08 15:02 jonney_wang 阅读(551) 评论(0) 收藏 举报
浙公网安备 33010602011771号