Swift操场中的PDF生成

Swift操场中的PDF生成,swift,pdf-generation,swift-playground,Swift,Pdf Generation,Swift Playground,是否可以使用swift游乐场创建PDF文件? 我正在编写一个应用程序,它可以从一系列选定的对象中自动生成一个对象,但要检查我所做的每一个更改,很快就会变得很痛苦 我不确定Playway在文档目录或其他方面是如何工作的,因为我只在文档中使用过它 有可能这样做吗 编辑: 因此,我通过使用目录NSSearchPathForDirectoriesInDomains(.DocumentDirectory、.UserDomainMask,true) 我在操场上放了一个网络视图,试图预览它,但没有结果。在操场

是否可以使用swift游乐场创建PDF文件?
我正在编写一个应用程序,它可以从一系列选定的对象中自动生成一个对象,但要检查我所做的每一个更改,很快就会变得很痛苦

我不确定Playway在文档目录或其他方面是如何工作的,因为我只在文档中使用过它

有可能这样做吗

编辑:

因此,我通过使用目录
NSSearchPathForDirectoriesInDomains(.DocumentDirectory、.UserDomainMask,true)

我在操场上放了一个网络视图,试图预览它,但没有结果。在操场上还有其他实时方式吗

web视图正在加载具有正确URL的请求,因为我在Finder中使用了相同的URL导航到它,但它只显示了一个空白页面,尽管Finder中的PDF中显示了图像,但正在操场中预览

操场档案

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)
导入UIKit
//性质
var documentDirectories:NSArray=NSSearchPathForDirectoriesInDomains(.DocumentDirectory、.UserDomainMask,true)
var documentDirectory:String=documentDirectories[0]as!一串
var pdfFileName:String=“bill.pdf”
var pdfPathWithFileName:String=(documentDirectory作为NSString)。stringByAppendingPathComponent(PDFFielName)
让pageSize:CGSize=CGSize(宽:200,高:1000)
//图形上下文
UIGraphicsBeginPDFContextToFile(pdfPathWithFileName,CGRectZero,nil)
UIGraphicsBeginPDFPageWithInfo(CGRect(x:0,y:0,宽度:850,高度:1000),无)
让上下文:CGContextRef=UIGraphicsGetCurrentContext()!
设rect:CGRect=CGRect(x:0,y:0,width:pageSize.width,height:pageSize.height)
//填充背景
CGContextSetFillColorWithColor(上下文,UIColor.whiteColor().CGColor)
CGContextFillRect(上下文,rect)
//产品
CGContextSetFillColorWithColor(上下文,UIColor.blackColor().CGColor)
对于var i=0;i<10;i++{
设rect:CGRect=CGRect(x:100,y:(i*50),宽:300,高:50)
让productName:NSString=“ProductNo\(i)”
productName.drawWithRect(rect,选项:.UseSFuntleding,属性:nil,上下文:NSStringDrawingContext.init())
设imageRect:CGRect=CGRect(x:20,y:(i*50),宽:50,高:50)
让image=UIImage(名为:“testImage.png”)
图像?.drawInRect(图像Rect)
}
//结束PDF上下文
UIGraphicsSendPdfContext()
//PDF网页请求
让pdfURL=NSURL(字符串:pdfPathWithFileName)
let request=NSURLRequest(URL:pdfURL!)
//网络视图
设webSize=CGRect(x:0,y:0,宽度:pageSize.width,高度:pageSize.height)
让webView=UIWebView(框架:webSize)
webView.loadRequest(请求)
让我们滚动:UIScrollView=webView.scrollView
让zoom=webView.bounds.size.width/scroll.contentSize.width
scroll.setZoomScale(缩放,动画:true)

如果激活菜单:

视图>调试区域>显示调试区域

然后您可以在控制台中看到:

无法获取的沙盒扩展名

操场是沙箱,您不能使用它们来操作操场自身资源外部的文件,在这种情况下,
NSSearchPathForDirectoriesInDomains
非常无用

图像(或您想要使用的任何文件)必须位于游乐场的
Resources
文件夹中,这样您才能将它们与
UIImage(命名:)
NSBundle.mainBundle().URLForResource
等方法一起使用

如果激活菜单:

视图>导航器>显示项目导航器

您将能够将图像和文件添加到游乐场的
Resources
文件夹中


注意:此资源文件夹实际上是指向游乐场自动生成的唯一缓存文件夹中的文件夹的链接。您不应该尝试直接使用其URL,而应该通过NSBundle(或其他方式)进行操作。

如果激活菜单:

视图>调试区域>显示调试区域

然后您可以在控制台中看到:

无法获取的沙盒扩展名

操场是沙箱,您不能使用它们来操作操场自身资源外部的文件,在这种情况下,
NSSearchPathForDirectoriesInDomains
非常无用

图像(或您想要使用的任何文件)必须位于游乐场的
Resources
文件夹中,这样您才能将它们与
UIImage(命名:)
NSBundle.mainBundle().URLForResource
等方法一起使用

如果激活菜单:

视图>导航器>显示项目导航器

您将能够将图像和文件添加到游乐场的
Resources
文件夹中


注意:此资源文件夹实际上是指向游乐场自动生成的唯一缓存文件夹中的文件夹的链接。你不应该直接使用它的URL,而应该通过NSBundle(或其他方式)进行操作。

我不确定这是否是你想要的,但以下是我如何将PDF文件导入Swift Playplace for iPad的方法:

首先,制作一个
图像
扩展(灵感来源于Paul Hudson的帖子:):

导入快捷界面

//我不确定这是否是您想要的,但以下是我如何将PDF文件导入Swift Playerd for iPad:

首先,制作一个
图像
扩展(灵感来源于Paul Hudson的帖子:):

导入快捷界面

//谢谢你,埃里克。见更新的问题,不客气。帮助我们通过显示一些相关代码来帮助您。人们可能会提供帮助,但现在这个问题在我看来有点模糊。以前是要粘贴在操场文件中的,现在就做吧!谢谢你,埃里克。见更新的问题,不客气。帮助我们通过显示一些相关代码来帮助您。人们可能会提供帮助,但现在这个问题在我看来有点模糊。以前是要粘贴在操场文件中的,现在就做吧!