通过添加额外的图层来隐藏PDF文本

时间:2013-12-03 14:26:32

标签: c# pdf itextsharp

我需要通过在我需要隐藏的文本上添加一个新图层来隐藏文本。

public void ReplacePDFText(string strSearch, StringComparison scCase, string strSource, string strDest)
{
    PdfContentByte pCont = null;

    if (File.Exists(strSource)) {
        PdfReader pdfFileReader = new PdfReader(strSource);
        using (PdfStamper psStamp = new PdfStamper(pdfFileReader, new FileStream(strDest, FileMode.Create))) {
            for (int intCurrPage = 1; intCurrPage <= pdfFileReader.NumberOfPages; intCurrPage++) {
                LocTextExtractionStrategy Strategy = new LocTextExtractionStrategy();
                pCont = psStamp.GetUnderContent(intCurrPage);
                Strategy.UndercontentCharacterSpacing = pCont.CharacterSpacing;
                Strategy.UndercontentHorizontalScaling = pCont.HorizontalScaling;

                string currText = PdfTextExtractor.GetTextFromPage(pdfFileReader, intCurrPage, Strategy);
                List<iTextSharp.text.Rectangle> lstMatches = Strategy.GetTextLocations(strSearch, scCase);

                PdfLayer pdLayer = default(PdfLayer);
                pdLayer = new PdfLayer("over", psStamp.Writer);
                pCont.SetColorFill(BaseColor.BLACK);
                foreach (Rectangle rctRect in lstMatches) {
                    pCont.Rectangle(rctRect.Left, rctRect.Bottom, rctRect.Width, rctRect.Height);
                    pCont.Fill();
                }
            }
        }
        pdfFileReader.Close();
    }
}

上述方法的问题在于,图层成功添加了黑色。因此,除了文本,我在文本上有一条漂亮的黑线。 但是,如果我将pCont.SetColorFill(BaseColor.BLACK)设置为白色,则仍会显示文本。 我怎样才能克服这个问题?

1 个答案:

答案 0 :(得分:3)

而不是:

pCont = psStamp.GetUnderContent(intCurrPage);

使用:

pCont = psStamp.GetOverContent(intCurrPage);