我有一个管理许多 PDF 文件的 Windows .NET 应用程序。一些文件已损坏。
2个问题:我会尽量用我不完美的英语解释......对不起
1.)
如何检测任何 pdf 文件是否正确?
我想读取 PDF 的标题并检测它是否正确。
var okPDF = PDFCorrect(@"C:\temp\pdfile1.pdf");
2.)
如何判断文件的 byte[] (bytearray) 是否为 PDF 文件。
例如,对于 ZIP 文件,您可以检查前四个字节并查看它们是否与本地 header 签名匹配,即十六进制
50 4b 03 04
if (buffer[0] == 0x50 && buffer[1] == 0x4b && buffer[2] == 0x03 &&
buffer[3] == 0x04)
如果你将它加载到一个 long 中,这是 (0x04034b50)。通过大卫· PIL 森
我想要同样的 PDF 文件。
byte[] dataPDF = ...
var okPDF = PDFCorrect(dataPDF);
.NET 中的任何示例源代码?
我这样检查页眉 PDF:
public bool IsPDFHeader(string fileName)
{
byte[] buffer = null;
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(fileName).Length;
//buffer = br.ReadBytes((int)numBytes);
buffer = br.ReadBytes(5);
var enc = new ASCIIEncoding();
var header = enc.GetString(buffer);
//%PDF−1.0
// If you are loading it into a long, this is (0x04034b50).
if (buffer[0] == 0x25 && buffer[1] == 0x50
&& buffer[2] == 0x44 && buffer[3] == 0x46)
{
return header.StartsWith("%PDF-");
}
return false;
}