【问题标题】:Image positioning in iText - JavaiText 中的图像定位 - Java
【发布时间】:2012-10-12 20:08:12
【问题描述】:

我正在尝试阅读一个 PDF 并将其数据复制到另一个 PDF。第一个 PDF 包含一些文本和图像,我希望在第二个 PDF 中准确地在文本结束的地方写一个图像(这基本上是 PDF 文件的结尾)。现在它只打印在顶部。如何进行此更改?

PdfReader reader = null;
reader = new PdfReader(Var.input);
Document document=new Document();
PdfWriter writer = null;
writer = PdfWriter.getInstance(document,new FileOutputStream(Var.output));
PdfImportedPage page = writer.getImportedPage(reader, 1); 
reader.close();  
document.open();
PdfContentByte cb = writer.getDirectContent();
// Copy first page of existing PDF into output PDF
document.newPage();
cb.addTemplate(page, 0, 0);

// Add your new data / text here
Image image = null;
image = Image.getInstance (Var.qr);
document.add(image);
document.close();

【问题讨论】:

    标签: java image pdf itext


    【解决方案1】:

    试试这个:

    首先获取图像需要去的位置/坐标,然后只需将下面的第二行添加到您的代码中,以便将图像插入到该位置“X,Y”

    Image image = Image.getInstance(String RESOURCE);
    image.setAbsolutePosition(X, Y);
    writer.getDirectContent().addImage(image);
    

    在这里查看 iText 5 中的一些示例:https://itextpdf.com/en/resources/examples/itext-5-legacy/chapter-3-adding-content-absolute-positions

    【讨论】:

    • 哦,这太棒了。但是有什么方法可以确定 X 和 Y 是文本的结束位置吗?还是在最后一页的底部中心?
    • 我知道有几种方法可以做到这一点,但从您的代码看来,mkl 建议的文本边距将是获取 X 和 Y 的最简单方法。另一种需要更多时间的方法工作是从原始 PDF 中逐个读取和写入部分,并在执行过程中计算 X 和 Y 位置,虽然速度较慢,但​​这样您就可以准确地知道图像适合的位置,并且可以在文本中和文本周围添加图像.
    • 实际上,Anurag 可能不得不稍微改变我所指的样本。如果所有文本,它会找到边距。这与他所说的相对应,但如果他的 pdf 包含页脚,那么示例也会将其视为文本的一部分。因此,他必须修改代码以考虑页脚。
    • 谢谢。它完全按照我的意愿工作。 :) 但是有什么方法可以使用 pdf 压模来放置带有坐标的文本吗?
    【解决方案2】:

    您应该在导入页面时使用 PdfStamper 而不是 PdfWriter。您的方法丢弃了所有交互式内容。你也可以在那里使用sorifiend的想法。

    要确定给定页面上的文本在哪里结束,请查看 iText in Action,第 2 版示例 ShowTextMargins,它解析 PDF 并广告显示文本边距的矩形。

    【讨论】:

    • 谢谢。它完全按照我的意愿工作。 :) 但是有什么方法可以使用 pdf 压模来放置带有坐标的文本吗?
    • 是的,你可以。不过,我将不得不查找如何...我的用例不包括向现有文档添加文本。
    • 我不得不添加一组图像和文本,结果图像很简单,但文本有点难以处理。一些帮助将不胜感激:)
    • 查看 iText in Action 第 2 版的第 6 章,可在 manning.com/lowagie2/samplechapter6.pdf 免费获取。 6.3.1 小节应该会告诉你方法。无论如何,整章都很好读……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多