使用 bytescout PDFExtractor C# 查找文本坐标
Finding text coordinates using bytescout PDFExtractor C#
我有一个 PDF,需要查找和替换一些文本。我知道如何创建叠加层和添加文本,但我无法确定如何定位当前文本坐标。这是我在 bytescout 网站上找到的示例 -
// Create Bytescout.PDFExtractor.TextExtractor instance
TextExtractor extractor = new TextExtractor();
extractor.RegistrationName = "";
extractor.RegistrationKey = "";
/////find text
// Load sample PDF document
extractor.LoadDocumentFromFile(@"myPdf.pdf");
int pageCount = extractor.GetPageCount();
RectangleF location;
for (int i = 0; i < pageCount; i++)
{
// Search each page for string
if (extractor.Find(i, "OPTION 2", false, out location))
{
do
{
Console.WriteLine("Found on page " + i + " at location " + location.ToString());
}
while (extractor.FindNext(out location));
}
}
Console.WriteLine();
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
}
}
但它不起作用,因为没有采用 4 个参数的重载 Find 方法。我不喜欢使用 Bytescout 从 pdf 中查找文本坐标,但我的公司有许可证。如果 Bytescout 无法完成我正在尝试做的事情,是否有一种免许可的方式来查找 pdf 上的文本坐标?
尝试使用:
extractor.Find(i, "OPTION 2", false).FoundText.Bounds
FoundText 属性 实现了 ISearchResult:
https://cdn.bytescout.com/help/BytescoutPDFExtractorSDK/html/T_Bytescout_PDFExtractor_ISearchResult.htm
which has these properties:
Public 属性 边界: 所有搜索结果元素的边界矩形。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 ElementCount: Returns 单个搜索结果元素的计数。
Public 属性 元素: 搜索结果元素(包含在搜索结果中的单个文本对象)对于 COM/ActiveX 使用 GetElement(Int32 ) 代替。
Public 属性 高度: 搜索结果外接矩形的高度。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 Left: 搜索结果外接矩形左坐标。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 PageIndex: 包含搜索结果的页面的索引。
Public 属性 文本: 搜索结果的文本表示。使用 Elements 或 GetElement(Int32) 获取单个元素。
Public 属性 Top: 搜索结果外接矩形的顶部坐标。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 宽度: 搜索结果外接矩形的宽度。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
我有一个 PDF,需要查找和替换一些文本。我知道如何创建叠加层和添加文本,但我无法确定如何定位当前文本坐标。这是我在 bytescout 网站上找到的示例 -
// Create Bytescout.PDFExtractor.TextExtractor instance
TextExtractor extractor = new TextExtractor();
extractor.RegistrationName = "";
extractor.RegistrationKey = "";
/////find text
// Load sample PDF document
extractor.LoadDocumentFromFile(@"myPdf.pdf");
int pageCount = extractor.GetPageCount();
RectangleF location;
for (int i = 0; i < pageCount; i++)
{
// Search each page for string
if (extractor.Find(i, "OPTION 2", false, out location))
{
do
{
Console.WriteLine("Found on page " + i + " at location " + location.ToString());
}
while (extractor.FindNext(out location));
}
}
Console.WriteLine();
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
}
}
但它不起作用,因为没有采用 4 个参数的重载 Find 方法。我不喜欢使用 Bytescout 从 pdf 中查找文本坐标,但我的公司有许可证。如果 Bytescout 无法完成我正在尝试做的事情,是否有一种免许可的方式来查找 pdf 上的文本坐标?
尝试使用:
extractor.Find(i, "OPTION 2", false).FoundText.Bounds
FoundText 属性 实现了 ISearchResult: https://cdn.bytescout.com/help/BytescoutPDFExtractorSDK/html/T_Bytescout_PDFExtractor_ISearchResult.htm
which has these properties:
Public 属性 边界: 所有搜索结果元素的边界矩形。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 ElementCount: Returns 单个搜索结果元素的计数。
Public 属性 元素: 搜索结果元素(包含在搜索结果中的单个文本对象)对于 COM/ActiveX 使用 GetElement(Int32 ) 代替。
Public 属性 高度: 搜索结果外接矩形的高度。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 Left: 搜索结果外接矩形左坐标。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 PageIndex: 包含搜索结果的页面的索引。
Public 属性 文本: 搜索结果的文本表示。使用 Elements 或 GetElement(Int32) 获取单个元素。
Public 属性 Top: 搜索结果外接矩形的顶部坐标。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。
Public 属性 宽度: 搜索结果外接矩形的宽度。使用 Elements 或 GetElement(Int32) 获取单个元素的边界。