C# pdf generation and loading on iOS help

Hello,

I was trying to figure out how to generate and display a pdf in a Unity app.
I would like the app, and pdf to be available for iOS, Android and web app.
Following this tutorial I was able to generate a pdf file and store in the app main folder within the simulator.

http://www.devindia.biz/unity-pdf-generation-with-sharppdf-plugin/

Unfortunately when I try to open the pdf inside the app using

    Application.OpenURL("FILE://" + path);

It did not work.

Then I was able to partially solve the problem:

I was able to generate the .pdf file in Unity Editor and in Standalone application on OSX. I realized I had trouble on storing/loading files in Unity.

   // this is working on Editor. Application.dataPath are reached by the application and files are stored in Assets/StreamingAssets folder under project in Editor   

          #if UNITY_EDITOR || UNITY_EDITOR_64
            myDoc.createPDF(Application.dataPath + "/StreamingAssets/" + attacName);
  
          
            myTable = null;
  
            #endif

    // This is working on Mac standalone application. The file is correctly saved under Application.app/Contents folder

      #if UNITY_STANDALONE
          
        myDoc.createPDF(Application.dataPath + "/" + attacName);
        myTable = null;
            #endif

The code to retrieve and open the file:

    public void openPdf() {
        string path;

            // tested working on mac
  
            #if UNITY_EDITOR || UNITY_EDITOR_64
  
          
            path = "file:" +Application.dataPath + "/StreamingAssets/" + attacName;
  
  
            #endif
  
            #if UNITY_STANDALONE
          
            path = "file:" +Application.dataPath + "/" + attacName;
          
            #endif
  
            Application.OpenURL(path);
            Debug.Log ("Button Clicked");
  
        }

So far everything works perfectly.

The pain comes with ios.

I was able to generate a pdf file with the above code in Application.persistentDataPath and getting it back from iTunes (to verify it was created) enabling UIFileSharingEnabled under info.plist. Here’s the code:

    #if UNITY_IOS
          myDoc.createPDF(Application.persistentDataPath + "/" + attacName);
         myTable = null;
        #endif

The trouble is when I try to Application.OpenUrl(path). It seems that c# code is blind to Application.persistentDataPath. Which by the way is /var/mobile/Containers/Data/Application/“ApplicationName”/Documents/“pdfName”.pdf using

    path = "file://" + Application.persistentDataPath + "/" + attacName;
        Application.OpenURL(path);

I tried also to save the file in StreamingAssets folder but Xcode didn’t like it:

UnauthorizedAccessException: Access to the path “/private/var/mobile/Containers/Bundle/Application/F105683E-B2EA-4B0C-81B7-61302C58D56C/PdfReader.app/Data/newPDF.pdf” is denied.
at Mono.Security.Cryptography.RSAManaged.GenerateKeyPair () [0x00000] in :0
at System.IO.FileStream…ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in :0
at System.IO.FileStream…ctor (System.String path, FileMode mode) [0x00000] in :0
at sharpPDF.pdfDocument.createPDF (System.String outputFile) [0x00000] in :0
at simplepdf+c__Iterator1.MoveNext () [0x00000] in :0
(Filename: currently not available on il2cpp Line: -1)

I then decided to get this wrapper

but it can only copy already formatted pdf file from StreamingAssets folder to /Raw folder on iOS device.

I am thinking I have to write my own wrapper to load data from Application.persistentDataPath on iOS, have you got any suggestion to start with?

Thank you again.

there are some cool tools in the forum editor. If you would use them your post would be much more readable.

please edit your post… I will not read it like this.

Sorry about that. I’ve edited the post, check it out.

Hi,
I’m struggling with the same issue on IOS. Did you find a soluton?