m42e
November 20, 2022, 5:35am
1
Hi there,
I try to link to a tiddler containing an external pdf-file which should open on a specific page.
This would work fine with the embed tag, by appending ‘#page=’.
Is there any way, to pass information to a tiddler on opening? I couldn’t spot anything like that.
Thanks a lot.
You can embed the pdf with an object tag (or an iframe) :
Open pdf : <$edit-text field="pdf-url"/>
Open at page : <$edit-text field="pdf-page"/>
<object type="application/pdf"
data={{{ [{!!pdf-url}] [[#page=]] [{!!pdf-page}] +[join[]]}}}
width="100%"
style="height:calc(100vh - 60px)">
</object>
https://demos.tiddlyhost.com/#Open%20a%20pdf%20at%20a%20specific%20page
EDIT: My bad, I didn’t see that you wanted a link. This is the same principle but with an a tag :
<a href={{{ [{!!pdf-url}] [[#page=]] [{!!pdf-page}] +[join[]]}}}>link to the pdf</a>
You can also create a macro, in a tiddler with the tag $:/tags/Macro/View :
\define pdf-link(url,page,text:"link to the pdf")
<a href="$url$#page=$page$">$text$</a>
\end
Then you can insert a link to a pdf like this
<<pdf-link "https://www.scoilnet.ie/uploads/resources/35767/35535.pdf" "3">>
m42e
November 20, 2022, 2:01pm
3
@telumire Thanks.
I think the macro helped. Even so it wasn’t exactly what I was looking for.
But seems I haven’t been clear enough.
I have a tiddler with the _canonical_uri. If I link to it in WikiText normally, then it opens a tiddler with the pdf file embedded.
I was looking for a possibility to set the page this tiddler opens the pdf. Like the attributes in the image tags.
The nearest I got there was using a separate tiddler, which has two fields:
pdf and page and the following content:
\define pdfpage() $(pdf)$#page=$(page)$
<$set name="pdf" filter="[get[pdf]get[_canonical_uri]]">
<$set name="page" value={{!!page}}>
<embed src=<<pdfpage>> class="w-100" style="height: 600px;"/>
</$set>
</$set>
And a button on other toddlers to set the page and open the tiddler.
But I still need an additional tiddler, that was something I would like to avoid. On the other hand it is something I could life with.
You could edit the _canonical_uri url with a button with the appearance of a link that open it, e.g :
In a tiddler with the tag $:/tags/Macro/View
\define open-pdf(tiddler,page)
<$tiddler tiddler=<<__tiddler__>>>
<$button class="tc-tiddlylink tc-tiddlylink-resolves" tag="a" set="!!_canonical_uri" setTo={{{ [{!!_canonical_uri}split[#page=]first[]] [[#page=]] [<__page__>] +[join[]] }}} actions="<$action-navigate/>">
Open "{{!!title}}" to page $page$
</$button>
</$tiddler>
\end
<<open-pdf tiddler:"pdf" page:"4">>
Demo
If you want your pdfs to reset at startup then you could add a startup action. In a tiddler with the tag $:/tags/StartupAction :
<$list filter="[type[application/pdf]search:_canonical_uri[#page=]]">
<$action-setfield _canonical_uri={{{ [{!!_canonical_uri}split[#page=]first[]] }}}/>
</$list>
Make a backup of your wiki before trying this !
m42e
November 20, 2022, 6:10pm
5
Thank you again, @telumire . Works like charm!
And I have my wiki in git repository which automatically commits and syncs my changes
Whan changed the page number, TW shows nothing. Is this a bug?
TiddlyWiki 5.3.6
Edge 131
Windows 11
NOTE: In the shared demo, changing the page number does not refresh the PDF and navigate to requested page.
I tried it on the demo website and it works fine, but on the latest tiddlywiki the iframe doesn’t get refreshed when the canonical uri field change:
share
IMO this is a tiddlywiki bug (since the demo still works)