c# - 如何检测 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 文件中的损坏情况?
解决方案
推荐阅读
- android - apk (.apk) 和应用程序包 (.aab) 之间的区别
- webgl - 如何为 WebGL 中的输出纹理或帧缓冲区提供偏移量?
- php - laravel 如何创建通知表?
- javascript - 如何从内部分配 PROMISE 之外的值
- typescript - 可以在 Typescript 库中的 package.json 中将 @types 库作为正常依赖项吗?
- disassembly - xc16获取反汇编(listing.disasm)文件的命令是什么?
- geneticsharp - 如何自定义染色体基因的值?
- php - PhpSpreadsheet - 多张纸上的块数据
- javascript - 如何排除目录被 Webpack 捆绑?
- c# - Twilio MessagingResponse 不适用于 csharp DLL 5.16.2