我有一个由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)
代替。