【发布时间】:2018-08-17 01:30:59
【问题描述】:
代码如下。它改编自标准 itext 7 示例以添加 PdfRedactAnnotation。链接注释有效,但戳记和编辑无效。我正在使用的 PDF 链接为 here。任何人都知道为什么这不起作用?是关于 PDF 的吗?
我的最终目标是在部分文本上放置一些白色矩形,以便在打印时不会显示文本。
import java.io.File;
import java.nio.file.Paths;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfNumber;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.action.PdfAction;
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfLinkAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfRedactAnnotation;
import com.itextpdf.kernel.pdf.annot.PdfStampAnnotation;
public class AddRotatedAnnotation {
static final String SRC = Paths.get("calendar_2018-08-04_2018-08-19.pdf").toString();
static final String DEST = Paths.get("calendar_clean.pdf").toString();
public static void main(String[] args) throws Exception {
File file = new File(DEST);
file.getParentFile().mkdirs();
new AddRotatedAnnotation().manipulatePdf(DEST);
}
protected void manipulatePdf(String dest) throws Exception {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST));
PdfAction action = PdfAction.createURI("http://pages.itextpdf.com/ebook-stackoverflow-questions.html");
Rectangle linkLocation1 = new Rectangle(30, 770, 90, 30);
PdfAnnotation link1 = new PdfLinkAnnotation(linkLocation1)
.setHighlightMode(PdfAnnotation.HIGHLIGHT_INVERT)
.setAction(action)
.setColor(ColorConstants.RED.getColorValue());
pdfDoc.getFirstPage().addAnnotation(link1);
Rectangle linkLocation2 = new Rectangle(30, 670, 30, 90);
PdfAnnotation link2 = new PdfRedactAnnotation(linkLocation2)
.setColor(ColorConstants.BLACK.getColorValue());
pdfDoc.getFirstPage().addAnnotation(link2);
Rectangle linkLocation3 = new Rectangle(150, 770, 90, 30);
PdfAnnotation stamp1 = new PdfStampAnnotation(linkLocation3)
.setStampName(new PdfName("Confidential"))
.setContents("Landscape").setColor(ColorConstants.BLACK.getColorValue());
pdfDoc.getFirstPage().addAnnotation(stamp1);
Rectangle linkLocation4 = new Rectangle(150, 670, 90, 90);
PdfAnnotation stamp2 = new PdfStampAnnotation(linkLocation4)
.setStampName(new PdfName("Confidential"))
.setContents("Portrait")
.put(PdfName.Rotate, new PdfNumber(90));
pdfDoc.getFirstPage().addAnnotation(stamp2);
Rectangle linkLocation5 = new Rectangle(250, 670, 90, 90);
PdfAnnotation stamp3 = new PdfStampAnnotation(linkLocation5)
.setStampName(new PdfName("Confidential"))
.setContents("Portrait")
.put(PdfName.Rotate, new PdfNumber(45));
pdfDoc.getFirstPage().addAnnotation(stamp3);
pdfDoc.close();
}
}
【问题讨论】:
-
“但是戳记和编辑的不起作用。” - 它们在哪些方面不起作用?您的程序是否卡在该代码中?它会抛出一些异常吗?电脑会爆炸吗?
-
戳记不可见,并且编辑不覆盖任何文本。