从 Web 请求创建有效的 PDF

Create a valid PDF from a web request

我正在尝试创建扫描解决方案。基本上,用户实际上是在扫描页面。打印机正在进行 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);
}

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

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

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);
}