c# - 检测PDF文件是否正确(标题PDF)

标签 c# file pdf header corrupt

<分区>

我有一个管理许多 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;

    }

关于c# - 检测PDF文件是否正确(标题PDF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108201/

相关文章:

node.js - Cloudinary 配置无效

file - 如何使用 node.js 测试文件权限?

java - 锁定Java中文件的存在

android - 在 Android 上显示通过 POST 响应/下载收到的 PDF 文件

java - pdfbox - 签名横向文件错误

c# - 如何在基于 .NET 的非 GUI 应用程序中打印?

c# - 如何将 SQL 结果转换为 C# 中的对象列表?

c# - 用于 Visual Studio 项目的超简单轻量级源代码控制?

c# - 如何将文件添加到 Azurite [Azure 存储模拟器]

ruby-on-rails - 如何使用 Prawn 设置页面大小?