Opening PDF from web app

24 views (last 30 days)
Justin
Justin on 3 May 2023
Commented: Justin on 11 May 2023
Hi, I'm trying to let the user open a help file in PDF format in the Web App version of a tool.
In the Matlab app version I can just do web('UserGuide.pdf') and so long as the file is on the path it works. Or I can find Acrobat on the local machine and use system().
However, when I compile to Web App neither of those options work (and given how small the .ctf file is, it doesn't look like it saves non-Matlab files even if they are called by the app).
Any suggestions much appreciated. I don't really mind if it opens in browser or Acrobat.

Accepted Answer

Kojiro Saito
Kojiro Saito on 10 May 2023
web('xxx.pdf') works in compiled Web App, but you need to add the pdf in the "Files required for your app to run" panal by editing project (.prf) file.
In the Web App, web('xxx.pdf') will download the pdf file to the client not viewing in the Web browser. So, I would use uihtml and hyperlink (<a> tag).
After adding HTML component in the design view, adding the following startup function.
function startupFcn(app)
if isdeployed
app.HTML.HTMLSource = fullfile(ctfroot, mfilename, 'test.html');
else
app.HTML.HTMLSource = fullfile(pwd, 'test.html');
end
end
In the test.html file, write the following.
<html>
<a href='some.pdf' target="_blank">Link</a>
</html>
Then, adding pdf and html file in the "Files required for your app to run" panel.
  5 Comments
Kojiro Saito
Kojiro Saito on 11 May 2023
I think you're getting closer.
If additional files (test.html and xxx.pdf, in this case) are included with "Files required for your app to run" in the Web App Compiler or "mcc -a test.html -a xxx.pdf" command, the files are extracted in the ctfroot folder.
For example, in Windows and MATLAB Runtime is R2022b, pdfApp.ctf would be extracted in
C:\ProgramData\MathWorks\webapps\R2022b\USR\.appCache\mcrCache9.13\pdfApp0\
and this folder can be checked with ctfroot command.
if isdeployed
app.Label.Text = ctfroot;
end
Also, test.html and xxx.pdf files will be located in
C:\ProgramData\MathWorks\webapps\R2022b\USR\.appCache\mcrCache9.13\pdfApp0\pdfApp
and this folder can be checked with fullfile(ctfroot, mfilename) command because mfilename returns pdfApp if executed in pdfApp.ctf.
If the same ctf file will be uploaded, ctfroot will be changed to
C:\ProgramData\MathWorks\webapps\R2022b\USR\.appCache\mcrCache9.13\pdfApp1\
I guess the folder name would be "6 characters + number" (pdfApp0, pdfApp1, ..., pdfApp10,..) but ctfroot command knows the exact location.
That's why I use "app.HTML.HTMLSource = fullfile(ctfroot, mfilename, 'test.html')" command. You should check where test.html and xxx.pdf files are located in the server side and check the location of ctfroot and fullfile(ctfroot, mfilename).
Justin
Justin on 11 May 2023
OK, thanks, the issue was mfilename. Without input arguments it returns the classdef file name for the calling method, which is different to the app name. The folder with the PDF in takes the app name. Anyway, have hard coded that bit and it is working.
Now it opens the PDF in a new window so long as the user has their browser as the default for opening PDFs, otherwise it does the download thing.
Thanks again for your help.

Sign in to comment.

More Answers (1)

Praveen Reddy
Praveen Reddy on 10 May 2023
Edited: Praveen Reddy on 10 May 2023
Hi Justin,
I understand that you are trying to open pdf files from MATLAB app using ‘web()’ function and the same is not working when you compile it to Web App. The limitation to ‘web()’ function is that it does not support the text:// URL scheme when opening pages in the system browser or from a deployed application. If you are trying to deploy an application that calls web function using the MATLAB Compiler product, use the ‘-browser’ option to open all pages in the system browser.
Please refer to the following MATLAB documentation to know more about ‘-browser’ option in ‘web()’ function:
  1 Comment
Justin
Justin on 10 May 2023
Edited: Justin on 10 May 2023
Thanks, but the '-browser' option doesn't seem to change behaviour in deployed Web App, it still downloads rather than opens the PDF file.

Sign in to comment.

Categories

Find more on MATLAB Web App Server in Help Center and File Exchange

Tags

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!