繁体   English   中英

将pdf转换为流的最有效方法是什么

[英]What would be the most efficient way of converting a pdf to a stream

我有一个WCF服务,它将接收一个ID并根据该ID返回一个pdf文件。 我假设执行此操作的最佳方法是将pdf文件转换为某种字符串,然后将其返回。 但是,我不确定要使用哪个流( Stream, Filestream, or MemoryStream )。

我知道我可以将pdf文件读取到字节数组,然后使用MemoryStream对其进行处理,但是我觉得有一种更有效的方法。

我试图做这篇文章在这里建议的: 如何将pdf转换为内存流

硬编码文件路径以返回如下:

return File(@"C:\MyFile.pdf", "application/pdf");

只是为了看看会发生什么,但是在File上看到一条错误消息:“'System.IO.File'是'type',但是却像'variable'一样使用。

谁能提供一些见识?

编辑

这是我目前正在努力的方向:

[OperationContract]
[WebInvoke(Method = "GET",
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    UriTemplate = "/GetInvoiceFile")]
Stream GetInvoiceFile(string id);

public Stream GetInvoiceFile(string BillingPeriodId)
{
    byte[] bytes = File.ReadAllBytes(@"C:\pdf-test.pdf");
    return new MemoryStream(bytes);
}

我只是不完全知道如何编辑OperationContract以返回pdf。 有任何想法吗?

答案取决于您所拥有的。 您似乎将文件的路径作为string 您的WCF方法可能返回一个byte[] 您需要以某种方式有效地将该路径转换为byte[]

您可以使用File.ReadAllBytes(string path)进行此操作。

WCF还支持流式写入,但是稍微复杂一点,并且对于小文件来说,性能的胜利是可疑的。

您尝试指定MIME类型( "application/pdf" )的事实告诉我,您实际上并不了解WCF服务和HTTP服务之间的区别。 研究这是您的家庭作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM