如何将FileSteam保存为PDF文件
本文关键字:PDF 文件 保存 FileSteam | 更新日期: 2023-09-27 18:03:01
我正在使用第三方工具从扫描仪获得扫描的内容。单击按钮,它执行代码并将内容作为FileStream提供。现在我需要将这个FileStream内容保存为pdf文件到指定的文件夹中。
保存后,我需要在浏览器中打开文件。如何将FileStream保存为PDF文件?
您可以直接将流写入响应的输出缓冲区。
如果你在你的代码中你有来自扫描器的文件流。简单地从扫描器文件流中读取字节并将它们写入Response.OutputStream
设置contentType为application/pdf
确保不返回其他内容。用户浏览器将执行当前配置的任何操作,要么保存到磁盘,要么显示在浏览器中。如果需要备份,此时也可以保存到服务器上的磁盘。
我假设你的文件流已经是pdf格式了,否则你需要使用像itextsharp这样的工具来创建pdf。
编辑下面是一些简单的代码。您会想要整理这些内容,比如添加异常捕获以确保文件流得到正确的清理。
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/
如果我理解正确,第三方库正在向您提供包含扫描文档数据的流,您需要将其写入文件?如果是这种情况,你需要在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();
不确定,但也许检查一下
http://sourceforge.net/projects/itextsharp/iTextSharp + FileStream = PDF文件损坏
另一个著名的PDF库(我过去也用过)是iTextSharp。你可以看看这个教程,看看如何将转换成PDF格式,然后让用户下载。