如何使用PDFSharp从pdf中删除图像?

时间:2016-10-24 08:35:55

标签: c# pdfsharp

如何使用PDFSharp从现有pdf中删除图像(全部)?

我试过这段代码:

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;
}

但是这段代码在Acrobat Reader中打开该文件时会提供pdf错误...

如何使用PDFSharp从现有pdf中删除图像而不会出现问题?

提前致谢!

1 个答案:

答案 0 :(得分:1)

删除图像,但不要更改绘制图像的页面内容。 Adobe Reader尝试绘制不再存在的图像。 这就是你的文件损坏的原因。

可能的解决方案(只是猜测,而不是我的专业领域):

  • 用透明图像替换图像,让页面绘制透明图像。
  • 解析页面内容并删除绘制已删除图像的所有代码。