如何将FileSteam保存为PDF文件

本文关键字:PDF 文件 保存 FileSteam | 更新日期: 2023-09-27 18:03:01

我正在使用第三方工具从扫描仪获得扫描的内容。单击按钮,它执行代码并将内容作为FileStream提供。现在我需要将这个FileStream内容保存为pdf文件到指定的文件夹中。

保存后,我需要在浏览器中打开文件。如何将FileStream保存为PDF文件?

如何将FileSteam保存为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格式,然后让用户下载。