Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sgr-ksmt/PDFGenerator
A simple generator of PDF written in Swift.
https://github.com/sgr-ksmt/PDFGenerator
apple-swift carthage cocoapods generator ios pdf swift swift-library tool
Last synced: 3 days ago
JSON representation
A simple generator of PDF written in Swift.
- Host: GitHub
- URL: https://github.com/sgr-ksmt/PDFGenerator
- Owner: sgr-ksmt
- License: mit
- Created: 2016-02-04T13:00:50.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2020-10-27T14:30:02.000Z (about 4 years ago)
- Last Synced: 2024-10-13T14:43:46.554Z (about 2 months ago)
- Topics: apple-swift, carthage, cocoapods, generator, ios, pdf, swift, swift-library, tool
- Language: Swift
- Homepage:
- Size: 917 KB
- Stars: 757
- Watchers: 29
- Forks: 110
- Open Issues: 50
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - PDFGenerator - A simple Generator of PDF in Swift. Generate PDF from view(s) or image(s). (Media / PDF)
- awesome-swift - PDFGenerator - A simple Generator of PDF. Generate PDF from view(s) or image(s). (Libs / PDF)
- awesome-swift - PDFGenerator - A simple Generator of PDF. Generate PDF from view(s) or image(s). (Libs / PDF)
- awesome-pdf - PDFGenerator - Simple PDF generator. (Libraries / Swift)
- awesome-pdf - PDFGenerator
- awesome-ios-star - PDFGenerator - A simple Generator of PDF in Swift. Generate PDF from view(s) or image(s). (Media / PDF)
- fucking-awesome-swift - PDFGenerator - A simple Generator of PDF. Generate PDF from view(s) or image(s). (Libs / PDF)
- awesome-swift-cn - PDFGenerator - A simple Generator of PDF in Swift. Generate PDF from view(s) or image(s). (Libs / Utility)
- awesome-swift - PDFGenerator - A simple generator of PDF written in Swift. ` 📝 a year ago ` (PDF [🔝](#readme))
README
Features |
Requirements |
Installation |
Usage |
Communication |
LICENSE# PDFGenerator
[![Build Status](https://travis-ci.org/sgr-ksmt/PDFGenerator.svg?branch=master)](https://travis-ci.org/sgr-ksmt/PDFGenerator)
[![GitHub release](https://img.shields.io/github/release/sgr-ksmt/PDFGenerator.svg)](https://github.com/sgr-ksmt/PDFGenerator/releases)
[![codecov](https://codecov.io/gh/sgr-ksmt/PDFGenerator/branch/master/graph/badge.svg)](https://codecov.io/gh/sgr-ksmt/PDFGenerator)
[![Language](https://img.shields.io/badge/language-Swift%204.2-orange.svg)]()
[![Carthage](https://img.shields.io/badge/Carthage-✓-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![CocoaPods](https://img.shields.io/badge/Cocoa%20Pods-✓-4BC51D.svg?style=flat)](https://cocoapods.org/pods/PDFGenerator)
[![CocoaPodsDL](https://img.shields.io/cocoapods/dt/PDFGenerator.svg)]()
[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/matteocrippa/awesome-swift#pdf)
[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)`PDFGenerator` is a simple PDF generator that generates with `UIView`, `UIImage`, ...etc .
```swift
do {
let page: [PDFPage] = [
.whitePage(CGSize(width: 200.0, height: 100.0)),
.image(image1)
.image(image2)
.imagePath(lastPageImagePath)
.whitePage(CGSize(width: 200.0, height: 100.0))
]
let path = NSTemporaryDirectory().appending("sample1.pdf")
try PDFGenerator.generate(page, to: path, password: "123456")
} catch let error {
print(error)
}
```## Features
- **Swift 5 is ready** :pray:
- Multiple pages support.
- Also generate PDF with `image path`, `image binary`, `image ref (CGImage)`
- Good memory management.
- UIScrollView support : If view is `UIScrollView`, `UITableView`, `UICollectionView`, `UIWebView`, drawn whole content.
- Outputs as binary(`Data`) or writes to Disk(in given file path) directly.
- Corresponding to Error-Handling. Strange PDF has never been generated!!.
- DPI support. : Default dpi is 72.
- Password protection support.## Requirements
- iOS 9.0+
- Xcode 11+
- Swift 5.1## Installation
### Carthage
- Add the following to your *Cartfile*:
```bash
github "sgr-ksmt/PDFGenerator" ~> 3.1
```- Then run command:
```bash
$ carthage update
```- Add the framework as described.
Details: [Carthage Readme](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application)#### CocoaPods
**PDFGenerator** is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:```ruby
pod 'PDFGenerator', '~> 3.1'
```and run `pod install`
## Usage
### Generate from view(s) or image(s)
- UIView → PDF```swift
func generatePDF() {
let v1 = UIScrollView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
let v3 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
v1.backgroundColor = .red
v1.contentSize = CGSize(width: 100.0, height: 200.0)
v2.backgroundColor = .green
v3.backgroundColor = .bluelet dst = URL(fileURLWithPath: NSTemporaryDirectory().appending("sample1.pdf"))
// outputs as Data
do {
let data = try PDFGenerator.generated(by: [v1, v2, v3])
try data.write(to: dst, options: .atomic)
} catch (let error) {
print(error)
}// writes to Disk directly.
do {
try PDFGenerator.generate([v1, v2, v3], to: dst)
} catch (let error) {
print(error)
}
}
````Also PDF can generate from image(s), image path(s) same as example.`
### Generate from PDFPage object
- (UIVIew or UIImage) → PDF
Use `PDFPage`.
```swift
public enum PDFPage {
case whitePage(CGSize) // = A white view
case view(UIView)
case image(UIImage)
case imagePath(String)
case binary(Data)
case imageRef(CGImage)
}
``````swift
func generatePDF() {
let v1 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
v1.backgroundColor = .red
let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
v2.backgroundColor = .greenlet page1 = PDFPage.View(v1)
let page2 = PDFPage.View(v2)
let page3 = PDFPage.WhitePage(CGSizeMake(200, 100))
let page4 = PDFPage.Image(UIImage(contentsOfFile: "path/to/image1.png")!)
let page5 = PDFPage.ImagePath("path/to/image2.png")
let pages = [page1, page2, page3, page4, page5]let dst = NSTemporaryDirectory().appending("sample1.pdf")
do {
try PDFGenerator.generate(pages, to: dst)
} catch (let e) {
print(e)
}
}
```### Generate custom dpi PDF
```swift
// generate dpi300 PDF (default: 72dpi)
func generatePDF() {
let v1 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
v1.backgroundColor = .red
let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
v2.backgroundColor = .greenlet page1 = PDFPage.View(v1)
let page2 = PDFPage.View(v2)
let pages = [page1, page2]let dst = NSTemporaryDirectory().appending("sample1.pdf")
do {
try PDFGenerator.generate(pages, to: dst, dpi: .dpi_300)
} catch (let e) {
print(e)
}
}
```### Password protection
```swift
// generate PDF with password: 123456
func generatePDF() {
let v1 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
v1.backgroundColor = .red
let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
v2.backgroundColor = .greenlet page1 = PDFPage.view(v1)
let page2 = PDFPage.view(v2)
let pages = [page1, page2]let dst = NSTemporaryDirectory().appending("sample1.pdf")
do {
try PDFGenerator.generate(pages, to: dst, password: "123456")
// or use PDFPassword model
try PDFGenerator.generate(pages, to: dst, password: PDFPassword("123456"))
// or use PDFPassword model and set user/owner password
try PDFGenerator.generate(pages, to: dst, password: PDFPassword(user: "123456", owner: "abcdef"))
} catch let error {
print(error)
}
}
```## Communication
- If you found a bug, please open an issue. :bow:
- Also, if you have a feature request, please open an issue. :thumbsup:
- If you want to contribute, submit a pull request.:muscle:## License
**PDFGenerator** is under MIT license. See the [LICENSE](LICENSE) file for more info.