2016-10-24 5 views
0

Как я могу удалить изображения (все) из существующего pdf с помощью PDFSharp?Как удалить изображения из pdf с помощью PDFSharp?

Я попробовал этот код:

public static PdfDocument RemoveImages(PdfDocument pdf) 
{ 
    foreach (PdfPage page in pdf.Pages) 
    { 
     PdfDictionary resource = page.Elements.GetDictionary("/Resources"); 
     if (resource != null) 
     { 
      PdfDictionary objects = resource.Elements.GetDictionary("/XObject"); 
      if (objects != null) 
      { 
       foreach (string itemKey in objects.Elements.Keys) 
       { 
        PdfItem item = objects.Elements[itemKey]; 
        PdfReference reference = item as PdfReference;       
        if (reference != null) 
        { 
         PdfDictionary xObject = reference.Value as PdfDictionary; 
         if (xObject != null && xObject.Elements.GetString("/Subtype") == "/Image") 
         { 
          pdf.Internals.RemoveObject((PdfObject)reference.Value); // remove image from internal document table 
          objects.Elements.Remove(itemKey); // remove image from page resource 
         } 
        } 
       } 
      } 
     } 
    } 

    return pdf; 
} 

Но этот код обеспечивает Pdf curruption при открытии этого файл в Acrobat Reader ...

Как удалить изображения из существующего PDF с помощью PDFsharp без curruption?

Заранее благодарен!

ответ

1

Вы удаляете изображения, но не изменяете содержимое страниц, на которых рисуются изображения. Adobe Reader пытается нарисовать изображение, которого больше нет. Вот почему ваши файлы повреждены.

Возможных решений (только гадать, не моя область знаний):

  • Заменить изображения с прозрачными изображениями, пусть страницы рисовать прозрачные изображения.
  • Проанализируйте содержимое страниц и удалите весь код, который извлекает удаленные изображения.
Смежные вопросы