2015-11-01 2 views
1

Возможно ли создать файл PDF с помощью быстрой игровой площадки?
Я пишу приложение, которое автоматически генерирует один из множества выбранных объектов, но быстро становится больно проходить процесс, чтобы проверить каждое изменение, которое я делаю.Создание PDF в Swift Playground

Я не уверен, как игровая площадка работает с документами или что-то еще, поскольку я только когда-либо использовал их для документации.

Возможно ли это?

EDIT:

Так что мне удалось получить PDF для создания с детской площадки с помощью каталога NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)

Я положил веб-просмотра в игровую площадку, чтобы попытаться просмотреть его, но не результат. Есть ли другой способ в реальном времени на детской площадке?

Веб вид загружается запрос с правильной URL, как я использовал тот же URL, чтобы перейти к нему в Finder, но это просто показывает пустую страницу просматриваемой в Playground, несмотря на образа, появляющихся в формате PDF в Finder

файл площадка

import UIKit 

// Properties 
var documentDirectories : NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
var documentDirectory : String = documentDirectories[0] as! String 
var pdfFileName : String = "bill.pdf" 
var pdfPathWithFileName : String = (documentDirectory as NSString).stringByAppendingPathComponent(pdfFileName) 
let pageSize : CGSize = CGSize(width: 200, height: 1000) 

// Graphics Context 
UIGraphicsBeginPDFContextToFile(pdfPathWithFileName, CGRectZero, nil) 
UIGraphicsBeginPDFPageWithInfo(CGRect(x: 0, y: 0, width: 850, height: 1000), nil) 
let context : CGContextRef = UIGraphicsGetCurrentContext()! 
let rect : CGRect = CGRect(x: 0, y: 0, width: pageSize.width, height: pageSize.height) 

// Fill background 
CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor) 
CGContextFillRect(context, rect) 

// Products 
CGContextSetFillColorWithColor(context, UIColor.blackColor().CGColor) 

for var i = 0; i < 10; i++ { 
    let rect : CGRect = CGRect(x: 100, y: (i * 50), width: 300, height: 50) 
    let productName : NSString = "ProductNo\(i)" 
    productName.drawWithRect(rect, options: .UsesFontLeading, attributes: nil, context: NSStringDrawingContext.init()) 

    let imageRect : CGRect = CGRect(x: 20, y: (i*50), width: 50, height: 50) 
    let image = UIImage(named: "testImage.png") 
    image?.drawInRect(imageRect) 
} 


// End PDF Context 
UIGraphicsEndPDFContext() 


// PDF Web Request 
let pdfURL = NSURL(string: pdfPathWithFileName) 
let request = NSURLRequest(URL: pdfURL!) 


// Web View 
let webSize = CGRect(x: 0, y: 0, width: pageSize.width, height: pageSize.height) 
let webView = UIWebView(frame: webSize) 
webView.loadRequest(request) 

let scroll : UIScrollView = webView.scrollView 

let zoom = webView.bounds.size.width/scroll.contentSize.width 
scroll.setZoomScale(zoom, animated: true) 
+0

Спасибо Эрик. См. Обновленный вопрос – Sawyer05

+0

Добро пожаловать. Помогите нам помочь вам, указав соответствующий код. Люди могут помочь, но на данный момент вопрос немного смутный ИМО. – Moritz

+0

Предполагалось вставить в файл игровой площадки раньше, сделав это сейчас! – Sawyer05

ответ

0

Если активировать меню:

View> Debug Area> Show Debug Area

, то вы можете увидеть в консоли:

Не удалось получить расширение песочницу для ...

Playgrounds песочницу, вы не можете использовать их для работы с файлами, которые являются внешними по отношению к Собственные ресурсы игровой площадки и NSSearchPathForDirectoriesInDomains в этом случае бесполезны.

Изображения (или любые файлы, которые вы хотите использовать) должны находиться в Resources папке Playground для вас, чтобы иметь возможность использовать их с методами, как UIImage(named:) или NSBundle.mainBundle().URLForResource.

При активации меню:

View> Show> навигаторы Навигатор проекта

Вы сможете добавить свои изображения и файлы в папку на детской площадке в Resources.

Примечание: эта папка «Ресурсы» на самом деле является ссылкой на папку внутри уникальной папки кеша Playground. Вы не должны пытаться использовать свой URL-адрес напрямую, а вместо него использовать NSBundle (или еще).

Смежные вопросы