开发人员的任务是将PDF文件推送到FTP站点。意外地,每个PDF被读取为字符串,编码为UTF-8字节数组,然后推送到FTP。显然,这造成了问题,因为PDF文件不是文本。
下面是执行的代码:
//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不是字符串。我只是想看看是否有可能扭转腐败)
注意:我们已经修复了代码,并获得了如下字节数。我只想知道有没有办法撤销已经做过的事。
var pdfBytes = File.ReadAllBytes(filePath);发布于 2020-04-09 01:22:25
我要说“不”。下面是与W3C的dummy.pdf并排显示的代码(左侧),在将字节写回磁盘后,请提交您的损坏过程(右侧):

您可以看到,左边的许多字节已被替换为EE BF BD -一个替换字符。这意味着,即使文件大小已经膨胀,原始文件的大部分已经丢失(靠近屏幕截图的底部,您可以看到一些已被保留的明文元素)。您可能能够恢复文件中嵌入的文本,但栅格化为图像、绘图和其他对象的文本可能已丢失
下面是我用来创建第二个文件的代码:
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);https://stackoverflow.com/questions/61106029
复制相似问题