首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDFsharp:使用PDFsharp替换字符串

PDFsharp:使用PDFsharp替换字符串
EN

Stack Overflow用户
提问于 2015-11-19 05:59:02
回答 1查看 3K关注 0票数 1

This问题已经存在,但没有使用PDFsharp而使用iTextPDF提供答案。

现在回到问题上,我知道了一种读取和提取字符串的方法。但我很难换掉这段文字。

我的代码:

代码语言:javascript
复制
        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;
        }
    }

这是一个示例代码,这个代码将忽略图形和图像。最后只在输出文件中写入文本。有没有方法可以在不触及内容中的图形和图像的情况下替换文本?

EN

回答 1

Stack Overflow用户

发布于 2015-11-19 09:58:11

该示例似乎是一种错误的方法:它只返回文本,但忽略了图形、图像,甚至文本位置和文本属性。

您可以尝试在内容中定位文本指令( TJ,Tj),并将它们替换为新的指令(也可以是Tj或Tj),而无需接触流中的任何其他内容。如果新案文的长度不同,这种简单的做法将导致案文重叠或出现很大的空白。

PDFsharp不是为解析内容流而设计的。您必须编写自己的代码来提取文本,还必须编写自己的代码来修改文本(或者使用构建在PDFsharp上的第三方库)。

要回答您的问题:是的,有一种方法(如上面所概述的),但是您必须编写大量代码才能实现这一点(或者找到合适的第三方编写的代码)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33796321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档