使用itextsharp从pdf中删除文本

使用itextsharp从pdf中删除文本,itext,redaction,Itext,Redaction,我正在开发一个程序,从pdf的指定区域删除文本 它适用于大多数PDF,但我发现有些PDF包含使用索引的颜色空间的图形-它只适用于CMYK或RGB。恐怕我对这个问题真的一无所知,所以我真的需要一些帮助 这是我的密码: Dim source_file as String ="c:\test pdf\test.pdf" Dim destination_file as String = ="c:\test pdf\output.pdf" D

我正在开发一个程序,从pdf的指定区域删除文本

它适用于大多数PDF,但我发现有些PDF包含使用索引的颜色空间的图形-它只适用于CMYK或RGB。恐怕我对这个问题真的一无所知,所以我真的需要一些帮助

这是我的密码:

    Dim source_file as String ="c:\test pdf\test.pdf"
    Dim destination_file as String = ="c:\test pdf\output.pdf"
    Dim reader As PdfReader = New PdfReader(source_file)
    
    Using outputPdfStream As Stream = New FileStream(destination_file, FileMode.Create, FileAccess.Write, FileShare.None)
    
        Dim stamper = New PdfStamper(reader, outputPdfStream)
        Dim Locs As New List(Of PdfCleanUpLocation)
               
        Locs.Add(New PdfCleanUpLocation(1, New Rectangle(97.0F, 405.0F, 480.0F, 445.0F), BaseColor.WHITE))
    
        Dim oCleaner As New PdfCleanUpProcessor(Locs, stamper)
                
        oCleaner.CleanUp()
               
        stamper.Close()
        reader.Close()
    
    End Using
我得到的错误是:

iTextSharp.text.exceptions.UnsupportedPdfException:“颜色空间[/index,/DeviceCMYK,73,13 0R]不受支持”

这将出现在
oCleaner.CleanUp()
行中

作为参考,我最初从下面的链接中提取了代码,几年前,有人试图做一些类似的事情,但涉及更多:

如果有人能建议一种方法,让这个工作与PDF具有索引色彩空间图形我将非常感谢


谢谢你的阅读

目前的问题是,如果位图图像位于编辑区域,则编辑代码也必须操作位图图像。不过,它只能使用某些简单的颜色空间编辑位图。因此,如果PDF中的位图位于其他颜色空间中,则正如您所观察到的,该代码会失败。问题是,受影响区域中没有具有奇数颜色空间的图像-它们只会出现在页面的更下方。我尝试过删除这些,然后代码会运行,所以我知道即使图形在我试图清理的区域之外,它也会失败。好吧,这是一个不必要的限制。您是否尝试过iText 7在这方面是否做得更好?iText 5开发实际上已经停止,因此旧的
PdfCleanUpProcessor
不太可能在这方面得到改进。对于iText 7来说,这是一个不同的故事……事实上,到目前为止,我还没有一个令人信服的理由切换到iText 7——看起来我现在有了我试试看。谢谢。(实际上我还没有用iText 7尝试过。但是如果它不起作用,很可能会被放在开发路线图上。)目前的问题是,如果位图图像在编辑区域,编辑代码也必须处理位图图像。不过,它只能使用某些简单的颜色空间编辑位图。因此,如果PDF中的位图位于其他颜色空间中,则正如您所观察到的,该代码会失败。问题是,受影响区域中没有具有奇数颜色空间的图像-它们只会出现在页面的更下方。我尝试过删除这些,然后代码会运行,所以我知道即使图形在我试图清理的区域之外,它也会失败。好吧,这是一个不必要的限制。您是否尝试过iText 7在这方面是否做得更好?iText 5开发实际上已经停止,因此旧的
PdfCleanUpProcessor
不太可能在这方面得到改进。对于iText 7来说,这是一个不同的故事……事实上,到目前为止,我还没有一个令人信服的理由切换到iText 7——看起来我现在有了我试试看。谢谢。(事实上我还没有用iText 7尝试过。但是如果它不起作用,很可能会被放在开发路线图上。)