我需要创建一个工具,该工具每隔一页就为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();
}
有什么想法仅在特定页面上添加超链接/文本吗?
答案 0 :(得分:1)
您写道:
我遵循了iText文档,并且设法添加了超链接,但仅在第一页上
这是iText文档:PdfStamper
getOverContent
public PdfContentByte getOverContent(int pageNum)
获取
PdfContentByte
来覆盖原始页面 文档。参数:
pageNum
-写入额外内容的页码返回:
一个
PdfContentByte
覆盖原始文档的页面
这是您编写的代码:
PdfContentByte canvas = stamper.getOverContent(1);
您使用1
作为pageNum
的值。
现在您告诉我:如果您选择1
作为页码,那么为什么您添加的所有内容都只添加在第一页上令您感到惊讶呢?
重要提示:
您写
我遵循了iText文档
我假设您参考官方iText网页上的官方文档:https://itextpdf.com
如果这是正确的,那么为什么仍使用旧版本的iText?当前版本为7.1.2,并且该版本不再存在PdfStamper
类。正如chapter 5的iText 7 Jump-Start tutorial中所述,如今将内容添加到现有PDF的方法有所不同。
仅供参考:这里还有更多教程:https://developers.itextpdf.com/books