我有一个现有的文件,我想在绝对位置标记图像.我能够做到这一点,但我也想让这个图像可以点击:当用户点击图像时,我希望PDF转到文档的最后一页.
这是我的代码:
PdfReader readerOriginalDoc = new PdfReader("src/main/resources/test.pdf");
PdfStamper stamper = new PdfStamper(readerOriginalDoc,new FileOutputStream("NewStamper.pdf"));
PdfContentByte content = stamper.getOverContent(1);
Image image = Image.getInstance("src/main/resources/images.jpg");
image.scaleAbsolute(50, 20);
image.setAbsolutePosition(100, 100);
image.setAnnotation(new Annotation(0, 0, 0, 0, 3));
content.addImage(image);
stamper.close();
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
您正在使用的技术仅在从头开始创建文档时才有效.
请查看AddImageLink示例,了解如何添加图像和链接以使该图像可单击到现有文档:
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Image img = Image.getInstance(IMG);
float x = 10;
float y = 650;
float w = img.getScaledWidth();
float h = img.getScaledHeight();
img.setAbsolutePosition(x, y);
stamper.getOverContent(1).addImage(img);
Rectangle linkLocation = new Rectangle(x, y, x + w, y + h);
PdfDestination destination = new PdfDestination(PdfDestination.FIT);
PdfAnnotation link = PdfAnnotation.createLink(stamper.getWriter(),
linkLocation, PdfAnnotation.HIGHLIGHT_INVERT,
reader.getNumberOfPages(), destination);
link.setBorder(new PdfBorderArray(0, 0, 0));
stamper.addAnnotation(link, 1);
stamper.close();
}
Run Code Online (Sandbox Code Playgroud)
您已经有关于正确添加图像的部分.请注意,我为图像的位置及其尺寸创建参数:
float x = 10;
float y = 650;
float w = img.getScaledWidth();
float h = img.getScaledHeight();
Run Code Online (Sandbox Code Playgroud)
我使用这些值来创建一个Rectangle对象:
Rectangle linkLocation = new Rectangle(x, y, x + w, y + h);
Run Code Online (Sandbox Code Playgroud)
这是我们使用PdfAnnotation类创建的链接注释的位置.您需要使用该addAnnotation()方法单独添加此注释.
您可以在此处查看结果:link_image.pdf 如果单击i图标,则跳转到文档的最后一页.
| 归档时间: |
|
| 查看次数: |
8340 次 |
| 最近记录: |