java - 使用 iText 将文本添加到 pdf 的特定页面
问题描述
我需要创建一个工具,为 pdf 文件每隔一页添加一个超链接。
我遵循了 iText 文档,并设法添加了超链接,但仅在第一页上。
我的代码:
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
Font bold = new Font(FontFamily.HELVETICA, 30, Font.BOLD);
PdfReader reader = new PdfReader(src);
int count = reader.getNumberOfPages();
Utils.logInfoMessage("Number of pages: " + count, mLogList);
if(count < 1) {
Utils.logErrorMessage("file : " + src + " has no pages", mLogList);
return;
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
PdfContentByte canvas = stamper.getOverContent(1);
PdfGState gState = new PdfGState();
gState.setFillOpacity(0.1f);
canvas.setGState(gState);
Chunk chunk = new Chunk("www.google.com", bold);
chunk.setAnchor("https://www.google.ro/");
Phrase phrase = new Phrase("");
phrase.add(chunk);
ColumnText ct = new ColumnText(canvas);
ct.setSimpleColumn(36, 700, 559, 750);
ct.addText(phrase);
ct.go();
stamper.close();
reader.close();
}
任何想法如何仅在特定页面上添加超链接/文本?
解决方案
你写了:
我遵循了 iText 文档,并设法添加了超链接,但仅在第一页上
这是 iText 文档:PdfStamper
获取内容
public PdfContentByte getOverContent(int pageNum)
获取一个
PdfContentByte
以覆盖原始文档的页面。参数:
pageNum
- 写入额外内容的页码回报:
a
PdfContentByte
覆盖原始文档的页面
这是你写的代码:
PdfContentByte canvas = stamper.getOverContent(1);
您用作1
的值pageNum
。
现在您告诉我:如果您选择1
作为页码,那么您为什么会惊讶于您添加的所有内容都只添加在第一页上?
重要的:
你写
我遵循了 iText 文档
我假设您参考 iText 官方网页上的官方文档:https ://itextpdf.com
如果这是正确的,那你为什么还在使用旧版本的 iText?当前版本是 7.1.2,该PdfStamper
版本中不再存在该类。正如iText 7 Jump-Start 教程的第 5 章所述,现在向现有 PDF 添加内容的方式有所不同。
仅供参考:这里还有更多教程:https ://developers.itextpdf.com/books
推荐阅读
- azure - 使用 UserAssertion 获取 PowerBI 访问令牌
- jquery - Select2 多项选择未在服务器端捕获。MVC
- wix - WiX 安装程序:当在初始 msi 中设置为 NeverOverwrite=yes 时,我们能否使用补丁在 web.config 中添加新元素
- django - Django 使用 XHR 下载媒体文件会导致 CORS 错误
- android - 如何使用 Guon mobile StorageService 访问 sdcard?
- mikrotik - 将 vpn 网络转发到另一个接口
- java - android中的出生日期问题
- c# - 如何在 crud 操作中使用 MOQ
- javascript - 当我使用 setState 回调来 toggleDropdown 我的下拉菜单在选择项目后打开
- java - HttpServletRequest getParameterMap - 单独获取表单参数