首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDF文件的错误UTF8转换(c#)

PDF文件的错误UTF8转换(c#)
EN

Stack Overflow用户
提问于 2020-04-09 01:00:24
回答 1查看 465关注 0票数 1

开发人员的任务是将PDF文件推送到FTP站点。意外地,每个PDF被读取为字符串,编码为UTF-8字节数组,然后推送到FTP。显然,这造成了问题,因为PDF文件不是文本。

下面是执行的代码:

代码语言:javascript
复制
//method passed in a filepath to use for the upload
var filePath = @"C:\temp\myFile.pdf";
byte[] pdfBytes;
using (var sr = new StreamReader(filePath))
{
    pdfBytes = Encoding.UTF8.GetBytes(sr.ReadToEnd());
}
//byte array was then uploaded

我的问题是:有没有办法在每个文件的基础上扭转这种类型的损坏?你能读取损坏的PDF,读取它的字节,然后以某种方式将其恢复为"PDF字符串“吗?(我知道PDF不是字符串。我只是想看看是否有可能扭转腐败)

注意:我们已经修复了代码,并获得了如下字节数。我只想知道有没有办法撤销已经做过的事。

代码语言:javascript
复制
var pdfBytes = File.ReadAllBytes(filePath);
EN

回答 1

Stack Overflow用户

发布于 2020-04-09 01:22:25

我要说“不”。下面是与W3C的dummy.pdf并排显示的代码(左侧),在将字节写回磁盘后,请提交您的损坏过程(右侧):

您可以看到,左边的许多字节已被替换为EE BF BD -一个替换字符。这意味着,即使文件大小已经膨胀,原始文件的大部分已经丢失(靠近屏幕截图的底部,您可以看到一些已被保留的明文元素)。您可能能够恢复文件中嵌入的文本,但栅格化为图像、绘图和其他对象的文本可能已丢失

下面是我用来创建第二个文件的代码:

代码语言:javascript
复制
            var filePath = @"C:\temp\dummy.pdf";
            byte[] pdfBytes;
            using (var sr = new StreamReader(filePath))
            {
                pdfBytes = Encoding.UTF8.GetBytes(sr.ReadToEnd());
            }
            File.WriteAllBytes(@"C:\temp\dummy2.pdf", pdfBytes);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61106029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档