将文本添加到使用 itextsharp 关闭的现有 pdf 中

发布于 2024-10-08 21:40:04 字数 84 浏览 0 评论 0原文

你好 我正在使用 itextsharp 创建 PDF。现在我的要求是向现有的 pdf 添加更多文本。如果可以的话我该怎么做?

谢谢迪帕

Hi
I am creating PDF using itextsharp. Now my requirement is to add more text to the existing pdf. Is it possible if so then how can I do that?

Thanks Dipa

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

澜川若宁 2024-10-15 21:40:04

是的,有一定的限制。

确定现有页面上已有的内容很困难,但并非不可能。

如果您只想将“第 X 页,共 Y 页”添加到所有页面的左下角,那就简单

PdfReader reader = new PdfReader( inPath );
PdfStamper stamper = new PdfStamper( reader, new FileOutputStream( outPath ) );
BaseFont font = BaseFont.createFont(); // Helvetica, WinAnsiEncoding
for (int i = 0; i < reader.getNumberOfPages(); ++i) {
  PdfContentByte overContent = stamper.getOverContent( i + 1 );
  overContent.saveState();
  overContent.beginText();
  overContent.setFontAndSize( font, 10.0f );
  overContent.setTextMatrix( xLoc, yLoc );
  overContent.showText( "Page " + (i + 1) + " of " + reader.getNumberOfPages() );
  overContent.endText();
  overContent.restoreState();
}
stamper.close();

大水印并不困难。在 PDF 中的一个或多个预定位置添加内容是完全可行的。

另一方面是“更改现有段落中的文本并重排它们”。这几乎是不可能的。使用新数据重建原始 PDF 会容易得多。

事实上,如果可能的话,重建它们吧。你做过一次,再做一次。

Yes, with certain limitations.

It is difficult, but not impossible, to determine what is already on an existing page.

If all you want to do is add "page X of Y" to the bottom left corner of all your pages, that's easy.

PdfReader reader = new PdfReader( inPath );
PdfStamper stamper = new PdfStamper( reader, new FileOutputStream( outPath ) );
BaseFont font = BaseFont.createFont(); // Helvetica, WinAnsiEncoding
for (int i = 0; i < reader.getNumberOfPages(); ++i) {
  PdfContentByte overContent = stamper.getOverContent( i + 1 );
  overContent.saveState();
  overContent.beginText();
  overContent.setFontAndSize( font, 10.0f );
  overContent.setTextMatrix( xLoc, yLoc );
  overContent.showText( "Page " + (i + 1) + " of " + reader.getNumberOfPages() );
  overContent.endText();
  overContent.restoreState();
}
stamper.close();

A big watermark isn't much more difficult. Adding things to a PDF at one or more predetermined locations is quite doable.

At the other end of the spectrum is "change text within existing paragraphs and reflow them". That's all but impossible. It would be much easier to rebuild the original PDF with the new data.

In fact, if at all possible, just rebuild them. You did it once, do it again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文