当我生成 link 时,如何创建转发 link 到一个尚不存在的特定页面
How do I create a forward link to a specific page which does not yet exists when I generate the link
如何生成一些文本,link转发到我正在生成的 pdf 文件中的其他页面?
我有下面的代码生成工作 pdf links,它要求我 link 到的页面在我生成 [=19= 时存在于 pdf 文件中].有什么办法可以避免这个问题吗?
我的用例是我正在生成 table 内容,它位于 pdf 文件的开头,但它需要 link 到内容页面,而内容页面不需要但当我生成 table 内容时存在。
int linkToPdfPage=42;
PdfArray array = new PdfArray();
array.add(pdfDocument.getPage(linkToPdfPage).getPdfObject());
array.add(PdfName.Fit);
PdfDestination dest2 = PdfDestination.makeDestination(array);
Link newLink=new Link("Link text", PdfAction.createGoTo(dest2));
newLink.getLinkAnnotation().setBorder(new PdfArray(new int[]{0,0,0}));
您可以为此任务使用命名目标。您可以使用您选择的名称创建 link 到 PdfStringDestination
,稍后,当您拥有目标页面时,创建一个明确的目标并使用 [=12 将其添加到您选择的名称的文档中=].
例如:
try ( PdfDocument pdfDocument = new PdfDocument(new PdfWriter(...));
Document document = new Document(pdfDocument) )
{
String destinationName = "MyForwardDestination";
for (int page = 1; page <= 50; page++) {
document.add(new Paragraph().setFontSize(100).add(String.valueOf(page)));
switch (page) {
case 1:
document.add(new Paragraph(new Link("Click here for a forward jump", new PdfStringDestination(destinationName)).setFontSize(20)));
break;
case 42:
pdfDocument.addNamedDestination(destinationName, PdfExplicitDestination.createFit(pdfDocument.getLastPage()).getPdfObject());
break;
}
if (page < 50)
document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
}
}
(CreateLink 测试 testCreateForwardLink
)
这会生成一个 50 页的 PDF,其中第 1 页上的 link 指向第 42 页,并且 link 早在第 42 页创建之前就已添加到第 1 页。
如何生成一些文本,link转发到我正在生成的 pdf 文件中的其他页面?
我有下面的代码生成工作 pdf links,它要求我 link 到的页面在我生成 [=19= 时存在于 pdf 文件中].有什么办法可以避免这个问题吗?
我的用例是我正在生成 table 内容,它位于 pdf 文件的开头,但它需要 link 到内容页面,而内容页面不需要但当我生成 table 内容时存在。
int linkToPdfPage=42;
PdfArray array = new PdfArray();
array.add(pdfDocument.getPage(linkToPdfPage).getPdfObject());
array.add(PdfName.Fit);
PdfDestination dest2 = PdfDestination.makeDestination(array);
Link newLink=new Link("Link text", PdfAction.createGoTo(dest2));
newLink.getLinkAnnotation().setBorder(new PdfArray(new int[]{0,0,0}));
您可以为此任务使用命名目标。您可以使用您选择的名称创建 link 到 PdfStringDestination
,稍后,当您拥有目标页面时,创建一个明确的目标并使用 [=12 将其添加到您选择的名称的文档中=].
例如:
try ( PdfDocument pdfDocument = new PdfDocument(new PdfWriter(...));
Document document = new Document(pdfDocument) )
{
String destinationName = "MyForwardDestination";
for (int page = 1; page <= 50; page++) {
document.add(new Paragraph().setFontSize(100).add(String.valueOf(page)));
switch (page) {
case 1:
document.add(new Paragraph(new Link("Click here for a forward jump", new PdfStringDestination(destinationName)).setFontSize(20)));
break;
case 42:
pdfDocument.addNamedDestination(destinationName, PdfExplicitDestination.createFit(pdfDocument.getLastPage()).getPdfObject());
break;
}
if (page < 50)
document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
}
}
(CreateLink 测试 testCreateForwardLink
)
这会生成一个 50 页的 PDF,其中第 1 页上的 link 指向第 42 页,并且 link 早在第 42 页创建之前就已添加到第 1 页。