繁体   English   中英

如何将 FileSteam 保存为 PDF 文件

[英]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.

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