本文将介绍如何使用Spire.PDF 在java应用程序中为PDF文档添加弹出式附注和文本框注释。
新建PDF文档添加弹出式附注:
import com.spire.pdf.*;
import com.spire.pdf.annotations.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.*;
public class PDFAnnotation {
public static void main(String[] args) {
//初始化PdfDocument实例
PdfDocument doc = new PdfDocument();
//设置边距
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.setTop(unitCvtr.convertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
margin.setBottom(margin.getTop());
margin.setLeft(unitCvtr.convertUnits(3f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
margin.setRight(margin.getLeft());
//添加新页
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);
//插入文本
PdfBrush brush1 = PdfBrushes.getBlack();
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("宋体", Font.BOLD + Font.ITALIC,13), true);
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Left);
float y = 50;
String s = "Spire.PDF for Java 用于创建编辑PDF文档";
page.getCanvas().drawString(s, font1, brush1, 0, y - 5, format1);
y = y + (float)font1.measureString(s, format1).getHeight();
//指定附注的文本、图标及图标颜色
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体",0, 10));
PdfStringFormat format = new PdfStringFormat();
format.setMeasureTrailingSpaces(true);
String prompt = "弹出式注释";
Dimension2D size = font.measureString(prompt, format);
page.getCanvas().drawString(prompt, font, PdfBrushes.getDodgerBlue(), 0, y);
float x = (float)size.getWidth();
String label = "Spire.PDF for Java添加弹出式批注";
page.getCanvas().drawString(label, font, PdfBrushes.getOrangeRed(), x, y);
x = x + (float)font.measureString(label, format).getWidth();
String markupText = "什么是Spire.PDF for Java";
Rectangle2D rectangle2D = new Rectangle.Float();
rectangle2D.setFrame(new Point2D.Double(x,y),new Dimension());
PdfPopupAnnotation annotation = new PdfPopupAnnotation(rectangle2D, markupText);
annotation.setIcon(PdfPopupIcon.Paragraph);
annotation.setOpen(true);
annotation.setColor(new PdfRGBColor(Color.YELLOW));
((PdfNewPage) page).getAnnotations().add(annotation);
//保存文档
doc.saveToFile("output/annotation.pdf");
doc.close();
}
}
效果图:
为已有PDF文档添加文本框注释:
import com.spire.pdf.*;
import com.spire.pdf.annotations.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.*;
import com.spire.pdf.general.find.PdfTextFind;
public class PDFAnnotation {
public static void main(String[] args) {
//加载示例文档
PdfDocument doc = new PdfDocument();
doc.loadFromFile("Sample.pdf");
//获取第一页
PdfPageBase page = doc.getPages().get(0);
//获取文本
PdfTextFind[] find = page.findText("主要功能").getFinds();
//指定文本框注释的位置
float x = (float) (find[0].getPosition().getX() - doc.getPageSettings().getMargins().getLeft() + find[0].getSize().getWidth() + 20);
float y = (float) (find[0].getPosition().getY() - doc.getPageSettings().getMargins().getTop() + 20);
//创建文本框注释
Rectangle2D.Float rect = new Rectangle2D.Float(x, y, 120, 20);
PdfFreeTextAnnotation textAnnotation = new PdfFreeTextAnnotation(rect);
// 设置注释文字及字体,注释框边界颜色及背景色
textAnnotation.setMarkupText("Spire.PDF 文本框注释");
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", 0, 10));
;
textAnnotation.setFont(font);
PdfAnnotationBorder border = new PdfAnnotationBorder(0.5f);
textAnnotation.setBorder(border);
textAnnotation.setBorderColor(new PdfRGBColor(Color.pink));
textAnnotation.setColor(new PdfRGBColor(Color.YELLOW));
textAnnotation.setOpacity(0.75f);
textAnnotation.setTextMarkupColor(new PdfRGBColor(Color.black));
//添加注释到PDF
page.getAnnotationsWidget().add(textAnnotation);
//保存文档
doc.saveToFile("output/FreeTextAnnotation.pdf");
doc.close();
}
}
效果图: