[英]How to save FileSteam as PDF file
我正在使用第三方工具从扫描仪获取扫描的内容。 单击按钮时,它会执行代码并将内容作为 FileStream 提供。 现在我需要将此 FileStream 内容作为 pdf 文件保存到指定文件夹中。
保存后我需要在浏览器中打开文件。 如何将 FileStream 保存为 PDF 文件?
您可以将 stream 直接写入响应的 output 缓冲区。
因此,如果您在代码中拥有来自扫描仪的文件流的位置。 只需从扫描仪文件流中读取字节并将它们写入Response.OutputStream
将 contentType 设置为application/pdf
确保您不返回任何其他内容。 用户浏览器将执行现在配置的任何操作,保存到磁盘或显示在浏览器中。 此时您也可以保存到服务器上的磁盘,以备不时之需。
我假设您的文件 stream 已经是 pdf,否则您需要使用 itextsharp 之类的东西来创建 pdf。
编辑这里有一些粗略和现成的代码来做这件事。 您需要整理一下,例如添加异常捕获以确保正确清理文件 stream。
public void SaveToOutput(Stream dataStream)
{
dataStream.Seek(0, SeekOrigin.Begin);
FileStream fileout = File.Create("somepath/file.pdf");
const int chunk = 512;
byte[] buffer = new byte[512];
int bytesread = dataStream.Read(buffer,0,chunk);
while (bytesread == chunk)
{
HttpContext.Current.Response.OutputStream.Write(buffer, 0, chunk);
fileout.Write(buffer, 0, chunk);
bytesread = dataStream.Read(buffer, 0, chunk);
}
HttpContext.Current.Response.OutputStream.Write(buffer, 0, bytesread);
fileout.Write(buffer, 0, bytesread);
fileout.Close();
HttpContext.Current.Response.ContentType = "application/pdf";
}
西蒙
您可能想查看 SourceForge 上的 C# PDF 库: http://sourceforge.net/projects/pdflibrary/
如果我对您的理解正确,第三方库正在向您发送包含扫描文档数据的 stream,您需要将其写入文件吗? 如果是这种情况,您需要在 C# 中查找文件 I/O。 这是一个链接和一个例子:
Stream sourceStream = scanner.GetOutput(); // whereever the source stream is
FileStream targetStream = File.OpenWrite(filename, FileMode.Create());
int bytesRead = 0;
byte[] buffer = new byte[2048];
while (true) {
bytesRead = sourceStream.Read(buffer, 0, buffer.length);
if (bytesRead == 0)
break;
targetStream.Write(buffer, 0, bytesRead);
}
sourceStream.Close();
targetStream.Close();
另一个著名的 PDF 库(我过去也使用过)是iTextSharp 。 您可以查看本教程,了解如何将Stream 转换为 PDF,然后让用户下载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.