首页 > 解决方案 > 如何检测 PDF 中的损坏

问题描述

我正在使用 iText7 for .NET 和 C# 来操作 PDF。我想检测生成“错误参数”和“阅读本文档时出现问题 (15)”等错误的 PDF。使用 iText7,我可以用这种类型的错误重写 PDF 而不会触发异常,

try
{
    pdfReader = new PdfReader(pdfFile);
    pdfR = new PdfDocument(pdfReader);
    PDFPages = pdfR.GetNumberOfPages();
    if (Functions.isPortfolio(pdfR)) throw new Exception("Can't process PDF portfolios");
    string sizes = string.Empty;
    string size = string.Empty;
    for (int page = 1; page <= PDFPages; page++)
    {
        size = Functions.getPDFPageSize(pdfR, page);
        if (sizes.Contains(size) == false) sizes += ", " + size;
    }
    sizes = sizes.Substring(2);
    PDFentry temp = PDFList[entry];
    temp.PageCount = PDFPages;
    temp.PageSizes = sizes;
    PDFList[entry] = temp;
    pageCount += PDFPages;
    if (Settings.Default.CheckRewrite)
    {
        tempFile = Path.GetTempFileName();
        pdfWriter = new PdfWriter(tempFile);
        var pdfW = new PdfDocument(pdfWriter);
        pdfR.CopyPagesTo(1, PDFPages, pdfW);
        pdfW.Close();
        pdfR.Close();
        File.Copy(tempFile, pdfFile, overwrite: true);
    }
    else
    {
        pdfR.Close();
    }
}

并且复制的结果不可避免地没有损坏,但我只想测试和重写确实损坏的 PDF。我使用 iText 库的经验非常有限,但我可以使用哪些方法来检测 PDF 文件中的损坏情况?

标签: c#itext7

解决方案


推荐阅读