将 PDFsharp 文档发送到 WCF 服务并保存返回错误"Cannot save a PDF document with no pages"



我有一个由PDFsharp生成的PDF文档,并在WCF客户端中正确显示。该文档由一页组成,而这一页又包含一张图像。它的代码是:

PdfDocument d = new PdfDocument();
d.Info.Title = "Temporary Passport Document";
d.Info.Title = applicant.ApplID + " " + initials + " - Passport";
PdfPage p = new PdfPage();
d.AddPage(p);
XGraphics gfx = XGraphics.FromPdfPage(p);
XImage img = XImage.FromFile(passport.AttachmentPath);
p.Width = img.Size.Width + 40;
p.Height = img.Size.Height + 40;
gfx.DrawImage(img, 20, 20);

使用下面的代码(d是PDFSharp文档和护照)将PDF文档保存为字节[]。passsportscan 是字节[]):

MemoryStream ms = new MemoryStream();
d.Save(ms, false);
passport.PassportScan = ms.ToArray();  

byte[]被发送到WCF服务保存。因此,我将byte[]转换回PDFsharp文档,并尝试使用以下代码保存它:

PdfDocument d = new PdfDocument(new MemoryStream(pPassport.PassportScan));
 d.Save(RecruitAidPathRoot + "100104 - JPD - John Paul Doe\" + "JPD - file.pdf");

当执行最后一行时,我得到错误"Cannot save a PDF document with no pages"

客户端的文档由1页组成,那么服务端的文档也应该由1页组成,对吗?

您正在调用的方法具有以下签名:public PdfDocument(Stream outputStream)

描述如下:

使用指定的流创建一个新的PDF文档。直到文档被关闭,流才会被使用,此时文档将被自动保存。对于使用此构造函数创建的文档,不要调用Save(),而只需调用Close()。要打开现有的PDF文件,请使用PdfReader类。

使用PdfReader类的Open方法:public static PdfDocument Open(Stream stream)代替。

相关内容

最新更新