< iOS samples

WebViewerConvertTest - Swift

These samples shows how to use integrate PDFNet WebViewer into any HTML5, Silverlight, or Flash web application. The sample is using 'pdftron.PDF.Convert.ToXod()' to convert/stream PDF, XPS, MS Office, RTF, HTML and other document formats to WebViewer 'pdftron.PDF.Convert.ToXod()' is an optional Add-On to the Core SDK and is part of PDFNet WebViewer Publishing Platform.

//---------------------------------------------------------------------------------------
// Copyright (c) 2001-2017 by PDFTron Systems Inc. All Rights Reserved.
// Consult legal.txt regarding legal and license information.
//---------------------------------------------------------------------------------------

import PDFNet
import Foundation

//---------------------------------------------------------------------------------------
// The following sample illustrates how to convert PDF, XPS, image, MS Office, and
// other image document formats to XOD format.
//
// Certain file formats such as PDF, generic XPS, EMF, and raster image formats can
// be directly converted to XOD. Other formats such as MS Office
// (Word, Excel, Publisher, Powerpoint, etc) can be directly converted via interop.
// These types of conversions guarantee optimal output, while preserving important
// information such as document metadata, intra document links and hyper-links,
// bookmarks etc.
//
// In case there is no direct conversion available, PDFNet can still convert from
// any printable document to XOD using a virtual printer driver. To check
// if a virtual printer is required use Convert::RequiresPrinter(filename). In this
// case the installing application must be run as administrator. The manifest for this
// sample specifies appropriate the UAC elevation. The administrator privileges are
// not required for direct or interop conversions.
//
// Please note that PDFNet Publisher (i.e. 'pdftron.PDF.Convert.ToXod') is an
// optionally licensable add-on to PDFNet Core SDK. For details, please see
// http://www.pdftron.com/webviewer/licensing.html.
//---------------------------------------------------------------------------------------

func runWebViewerConvertTest() -> Int {
    return autoreleasepool {
        var err: Int = 0
        
        
        do {
            try PTPDFNet.catchException {
                // Sample 1:
                // Directly convert from PDF to XOD.
                PTConvert.toXod(Bundle.main.path(forResource: "newsletter", ofType: "pdf"), out_filename: URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]).appendingPathComponent("from_pdf.xod").path)
                
                // Sample 2:
                // Directly convert from generic XPS to XOD.
                PTConvert.toXod(Bundle.main.path(forResource: "simple-xps", ofType: "xps"), out_filename: URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]).appendingPathComponent("from_xps.xod").path)
                
                // Sample 3:
                // Convert from MS Office (does not require printer driver for Office 2007+)
                // and other document formats to XOD.
                BulkConvertRandomFilesToXod()
            }
        } catch let e as NSError {
            print("\(e)")
            err = 1
        }
        
        print("Done.")
        return err
    }
}

func BulkConvertRandomFilesToXod() {
    let testFiles = ["butterfly.png", "numbered.pdf", "dice.jpg", "simple-xps.xps"]
    
    let inputPathURL: URL! = Bundle.main.resourceURL
    let outputPathURL = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
    
    var err: Int = 0
    for testFile: String in testFiles {
        do {
            try PTPDFNet.catchException {
                let inputFilePath: String = inputPathURL.appendingPathComponent(testFile).path
                let outputFilePath: String = outputPathURL.appendingPathComponent(testFile).appendingPathExtension("xod").path

                PTConvert.toXod(inputFilePath, out_filename: outputFilePath)
                print("Converted file: \(inputFilePath)\n            to: \(outputFilePath)")
            }
        } catch let e as NSError {
            print("Unable to convert file \(testFile)")
            print("\(e)")
            err = 1
        }
    }
    
    if err != 0 {
        print("ConvertFile failed")
    } else {
        print("ConvertFile succeeded")
    }
}