An open API service indexing awesome lists of open source software.

https://github.com/zenika/goru

Goru - the perfect looser to transform your pdf
https://github.com/zenika/goru

go golang pdf pdf-manipulation

Last synced: 6 months ago
JSON representation

Goru - the perfect looser to transform your pdf

Awesome Lists containing this project

README

          

# Goru

## Naming

Oru is the root of "Origami". Goru is the concatenation of `Go`+`oru`

This library aims to help people with pdf transformations like rotation, ordering...

## Run in docker
```
docker run -d -p 8080:8080 zenika/goru
```

## Installation
Link the project in your `$GOPATH` :
```
mkdir -p $GOPATH/src/github.com/Zenika
ln -s $(pwd) $GOPATH/src/github.com/Zenika/goru
```

As a prerequisite for managing dependencies, install `govendor` :
```
go get -u github.com/kardianos/govendor
```

Fetch go dependencies :
```
cd $GOPATH/src/github.com/Zenika/goru
govendor sync
```

## Build
```
cd $GOPATH/src/github.com/Zenika/goru
go build
```

## Run
Build then launch server :
```
./goru server
```

Upload new files with `PUT` requests on `/document/:file/content` (`file` without `.pdf` suffix) with content type `application/pdf`.

Download a file with a `GET` request on `/document/:file/content` (`file` without `.pdf` suffix).

Modify a file with a `POST` request on `/document/:file/edit` (`file` without `.pdf` suffix) with actions to perform.

Example :
```
[
{
"action": "LEFT_ROTATE_PAGE",
"page": 1
},
{
"action": "RIGHT_ROTATE_PAGE",
"page": 2
},
{
"action": "LEFT_ROTATE_PAGE",
"page": 3
},
{
"action": "LEFT_ROTATE_PAGE",
"page": 3
},
{
"action": "DELETE_PAGE",
"page": 4
},
{
"action": "MOVE_PAGE",
"page": 53,
"target": 1
}
]
```

WARNING ! The PDF file gets modified in place without backup !

## Run in CLI mode
Download a PDF to manipulate :
```
curl http://www.syntec.fr/fichiers/Annexes/20130719184036_Convention_Syntec_Annexe_06.pdf -o syntec.pdf
```

### Examples
Left rotate a page :
```
./goru left-rotate-page syntec.pdf 1 test.pdf
```

Delete a page :
```
./goru delete-page syntec.pdf 2 test.pdf
```

Move a page :
```
./goru move-page syntec.pdf 54 1 test.pdf
```