PDF Highlights Annotation
Contents
[
Hide
]
文本标记注释应在文档的文本中以高亮、下划线、删除线或波浪(“曲线”)下划线的形式出现。打开时,它们应显示一个包含关联注释文本的弹出窗口。
可以使用PDF查看器控件提供的属性窗口编辑PDF文档中文本标记注释的属性。可以修改文本标记注释的颜色、不透明度、作者和主题。
可以使用highlightSettings属性获取或设置高亮注释的设置。 The highlightSettings 属性用于设置高亮注释的颜色、不透明度、作者、主题、修改日期和 isLocked 属性。
也可以使用 strikethroughSettings 属性获取或设置删除线注释的设置。strikethroughSettings 属性用于设置删除线注释的颜色、不透明度、作者、主题、修改日期和 isLocked 属性。
下一个功能是能够使用 underlineSettings 属性获取或设置下划线注释的设置。underlineSettings 属性用于设置下划线注释的颜色、不透明度、作者、主题、修改日期和 isLocked 属性。
添加文本标注注释
为了将文本标注注释添加到 PDF 文档中,我们需要执行以下操作:
-
加载 PDF 文件 - 新的 Document 对象。
-
创建注释:
- HighlightAnnotation 并设置参数(标题,颜色)。- StrikeOutAnnotation 并设置参数 (标题, 颜色)。
- SquigglyAnnotation 并设置参数 (标题, 颜色)。
- UnderlineAnnotation 并设置参数 (标题, 颜色)。
- 之后我们应该将所有注释添加到页面。
package com.aspose.pdf.examples;
import java.util.*;
import com.aspose.pdf.*;
public class ExampleTextMarkupAnnotation {
// 文档目录的路径。
private static String _dataDir = "/home/admin1/pdf-examples/Samples/";
public static void AddTextMarkupAnnotation() {
try {
// 加载PDF文件
Document document = new Document(_dataDir + "sample.pdf");
Page page = document.getPages().get_Item(1);
TextFragmentAbsorber tfa = new TextFragmentAbsorber("PDF");
tfa.visit(page);
// 创建注释
HighlightAnnotation highlightAnnotation = new HighlightAnnotation(page,
tfa.getTextFragments().get_Item(1).getRectangle());
highlightAnnotation.setTitle("Aspose User");
highlightAnnotation.setColor(Color.getLightGreen());
StrikeOutAnnotation strikeOutAnnotation = new StrikeOutAnnotation(page,
tfa.getTextFragments().get_Item(2).getRectangle());
strikeOutAnnotation.setTitle("Aspose User");
strikeOutAnnotation.setColor(Color.getBlue());
SquigglyAnnotation squigglyAnnotation = new SquigglyAnnotation(page,
tfa.getTextFragments().get_Item(3).getRectangle());
squigglyAnnotation.setTitle("Aspose User");
squigglyAnnotation.setColor(Color.getRed());
UnderlineAnnotation underlineAnnotation = new UnderlineAnnotation(page,
tfa.getTextFragments().get_Item(4).getRectangle());
underlineAnnotation.setTitle("Aspose User");
underlineAnnotation.setColor(Color.getViolet());
// 将注释添加到页面
page.getAnnotations().add(highlightAnnotation);
page.getAnnotations().add(squigglyAnnotation);
page.getAnnotations().add(strikeOutAnnotation);
page.getAnnotations().add(underlineAnnotation);
document.save(_dataDir + "sample_mod.pdf");
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
如果您想要突出显示多行片段,您应该使用高级示例:
/// <summary>
/// 高级示例,您想要突出显示多行片段
/// </summary>
public static void AddHighlightAnnotationAdvanced() {
Document document = new Document(_dataDir + "sample_mod.pdf");
Page page = document.getPages().get_Item(1);
TextFragmentAbsorber tfa = new TextFragmentAbsorber("Adobe\\W+Acrobat\\W+Reader", new TextSearchOptions(true));
tfa.visit(page);
for (TextFragment textFragment : tfa.getTextFragments()) {
HighlightAnnotation highlightAnnotation = HighLightTextFragment(page, textFragment, Color.getYellow());
page.getAnnotations().add(highlightAnnotation);
}
document.save(_dataDir + "sample_mod.pdf");
}
private static HighlightAnnotation HighLightTextFragment(Page page, TextFragment textFragment, Color color) {
HighlightAnnotation ha;
if (textFragment.getSegments().size() == 1) {
ha = new HighlightAnnotation(page, textFragment.getSegments().get_Item(1).getRectangle());
ha.setTitle("Aspose User");
ha.setColor(color);
ha.setModified(new Date());
Rectangle rect = textFragment.getSegments().get_Item(1).getRectangle();
ha.setQuadPoints(
new Point[] { new Point(rect.getLLX(), rect.getURY()), new Point(rect.getURX(), rect.getURY()),
new Point(rect.getLLX(), rect.getLLY()), new Point(rect.getURX(), rect.getLLY()) });
return ha;
}
int offset = 0;
Point[] quadPoints = new Point[textFragment.getSegments().size() * 4];
for (TextSegment segment : textFragment.getSegments()) {
Rectangle r = segment.getRectangle();
quadPoints[offset + 0] = new Point(r.getLLX(), r.getURY());
quadPoints[offset + 1] = new Point(r.getURX(), r.getURY());
quadPoints[offset + 2] = new Point(r.getLLX(), r.getLLY());
quadPoints[offset + 3] = new Point(r.getURX(), r.getLLY());
offset += 4;
}
double llx = quadPoints[0].getX();
double lly = quadPoints[0].getY();
double urx = quadPoints[0].getX();
double ury = quadPoints[0].getY();
for (Point pt : quadPoints) {
if (llx > pt.getX())
llx = pt.getX();
if (lly > pt.getY())
lly = pt.getY();
if (urx < pt.getX())
urx = pt.getX();
if (ury < pt.getY())
ury = pt.getY();
}
ha = new HighlightAnnotation(page, new Rectangle(llx, lly, urx, ury));
ha.setTitle("Aspose User");
ha.setColor(color);
ha.setModified(new Date());
ha.setQuadPoints(quadPoints);
return ha;
}
/// <summary>
/// 如何获取已突出显示的文本
/// </summary>
public static void GetHighlightedText() {
// 加载PDF文件
Document document = new Document(_dataDir + "sample_mod.pdf");
Page page = document.getPages().get_Item(1);
AnnotationSelector annotationSelector1 = new AnnotationSelector(
new HighlightAnnotation(page, Rectangle.getTrivial()));
page.accept(annotationSelector1);
List<Annotation> highlightAnnotations = annotationSelector1.getSelected();
for (Annotation ta : highlightAnnotations) {
System.out.println("[" + ((HighlightAnnotation) ta).getMarkedText() + "]");
}
}
获取文本标记注释
请尝试使用以下代码片段从 PDF 文档中获取文本标记注释。
public static void GetTextMarkupAnnotation() {
// 加载 PDF 文件
Document document = new Document(_dataDir + "sample_mod.pdf");
Page page = document.getPages().get_Item(1);
AnnotationSelector annotationSelector1 = new AnnotationSelector(
new HighlightAnnotation(page, Rectangle.getTrivial()));
page.accept(annotationSelector1);
AnnotationSelector annotationSelector2 = new AnnotationSelector(
new SquigglyAnnotation(page, Rectangle.getTrivial()));
page.accept(annotationSelector2);
List<Annotation> textMarkupAnnotations = annotationSelector1.getSelected();
textMarkupAnnotations.addAll(annotationSelector2.getSelected());
// 打印结果
for (Annotation ta : textMarkupAnnotations) {
System.out.printf("[" + ta.getAnnotationType() + ta.getRect() + "]");
}
}
删除文本标记注释
以下代码片段显示了如何从 PDF 文件中删除文本标记注释。
public static void DeleteTextMarkupAnnotation() {
// 加载 PDF 文件
Document document = new Document(_dataDir + "sample_mod.pdf");
Page page = document.getPages().get_Item(1);
AnnotationSelector annotationSelector1 = new AnnotationSelector(
new HighlightAnnotation(page, Rectangle.getTrivial()));
page.accept(annotationSelector1);
AnnotationSelector annotationSelector2 = new AnnotationSelector(
new SquigglyAnnotation(page, Rectangle.getTrivial()));
page.accept(annotationSelector2);
List<Annotation> textMarkupAnnotations = annotationSelector1.getSelected();
textMarkupAnnotations.addAll(annotationSelector2.getSelected());
// 打印结果
for (Annotation ta : textMarkupAnnotations) {
page.getAnnotations().delete(ta);
}
document.save(_dataDir + "sample_del.pdf");
}