I want to place a link in InfoQube that opens a PDF to a specific page.
This was discussed a couple of years ago (Universal Links):
Was suggested it should be possible by appending a code to the pdf URL
I've repeatedly tried to make this work but never have been able to.
Does anyone have a suggestion on how it can be done?
Wayne
How do I ?
Comments
The Zetero with zotfile and…
The Zetero with zotfile and mdnotes extension may give you what you need.
The combination can be used to extract highlighted notes from a PDF file with links to the originating pages. The link/call is in Adobe Acrobat format. You can copy these extractions to any editor. I have used them in Scrivener and Word, but they should also work in IQ editor (I haven’t tried it). Apparently these extracts can also be in markdown file format.
I don’t know how to run multiple instances of Acrobat so I needed to close the acrobat to click on a new link to another page. However, if you use foxit pdf reader and configure it to have multiple instances, then you can click it away…
Zetero beta has a built-in PDF viewer. These generated links work with the built-in viewer. In fact, that is probably what I will use going forward. You can still highlight and annotate outside zetero if you like...
This link works in Chrome …
It behaves differently for web and local files
For web, this works fine in Chrome, Firefox but not Edge:
http://www.africau.edu/images/default/sample.pdf#page=2
In v118g, you can hold the Shift key to show the Open With dialog and choose a browser
For local files however you can create the link in IQ but the #page=2 ending is ignored. I haven't found a way to pass it to the browser
If you hold Shift (or have show open with enabled), on some version of Windows, the dialog shows and selecting Chrome DOES open it to page 2 as it should. Windows 10 does not and shows a silly "You'll need a new store app" dialog
I'll keep trying
n.b. the web links do work in Edge, but is in conflict with a new Edge feature to resume PDF to previous page setting (LOL). Turn off "PDF view settings" to make it work
I am sure you are right…
I am sure you are right about web. I kept most of my files local and some in the cloud. I don’t use browser for reading PDF files. I use local desktop programs.
For the PDF files I have stored in Zotero (locally). Zetero with add-on I had described above can generate text highlighted in the PDF with associated links.
I just test it: I copy the a couple segments of text (with links) and pasted them in an infoqube doc.. Clicking on links (in the browser mode of infoq doc), I was taking to desired pages in the Zotero internal PDF viewer. When I reconfig zetero with either foxit or adobe, infoq would direct me to the correct page in the respective pdf reader.
Give it a try. For me, this combination really enhanced the power of InfoQube for me. I try to read “key” books in PDF format so I can highlight and annotate easily. I even covert most of my epub, awz books to PDF (via Calibre). I still read some books in kindle, but if the book is worth a 2nd read, I will read it in PDF.
Note: the Zotero internal PDF reader is only available in its beta version.
Excellent !!
Excellent !!
Fri 10/24/25 Update Never…
Fri 10/24/25 Update
Never found a definitive solution.
Suggested Zotero solution doesn't work for me because I rely heaving on my PDF program (Bluebeam Revu) to do markups with toolsets, layers, etc. Zotero viewer isn't going to have the power I need.
Workaround #1: Two-step navigation #1.
• Put PDF link in InfoQube that includes PDF page number.
• Open the PDF and navigate to correct page. (input page or number or use bookmark inside PDF)
• Con: Extra steps to navigate to target
• Con: If you rely on page number navigation, the page number references have to be updated when reference file changes.
• Con: If you relay on internal bookmarks in the PDF, these can become difficult to navigate if there are a lot of bookmarks in the file.
• Conclusion: Page number reference works ok if you're linking to a file that doesn't change (eg a book) but isn't tenable for files that change.
Workaround #2: Two-step navigation #2.
• My PDF program DOES have links to individual pages in other pdf's.
• Create InfoQube link to a pdf "link file" which in turn links to the target destination
• Con: takes much more time to create links.
• Conclusion: extra steps to create links are probably too much trouble
Workaround #3: Create individual PDF reference files
• Create a separate PDF file for each individual topic.
• Create InfoQube links to individual topics.
• Conclusion: solves direct link problem but works only on files you create. Doesn't work for books and articles.
Side note: how do I get the editor to use single-line spacing? It goes randomly from single-line to double-line and I can't figure out how to control it
Wayne
Hi Wayne, • My PDF program…
Hi Wayne,
Can you report back what this link looks like. I should be able to generate it directly...
Pierre, I'll show you how it…
Pierre,
I'll show you how it works in Revu step by step and you can tell me if you need something more.
1) The target file has to be open Revu but once created, the link works even if the target file is closed
2) Create flag and right-click>edit action.
3) This pops up a dialogue that lets you set a "jump" to another file from a pull down list. This list is populated by currently open files. I have selected one of the other open files and selected page 2:
4) This creates a link to page 2 of the other file. The link is activated by clicking on the lightning bolt on the flag:
5) You can also link to a specific spot on a page be selecting "Place" instead of "Page", then drawing a rectangle on the page where you want the link to go to.
6) The second screen cap above shows the coordinates and file name for the target.
If I hover over the link, it displays a truncated path:
That's all I can see to pass on. I looked at properties for the link flag but it didn't have any link info.
I don't think it's necessary to try to link to a specific spot on a page. A page link is good enough. I provided the spot link because it had some coordinate info that might help you.
I asked ChatGPT how Revu…
I asked ChatGPT how Revu does it. Sometimes ChatGPT has useful info (and sometimes not!). You can delete this post to de-clutter the thread if you want.
Short version: Bluebeam isn’t doing anything “proprietary” here—it’s using standard PDF link annotations and destinations. You can create the same kind of links with any PDF library. Here’s how it works and what to look for if you ever inspect the objects.
How links to pages/places work in PDFs
1) Link = an annotation with an action
/Annotsarray. Each entry can be a/Subtype /Linkannotation with:/Rect [x1 y1 x2 y2]→ the clickable box (in page user units)/A << … >>→ the action to perform when clicked2) Two key actions
/GoTo(same document):/A << /S /GoTo /D <destination> >>/GoToR(other document):/A << /S /GoToR /F <file spec> /D <destination> /NewWindow true|false >>/Fcan be a relative or absolute file spec. Relative paths are common in workflows that keep PDFs together.3) Destinations (the “place” part)
A destination tells the viewer where and how to display a page. Two flavors:
[/XYZ left top zoom]→ exact coordinates & zoom[/Fit]→ whole page[/FitH top]→ fit width, scroll to Y[/FitV left]→ fit height, scroll to X[/FitR left bottom right top]→ fit a rectangle/Names→/Dests) that maps a string name (e.g.,"Page12Top") to an explicit destination./D (name)instead of the array. Viewers resolve the name to the array.Bluebeam’s “Places,” bookmarks, and hyperlinks typically compile down to either a named destination or an explicit array.
Coordinate system you’re asking about
/Rotate) and page boxes (/CropBox,/MediaBox) matter. Annotations are specified in default user space; viewers apply page rotation/crop. If your page is rotated 90°, the annotation rect still uses the unrotated coordinate system—viewers handle it at render time.left= X coordinatetop= Y coordinate (still measured from the bottom in PDF space; the name “top” is historical—think “set the top edge to this Y”)zoom= e.g.,1.0for 100%.null(or omitted) means “don’t change current zoom.”Handy conversion (for scanned pages):
If you know scan DPI and pixel coordinates:
points = pixels * 72 / DPICross-file links (Revu → other PDF)
A typical remote link action looks like:
/A <<
/S /GoToR
/F (..\Maps\Sanborn_1911.pdf)
/D [12 0 R /XYZ 245 612 1.25] % or a named dest instead of the array
/NewWindow true
>>
/F can be a path or a file spec object. Relative paths are best if you move folders around together.
/D can be an explicit array (like above) or a name (e.g., (Sheet9Corner)).
What Bluebeam adds on top
Revu’s UI lets you set a hyperlink “Page Only,” “Page with Zoom,” “Snapshot View,” etc. Those map to the /Fit* or /XYZ destination types behind the scenes.
If you export markups (XFDF), the link regions and targets are described there; when saved back to PDF, they’re standard /Link annotations.
For resilience, Revu often prefers named destinations for intra-document navigation so links don’t break if pages move.
Programmatic examples (language-agnostic idea + a few concrete snippets)
Conceptual steps (any language / library):
Open PDF; get target page object.
Define a destination:
explicit: PdfExplicitDestination.createXYZ(page, x, y, zoom) (library naming varies)
or create a named destination and register it in the Names tree.
On the source page, add a /Link annotation with /Rect and set its /A to /GoTo or /GoToR.
Java (iText 7):
PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
// Destination inside same doc
PdfExplicitDestination dest = PdfExplicitDestination.createXYZ(
pdf.getPage(5), 245, 612, 1.25f);
// Link annotation rectangle on source page
PdfLinkAnnotation link = new PdfLinkAnnotation(new Rectangle(100, 100, 200, 20));
link.setAction(PdfAction.createGoTo(dest));
pdf.getPage(1).addAnnotation(link);
// Cross-document link
PdfLinkAnnotation ext = new PdfLinkAnnotation(new Rectangle(100, 150, 200, 20));
ext.setAction(PdfAction.createGoToR("Sanborn_1911.pdf",
PdfExplicitDestination.createFit(pdf.getPage(12))));
pdf.getPage(1).addAnnotation(ext);
pdf.close();
Python (pypdf) – supports internal links; for external GoToR you may need to craft the action dict manually:
from pypdf import PdfReader, PdfWriter
from pypdf.generic import DictionaryObject, NameObject, ArrayObject, NumberObject, FloatObject, TextStringObject
reader = PdfReader("source.pdf")
writer = PdfWriter()
for p in reader.pages:
writer.add_page(p)
# Build a /GoToR action manually
action = DictionaryObject()
action.update({
NameObject("/S"): NameObject("/GoToR"),
NameObject("/F"): TextStringObject("Sanborn_1911.pdf"),
NameObject("/D"): ArrayObject([
# destination form: [page_index /XYZ left top zoom]
NumberObject(11), NameObject("/XYZ"),
FloatObject(245), FloatObject(612), FloatObject(1.25)
]),
NameObject("/NewWindow"): NameObject("true"),
})
# Add a link annotation on page 1
annot = DictionaryObject()
annot.update({
NameObject("/Type"): NameObject("/Annot"),
NameObject("/Subtype"): NameObject("/Link"),
NameObject("/Rect"): ArrayObject([NumberObject(100), NumberObject(100),
NumberObject(300), NumberObject(120)]),
NameObject("/A"): action
})
page = writer.pages[0]
if "/Annots" in page:
page["/Annots"].append(annot)
else:
page[NameObject("/Annots")] = ArrayObject([annot])
with open("out.pdf", "wb") as f:
writer.write(f)
JavaScript/TypeScript (pdf-lib) – internal links are straightforward; external GoToR may require low-level object tweaks similar to the Python example.
Practical tips for accuracy (esp. with historical scans)
Lock zoom with /XYZ for repeatable “view framing”; leave zoom null if you want viewer to keep the user’s current zoom.
Rotation gotchas: If a page has /Rotate 90, your clickable /Rect still uses the unrotated coordinate system; test after saving.
Crop vs media box: If you link to a coordinate near the page edge and later change the crop, your “place” can shift visually.
Prefer named destinations when you expect to reorder pages; let links point to names, and just update the name’s definition once.
Relative paths for /GoToR so your pack-and-go folders keep working across machines.
If you want to inspect what Revu wrote
Open the PDF with a tool like qpdf or pdftk (dump data) and search for:
/Subtype /Link
/A << /S /GoTo or /A << /S /GoToR
/D [ (explicit dest arrays)
/Names → /Dests (named destinations)
That will show you the exact coordinates, zoom, and file specs Bluebeam encoded.
If you tell me which direction you want to go (e.g., “I want to generate hundreds of cross-file hotspots from a CSV of coordinates”), I can sketch a small, ready-to-run script in your preferred language that emits
/GoToRlinks using the exact coordinate math you need.