Xamarin Forms UWP - Pdfjs viewer source file - webview

Inside the WebView I use PdfJs viewer (github link) to show Pdf document.
Is it possible to set a source file not from Assets folder?? For example:
var uriString = "ms-appx-web:///Assets/pdfjs/web/viewer.html?file=ms-appdata:///local/Test/test.pdf";
Control.Navigate(new Uri(uriString));
Expected result: viewer grabs file located in ApplicationData.Current.LocalFolder (inside it i created Test folder and a file in it) and shows it.
Thanks in advance!

Related

How to convert PDF web links to file open actions with python pdfrw library

I'm using pdfkit to convert html to pdf which works great, but the external links in the pdf are web links.
The pdf viewer that we are using does not recognize the pdf web links, but file open actions do work.
I've been trying to change the pdf link annotation from a web link to a file open action with the pdfrw library.
I tried to edit the pdf annotation with the following code, but it's not working.
annot.A.update(pdfrw.PdfDict( S='/Launch'))
annot.A.update(pdfrw.PdfDict( F={}))
annot.A.F.update(pdfrw.PdfDict( Type='/Filespec'))
annot.A.F.update(pdfrw.PdfDict( F='(part-1.pdf)'))
annot.A.pop('/Type')
annot.A.pop('/URI')
The link shows up in the new pdf, but there is no action or destination file associated with it.
So after a similar battle today...
you can't define S='/Launch' as string like that. You have to use:
annot.A.update(pdfrw.PdfDict( S=pdfrw.PdfName('Launch')))
Similarly with filespec etc. You may also need to take the () off the filename - as that seemed to break it, at least in Apple Preview.

IIS not including the PDF file in build

I got a requirement to show the one PDF file on button click. I added that document to the Content folder in the MVC project and added the URL to that button. When I click on the button the PDF opens fine in my local. But When I deploy it to the DEV server, getting 404 error. So I checked the Content folder in the web server, I can't find the PDF file I added. Do I have to change any IIS settings to include that PDF in the build?
Thanks
If your issue is the same as the one documented here you'll want to follow the instructions here under "Adding MIME Types to [IIS version]" to ensure that you have pdf enabled among the supported content types.

Web view UWP not loading files in the machine

can I open a html file on the C drive or on any location using the web view in UWP?
I am using the following code but it is not working:
Uri targeturi = new Uri("C:/Users/user/Pictures/Files/Forms/dac36cac-5d83-4fae-bf4f-112361b719ea/index.html");
browser.Navigate(targeturi);
In uwp files have limited access permission. By the default the app can only access the application install directory and data locations. Additional locations require special capabilities. More details about file access permission please reference this document.
You can gain access to files and folders on a removable device by calling the file picker (using FileOpenPicker and FolderPicker) and letting the user pick files and folders for your app to access. Learn how to use the file picker in Open files and folders with a picker.
According to your code snippet, you want to access the HTML file inside the picture folder. For accessing file in picture folder please reference Files and folders in the Music, Pictures, and Videos libraries. Pay attention on the Capabilities page, select the libraries that your app manages. So the correct way to open the file and show it in the WebView may as follows:
StorageFolder storageFolder = await KnownFolders.GetFolderForUserAsync(null /* current user */, KnownFolderId.PicturesLibrary);
StorageFile indexFile = await storageFolder.GetFileAsync("index.html");/*Change to your file path inside the picture folder*/
browser.NavigateToString(await FileIO.ReadTextAsync(indexFile));
You may find I used the NavigateToString method. The Navigate(Uri) method can not navigate to a file by path directly. To load uncompressed and unencrypted content from your app’s LocalFolder or TemporaryFolder data stores, use the Navigate method with a Uri that uses the `ms-appdata scheme, to HTML content in the app package using the ms-appx-web scheme. For example:
webView1.Navigate("ms-appx-web:///help/about.html");
More details please reference "Navigating to content" of WebView. And the scenario 5 of the official sample provide samples about navigating to file you can reference.

How to open a PDF file from pc in iframe?

Is this possible? Can I open a PDF file which stored in my computer in an iFrame?
Here's an example from my project:
<iframe style="width:960px;height:720px" src="..\..\3C9DED0628F44190ABF92D3C14F14A14-2-D.pdf"></iframe>
This code is shows PDF file from project folder. But I need a src like:
D:\SCANNEDDOCUMENTS\2\3C9DED0628F44190ABF92D3C14F14A14-2-D.pdf
This file is stored in my pc. Can I show this PDF file? And then I want to make some buttons for other PDF files which in same directory. Like in picture:
When I clicked one of them, the iframe's src will replace other file's path. But first my problem is I can't show a PDF file from local path in iframe. What should I do?

Cordova iOS: Load videos with downloaded html's and video files

I have the following issue:
I have an iOS Cordova Application.
The application download a zip file and decompress it in "cdvfile://localhost/persistent/content/myfolder" by ussing the following Cordova plugins: org.apache.cordova.file-transfer, org.apache.cordova.file and https://github.com/MobileChromeApps/zip.git
Inside the zip there is an "index.html" file with "video tags" on it.
I was able to succesfully load and execute the "index.html" file, but the video doesn't load.
I know that the video file was decompressed successfully because:
I check the file inside my iPad.
I embed the video in the index of the cordova app (not the downloaded one) in the following way and it works:
var videocontainer = document.getElementsByTagName('video')[0];
var videosource = document.getElementsByTagName('source')[0];
var newmp4 = cordova.file.documentsDirectory + 'content/myfolder/videos/myvideo.mp4';
videosource.setAttribute('src', newmp4);
videocontainer.load();
videocontainer.play();
But, the video is not loaded/played inside the downloaded HTML file. To understand what I'm doing, I have to develop an application that will be updated by downloading its contents from zips, and the contents includes pages with videos embeded on them. It works on PC and Android, but not in iOS.
I tried the following things:
Loading the page in "_self". The page is displayed but not the video.
Loading the page in an iframe. Same result.
Loading the page within an inAppBrowser (plugin). Same result.
Video tag with source src="videos/myvideo.mp4" (works in Web and Android). Same result.
Video tag with source src="./videos/myvideo.mp4" (works in Web and Android). Same result.
Video tag with source src= cordova.file.documentsDirectory + 'content/myfolder/videos/myvideo.mp4' (with JS, by passing the path in a query string, same path that works in the root index.html as I described before). Same result.
Video tag with source src= cordova.file.documentsDirectory + 'cdvfile://localhost/persistent/content/myfolder/videos/myvideo.mp4'. Same result.
All the combination of previous things. Same result....
Loading the downloaded resources in a DIV is not an option, because the resources (images, css, javascripts, audios, videos, etc.) are downloaded on other iOS device's folder: the app's Documents' folder (cdvfile://localhost/persistent/).
I thing I tried almost everything... Why is not trivial to play a video tag, inside an html, that are both in the app's Documents' folder???
:-(
EDIT 1: Cordova Version = 3.6.3
Solution Founded!!
In almost all the android and iOS examples, downloaded content is being executed from "cordova.file.documentsDirectory".
Then, when you link this content in a or (by using AJAX), everything works fine (CSS, images, links) but media tags ( and ).
Again, I dont know why, but almost all the examples downloads and unzip contents by using this path.
After several days being blocked with this issue (I found lots of forums where the devs have to modify all their projects by using plugins like Cordova Media, jaeger25 Html5Video, etc, etc), I tried by using the following path: "cordova.file.dataDirectory"
I download, unzip and execute the HTMLs from this path and everything works with no parsing/modifications to the HTML files (that in my case were thousands). 100% compability with and tags with relative sources' path in an IFRAME!!!!!!
I guess you code the video links into the index.html inside the zip you decompress on the device.
Those links need to get "updated" with some javascript parser, BEFORE you actually load or navigate to this page in your phonegap app.
If your example is caused in Android, you definetly need to include the HTML5 Video plugin here:
https://github.com/jaeger25/Html5Video
On iOS the tag will work for local files. But the links need to be absolute.
And the links will change if you recompile your app or reinstall it.
The files will be available, but the APP ID will have changed and the absolute path also.
Example of an iOS path:
/var/mobile/Applications/<application UUID>/Documents/path/to/file
Hope you solved your problem.

Resources