林凡骥优秀作者
原创内容 来源:小居数码网 时间:2024-08-09 15:37:01 阅读() 收藏:56 分享:47 爆
导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有1741个文字,大小约为6KB,预计阅读时间5分钟。
众所周知,我们无法对PDF格式的文档进行直接编辑,而需借助PDF编辑器才可以。今天,我将介绍如何不使用编辑器,只需借助一个控件来通过后端调用Java代码的方式编辑PDF文档 —— 给PDF文档中的指定文本添加注释及如何删除已有注释。
运行代码前,我们需要创建开发环境,即安装配置JDK和Intellij IDEA。接着我们需将Free Spire.PDF for Java控件下的Spire.Pdf.jar导入IDEA。可手动导入或通过Maven仓库引用以下代码进行导入。
<repositories> <repository> <id>com.e-iceblue</id> <url>http://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories><dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>3.9.0</version> </dependency></dependencies>
新建PDF文档并为其添加弹出式注释
import com.spire.pdf.*;import com.spire.pdf.annotations.*;import com.spire.pdf.graphics.*;import java.awt.*;import java.awt.geom.*;public class PopupAnnotation { 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("Arial Unicode MS", Font.BOLD + Font.ITALIC,13), true); PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Left); float y = 50; String s = "本示例用于演示如何为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("Arial Unicode MS",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 = "添加弹出式注释"; page.getCanvas().drawString(label, font, PdfBrushes.getOrangeRed(), x, y); x = x + (float)font.measureString(label, format).getWidth(); String markupText = "什么是弹出式注释?"; 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/AddPopupAnnotation.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 TextBoxAnnotation { public static void main(String[] args) { //加载示例文档 PdfDocument doc = new PdfDocument(); doc.loadFromFile("C:UsersTest1DesktopSample.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, 150, 30); PdfFreeTextAnnotation textAnnotation = new PdfFreeTextAnnotation(rect); // 设置注释文字及字体,注释框边界颜色及背景色 textAnnotation.setMarkupText("人工智能的定义"); PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial",0, 12));; 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(); }}
添加效果
删除PDF文档中已有的注释
Free Spire.PDF for Java不仅支持删除PDF文档中已有的所有注释,同时还可以删除指定的某个注释。以下是删除所有注释的代码示例。
import com.spire.pdf.*;public class DeleteAnnotation { public static void main(String[] args) { //加载示例文档 PdfDocument document = new PdfDocument(); document.loadFromFile("C:UsersTest1DesktopFreeTextAnnotation.pdf"); //删除第一页上的第一个注释 //document.getPages().get(0).getAnnotationsWidget().removeAt(0); //删除所有注释 document.getPages().get(0).getAnnotationsWidget().clear(); //保存文档 String result = "output/DeleteAllAnnotations.pdf"; document.saveToFile(result); }}
上面就是小居数码小编今天给大家介绍的关于(如何删除pdf注释)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
(292)个朋友认为回复得到帮助。
部分文章信息来源于以及网友投稿,转载请说明出处。
本文标题:java程序中注释可删除吗?(如何删除pdf注释):http://sjzlt.cn/shuma/154066.html