簡體   English   中英

PDFsharp:使用PDFsharp替換字符串

[英]PDFsharp: Replace a string using PDFsharp

這個問題已經存在,但沒有提供使用PDFsharp但使用iTextPDF的答案。

現在回到問題,我知道一種讀取和提取String的方法。 但是我在替換文字時遇到了麻煩。

我的代碼:

        var content = ContentReader.ReadContent(page);      
        var text = content.ExtractText();
        text = text.Replace("Replace This", "With This");
        XFont font = new XFont("Times New Roman", 11, XFontStyle.BoldItalic);

        gfx.DrawString(text, font, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.Left);

        // Save the document...
        const string filename = "New Doc.pdf";
        document.Save(filename);
    }   

    public static IEnumerable<string> ExtractText(this CObject cObject)
    {   
        if (cObject is COperator)
        {
            var cOperator = cObject as COperator;
            if (cOperator.OpCode.Name== OpCodeName.Tj.ToString() ||
                cOperator.OpCode.Name == OpCodeName.TJ.ToString())
            {
                foreach (var cOperand in cOperator.Operands)
                    foreach (var txt in ExtractText(cOperand))
                        yield return txt;   
            }
        }
        else if (cObject is CSequence)
        {
            var cSequence = cObject as CSequence;
            foreach (var element in cSequence)
                foreach (var txt in ExtractText(element))
                    yield return txt;
        }
        else if (cObject is CString)
        {
            var cString = cObject as CString;
            yield return cString.Value;
        }
    }

這是示例代碼,該代碼將忽略圖形和圖像。 最終只在輸出文件中寫入文本。 有什么方法可以替換文本而無需觸摸內容中的“圖形和圖像”?

該示例似乎是錯誤的方法:它僅返回文本,但是忽略圖形,圖像,甚至文本位置和文本屬性。

您可以嘗試在內容中找到文本說明(TJ,Tj),並用新的說明(也就是TJ或Tj)替換它們,而無需觸摸流中的任何其他內容。 如果新文本的長度不同,則這種簡單的方法將導致文本重疊或間隙較大。

PDFsharp並非旨在分析內容流。 您必須編寫自己的代碼以提取文本,您必須編寫自己的代碼以修改文本(或使用基於PDFsharp構建的第三方庫)。

要回答您的問題:是的,有一種方法(如上所述),但是您將必須編寫大量代碼來實現此目的(或找到由第三方編寫的合適代碼)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM