【问题标题】:PDFsharp: Replace a string using PDFsharpPDFsharp:使用 PDFsharp 替换字符串
【发布时间】:2015-11-19 05:59:02
【问题描述】:

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

现在回到问题,我知道一种读取和提取字符串的方法。但我无法替换文本。

我的代码:

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

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

【问题讨论】:

    标签: c# pdf pdfsharp


    【解决方案1】:

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

    您可以尝试在内容中找到文本指令(TJ、Tj)并用新指令(也可以是 TJ 或 Tj)替换它们,而无需触及流中的任何其他内容。如果新文本的长度不同,这种简单的方法会导致文本重叠或较大的间隙。

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

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

    【讨论】:

    • 感谢您的回复。我知道这是错误的 :) 这就是我在 Q 中发布的内容。
    • 对基于 PDFSharp 构建的第三方库的任何引用?如果您知道这是免费许可的
    • 我不知道这样的代码是否存在。 PDFsharp 不是为文本提取而设计的,也不是为文本操作而设计的。我知道有使用 PDFsharp 构建的文本提取代码。
    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 2016-12-07
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多