c# - 从 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);
}
这只是测试一些东西,我有写入文件的权限等,它只是没有创建一个有效的文件。
关于我应该使用什么的任何想法?我查看了一些图书馆,但它们似乎并没有涵盖我所追求的
解决方案
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);
}
推荐阅读
- vb6 - Dir 函数错误“参数数量错误或属性分配无效”
- azure - 如何在线备份 Azure DevOps 源代码控制并还原到本地 Azure DevOps 服务器实例
- javascript - 在 Node 中多次使用 replace() 和全局变量
- php - 创建新表时不能添加外键约束
- c# - 我需要使用 Epplus 修改列的值
- safari - Safari 上的跨站点跟踪?任何解决方法?
- html - div 内的输入事件与标签内的输入事件的作用不同
- ruby - 在 VSCode 终端中在 Win 10 上运行 rake 任务会添加一个默认的 -w 标志
- excel - 使用 Excel VBA 我正在尝试从我当前的另一个工作簿中创建一个联合字符串
- django - Django:通过模板中的模型显示多对多关系