我是否可以创建一个流式传输pdf以供下载的Web服务

时间:2010-08-19 19:41:56

标签: c# asp.net web-services asp.net-mvc-2

我对Web服务没有多少经验,但我认为我的网站服务很有用。

我的公司刚刚购买了.net版本的Cete Pdf Merger(很棒的产品顺便说一句)。我们同时使用.Net& asp代码,也可能在将来使用java。

场景是一种技术(asp,java,.net)将具有原始数据列表,例如字段名称和数组。值。此数据将发布到Web服务,然后打开给定的pdf,将pdf表单字段与字段名称数组匹配,获取相应的值,将其填充到pdf上,然后将pdf流回用户进行下载。

这看起来可行吗?任何陷阱我都可能碰到你知道的?任何首选的方法(Web服务,WCF,???)

5 个答案:

答案 0 :(得分:2)

简答:WCF

更长的答案是:您似乎在区分WCF和“Web服务”。也许您正在考虑旧的“.asmx”Web服务。 Microsoft现在认为它们是“遗留软件”,并建议您使用WCF进行所有新的Web服务开发。

答案 1 :(得分:1)

如果您要使用.NET的Web服务,我建议使用WCF(Windows Communication Foundation)。

答案 2 :(得分:1)

WCF(MSDN)是一个不错的选择,但如果您想提供用户界面(例如输入字段值的HTML表单),您可以使用常规Web表单并发布到具有HTTP的页面,通过使用适当的MIME类型流式传输响应来返回PDF输出。

答案 3 :(得分:1)

这听起来像个好主意。您可以使用.asmx Web服务(其他人可能会看不起.asmx)。

建议像这样创建一个web方法:

(这个例子粗糙的边缘,但它只是描述一般的想法)

[WebMethod]
public void CreatePdfIncomeTax(IncomeTaxForm itf)
{
    // integrate with Cete Pdf Merger 
    string fileName = SomePdfMerging(itf);

    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "inline; filename=foo.pdf");
    Response.WriteFile(path);
    Response.Flush();
    Response.End();
}

...
// a class that the caller would populate as param to the webmethod
public class IncomeTaxForm 
{
   public string FirstName {get;set;}
   public string AddressLine1 {get;set;}
   ...
}

答案 4 :(得分:0)

我做了非常精确的事情,但使用Aspose作为PDF组件。我们使用的是.asmx网络服务,而不是我想要的WFC。我当然会同意其他所有人说WCF是要走的路。我知道我会更喜欢这个,但不幸的是,这个决定不是我的决定。