我有一个由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);
使用以下代码将PDF文档保存到byte []中( d 是PDFSharp文档, passport.PassportScan 是byte []):
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");
当执行最后一行时,我收到错误"无法保存没有页面的PDF文档"
该文档由客户端中的1页组成,因此服务中的文档也应该包含1页正确吗?
提前致谢。
答案 0 :(得分:0)
您正在调用的方法具有以下签名:public PdfDocument(Stream outputStream)
描述如下:
使用指定的流创建新的PDF文档。 在文档关闭之前不会使用流,此时文档会自动保存。 不要为使用此构造函数创建的文档调用Save(),只需调用Close()即可。 要打开现有的PDF文件,请使用PdfReader类。
使用PdfReader类的Open方法:public static PdfDocument Open(Stream stream)
代替。