Do you have an issue with a specific file(s)? No
Can you reproduce using one of our samples or online demos? No
Are you using the WebViewer server? Yes
Does the issue only happen on certain browsers? No
Is your issue related to a front-end framework? No
Is your issue related to annotations? No
Please give a brief summary of your issue:
Cannot preload PDFs if the PDF files required URL parameters, e.g. access tokens
Please describe your issue and provide steps to reproduce it:
I have a PDF hosted on Firebase Storage. It requires an auth token in the URL parameters, e.g. http://server/myfile.pdf?alt=media&token={uuid}.
The Webviewer Server says this file is not formatted, because it assumes the file extension is “.pdf?alt=media&token={uuid}”.
Is there a way for the Webviewer Server to ignore the URL parameters?
The exact error message you are receiving from the WebViewer Server when it fails to load the PDF.
Does this occur issue occur without WebViewer Server?
3 . Any relevant logs from the WebViewer Server that might indicate where the issue is occurring.
A code snippet showing how you are initializing WebViewer and attempting to load the document.
In the meantime, as a potential workaround, you could using a server-side proxy that can handle the URL parameters and then serve the PDF.
java.lang.Exception: File format pdf?alt=media&token=dc3e9ef0-b009-44d5-921e-e26dbeb44004 is not supported. Refer to http://r.pdftron.com/fileformats for a full list of supported formats.
at com.pdftron.server.DocReference.<init>(DocReference.java:70)
at com.pdftron.blackboxservlet.PreloadURL.doGet(PreloadURL.java:34)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at com.pdftron.server.CorsFilter.handleSimpleCORS(CorsFilter.java:263)
at com.pdftron.server.CorsFilter.doFilter(CorsFilter.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at com.pdftron.server.DocModModifier.doFilter(DocModModifier.java:101)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at com.pdftron.server.BlackBoxAuthenticator.doFilter(BlackBoxAuthenticator.java:84)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1683)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1244)
at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:328)
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:468)
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:404)
at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:129)
at java.base/sun.nio.ch.Invoker$2.run(Invoker.java:221)
at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:840)
No, it does not. the Webviewer UI handles it just fine.
Here’s how we’d initializing things on the frontend:
return WebViewer(
{
path: "[redacted]",
licenseKey: "[redacted]",
// Only use the server for mobile devices
webviewerServerURL: isSmallDevice ? WEBVIEWER_SERVER : "",
fullAPI: true,
disabledElements: DISABLED_ELEMENTS,
preloadWorker: `${WebViewer.WorkerTypes.PDF}`,
disableLogs: IS_PROD,
} as WebViewerOptions,
container
)
And then eventually loading the document like this: