先安装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); } }