iText - 如何在现有 PDF 上标记图像并创建 anchor

标签 itext

我有一个现有文档,我想在其上在绝对位置标记图像。
我能够做到这一点,但我也想让这张图片可点击:当用户点击时
在图像上,我希望 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();

知道如何做到这一点吗?

最佳答案

您正在使用一种仅在从头开始创建文档时才有效的技术。

请看 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();
}

您已经掌握了正确添加图像的部分。请注意,我为图像的位置及其尺寸创建了参数:
float x = 10;
float y = 650;
float w = img.getScaledWidth();
float h = img.getScaledHeight();

我使用这些值来创建 Rectangle目的:
Rectangle linkLocation = new Rectangle(x, y, x + w, y + h);

这是我们使用 PdfAnnotation 创建的链接注释的位置。类(class)。您需要使用 addAnnotation() 单独添加此注释。方法。

您可以在此处查看结果:link_image.pdf
如果您点击 图标,您将跳转到文档的最后一页。

关于iText - 如何在现有 PDF 上标记图像并创建 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983703/

相关文章:

c# - 向 PdfPTable、iTextSharp 添加一列

java - 使用 java、itext 和 POI API 将 excel 文件转换为 pdf 并保留设置

java - 将 Swing 组件添加到 PDF 文件

Java使用itext在现有pdf中设置本地文件超链接

c# - 关闭文档时抛出“文档没有页面”错误

java - iText5 PDF 内容在页脚上被覆盖

java - 如何在itext 5中将部分代码添加到pdf中

java - 如何使用打印对话框打开使用 Flying-saucer/itext 创建的 PDF

java - 如何使用 iText 在 pdf 中添加 Sprite 图像?

itext - 如何对齐 block 的左侧和右侧