首页 > 解决方案 > 从 Web 请求创建有效的 PDF

问题描述

我正在尝试创建一个扫描解决方案。基本上,用户是在物理上扫描页面。打印机正在进行 API 调用,将扫描的二进制数据传入正文中。

我正在尝试将其保存为服务器上的 PDF,但是当我打开文件时,出现错误“读取流时出错”。

var bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
var bodyText = bodyStream.ReadToEnd();
string pathToFiles = HttpContext.Current.Server.MapPath("~\\UploadedFiles\\WriteLines.pdf");
try
{
    using (StreamWriter outputFile = new StreamWriter(pathToFiles, false))
    {
        outputFile.WriteLine(bodyText);
    }
    
    HttpContext.Current.Response.ContentType = "application/pdf";
}

catch (Exception ex)
{
    throw (ex);
}

这只是测试一些东西,我有写入文件的权限等,它只是没有创建一个有效的文件。

关于我应该使用什么的任何想法?我查看了一些图书馆,但它们似乎并没有涵盖我所追求的

标签: c#.netpdfscanning

解决方案


StreamReader.ReadToEnd将字节转换为特定编码的字符串(默认为 UTF8)。我认为这不适用于 PDF。

您需要直接在输出文件中复制字节:

var bodyStream = HttpContext.Current.Request.InputStream;
bodyStream.Seek(0, SeekOrigin.Begin);
string pathToFiles = HttpContext.Current.Server.MapPath("~\\UploadedFiles\\WriteLines.pdf");
using (FileStream outputFile = File.Create(pathToFiles))
{
    bodyStream.CopyTo(outputFile);
}

推荐阅读