【问题标题】:Edit PDF Text Object Given Its ID- ABCPDF根据 ID 编辑 PDF 文本对象 - ABCPDF
【发布时间】:2013-07-08 11:15:18
【问题描述】:

我可以成功地将文本添加到pdf并以这种方式存储对象的ID:

int ID = theDoc.AddText(ItemText);

但是,当我尝试通过以下方式更新 pdf 上的项目文本时,它不起作用。

theDoc.SetInfo(ID, ":Text", ItemText);

这里是关于 SetInfo 函数的文档:http://www.websupergoo.com/helppdfnet/source/5-abcpdf/doc/1-methods/setinfo.htm

该函数接受 pdf 对象的 ID、类型和要插入的数据。我相信我的错误在于第二个参数(类型),但我不确定如何使类型更具描述性。

任何想法或意见都会很棒。

【问题讨论】:

    标签: c# asp.net .net pdf abcpdf


    【解决方案1】:

    如果您使用 AddText 添加文本,那么您将获得一个 ID。要更改文本,请在 ID 上调用 Doc.Delete,然后添加新文本。

    就在现有 PDF 文档中提取文本而言,您应该使用 TextOperation 类。像这样的:

    TextOperation op = new TextOperation(theDoc);
    op.PageContents.AddPages();
    string text = op.GetText();
    

    返回的文本是在已选择页面上找到的文本 - 在本例中是文档中的所有页面。

    然后您可以使用与 string.Substring 相同的操作来选择文本的位。因此,如果您的文本是“Hello World!”您可以使用以下方式选择 Hello 位:

    IList<TextFragment> frags = op.Select(0, 5);
    

    TextFragments 列表表示文本在 PDF 中的存储方式。因此,您可以获取每个片段,找出它在内容流中的位置并根据需要进行操作。

    【讨论】:

    • 感谢您的回答!不过我想知道,如何让我的替换文本仍然使用相同的文本样式(字体和大小)并包含矩形。有没有办法通过对象 ID 获取这些信息?那么是否有可能获取该信息,删除文本然后在同一区域添加具有旧对象样式的新文本?想象一下使用他们在此处看到的示例:abcpdfeditor.com,除了您可以编辑添加的文本并且它仍然包含在同一个矩形中。
    • @OnceUponATimeInTheWest:我在现有文本上创建了一个矩形。我想删除现有的文本组/片段。 ABCPdf 可以选择吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2020-09-18
    • 2011-05-07
    相关资源
    最近更新 更多