Please find the attached documents
For just scanned document : Scanned PDF Document.PDF .
For Scanned and performed OCR using Adobe : Scanned PDF Document - OCR.PDF
We perform the OCR for the scanned document using the Adobe Acrobat to recognizing the text so that we can copy/select the text. So for this document we are creating an link with text colour. But link created and unable to apply the text color.
Note : I just observed that, while creating an link for any text on the OCR - scanned document, the textFragment.TextState.Invisible is coming has true, is that the way its working for scanned document?
Below are the code snip set
/Code start/
Aspose.Pdf.Page page = pdf.Pages[Int32.Parse(data.linkInfo[i].sourcepage)];
double llx = double.Parse(data.linkInfo[i].llx);
double lly = page.MediaBox.Height - double.Parse(data.linkInfo[i].lly) - double.Parse(data.linkInfo[i].height);
double urx = llx + double.Parse(data.linkInfo[i].width);
double ury = lly + double.Parse(data.linkInfo[i].height);
Aspose.Pdf.Rectangle AnnotRect = new Aspose.Pdf.Rectangle(llx, lly, urx, ury);
LinkAnnotation link = new LinkAnnotation(page, AnnotRect);
double pageHeight = destpage.MediaBox.Height;
XYZExplicitDestination mag = new XYZExplicitDestination( pdf.Pages[Int32.Parse(1)], 0, pageHeight, 0);
link.Action = new GoToAction(mag);
page.Annotations.Add(link);
// Apply Link Text color foreach (Annotation annotation in page.Annotations)
{
if (annotation is LinkAnnotation)
{
Aspose.Pdf.Rectangle rect = annotation.Rect;
if (rect.LLX == AnnotRect.LLX && rect.LLY == AnnotRect.LLY && rect.URX == AnnotRect.URX && rect.URY == AnnotRect.URY)
{
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
absorber.TextSearchOptions.Rectangle = rect;
Rotation pageRotation = page.Rotate;
page.Rotate = Rotation.None;
page.Accept(absorber);
foreach (TextFragment textFragment in absorber.TextFragments)
{
try
{
if (data.linkInfo[i].textcolor == null)
{
System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(textFragment.TextState.ForegroundColor.ToString());
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(color1);
}
else
{
System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(data.linkInfo[i].textcolor);
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(color1);
}
}
catch(NullReferenceException)
{ }
}
page.Rotate = pageRotation;
}
}
}
pdf.IsLinearized = true;
pdf.Save(“output.pdf”);
pdf.Dispose();
/Code end/