要将PDF中的注释导出成XFDF文件。用AHK加jsobject写了以下代码。该代码在特定文件打开时,可以成功导出。但在特定文件关闭时,只能导出一个不带注释的xfdf文件
使用acrobat DC
FileEncoding, UTF-8
PDDoc := ComObjCreate("acroExch.PDDoc") ; create an PD document object
PDDoc.Open("F:\Demo\B.pdf") ; open a pdf into the PDDoc
JSO:= PDDoc.GetJSObject ; this JavaScript object is mainly used by Acrobat to run its scripts engine
JSO.exportAsXFDF(false, false, null, "B.xfdf", true) ; convert and save as xml
PDDoc.Close()
Exit
特定文件关闭时XFDF文件中不包括注释
试过在
不打开任何PDF的情况下,也能导出全部注释
引入 itextpdf
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
1.新建document对象,可通过一下三种任意一种
Document document =new Document(); // 默认页面大小是A4
Document document =new Document(PageSize.A4); // 指定页面大小为A4
Document document =new Document(PageSize.A4,50,50,30,20); // 指定页面大小为A4,且自定义页边距(marginLeft、marginRight、marginTop、marginBottom)
其中页面大小PageSize也可自定义大小,例:new Document(new Rectangle(400, 500));
2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径
PdfWriter writer =PdfWriter.getInstance(document,new FileOutputStream(filePath));
3.打开文档
写入数据之前要打开文档
document.open();
4.向文档中添加内容
document.add();
5.关闭文档
document.close();
使用itextpdf试试
如有帮助,请采纳,十分感谢!
pdf里的注释有什么特征么,有特征的话可以先提取pdf全部内容,再根据特征提取注释