Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PDFsharp文档发送到WCF服务并保存返回错误“;无法保存没有页面的PDF文档";_Wcf_Bytearray_Pdfsharp - Fatal编程技术网

将PDFsharp文档发送到WCF服务并保存返回错误“;无法保存没有页面的PDF文档";

将PDFsharp文档发送到WCF服务并保存返回错误“;无法保存没有页面的PDF文档";,wcf,bytearray,pdfsharp,Wcf,Bytearray,Pdfsharp,我有一个由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); XG

我有一个由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文档保存到字节[](d是PDFSharp文档,passport.PassportScan是字节[]):

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

PdfDocument d = new PdfDocument(new MemoryStream(pPassport.PassportScan));
 d.Save(RecruitAidPathRoot + "100104 - JPD - John Paul Doe\\" + "JPD - file.pdf");
执行最后一行时,出现错误“无法保存没有页面的PDF文档”

客户机中的文档包含1页,因此服务中的文档也应该包含1页,对吗


提前感谢。

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

说明如下:

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


使用PdfReader类的Open方法:
公共静态PdfDocument Open(Stream-Stream)

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

说明如下:

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


请改用PdfReader类的Open方法:
publicstaticpdfdocumentopen(Stream)

谢谢您的帮助。我最后走了另一条路。我使用File.writealBytes保存了字节[]。谢谢您的帮助。我最后走了另一条路。我使用File.writealBytes保存了字节[]。
PdfDocument d = new PdfDocument(new MemoryStream(pPassport.PassportScan));
 d.Save(RecruitAidPathRoot + "100104 - JPD - John Paul Doe\\" + "JPD - file.pdf");