locally hosted web application that allows you to perform various operations on PDF files
Go to file
2023-10-22 16:33:45 +02:00
.github Update pull_request_template.md 2023-10-08 19:07:08 +01:00
.idea Fixes issue. 2023-10-14 00:03:08 +03:00
chart/stirling-pdf Add helm chart 2023-09-20 10:07:11 +02:00
docs Metadata editting and local only JS and pdf to image change and format pages (#44) 2023-02-11 14:27:15 +00:00
gradle/wrapper
images redact allow colors, bug fixes 2023-08-30 22:52:38 +01:00
public implemented new shared-traverser on browser 2023-10-22 01:11:17 +02:00
routes/api implemented new shared-traverser on browser 2023-10-22 01:11:17 +02:00
scripts Removed numpy library from blank page py script 2023-09-29 16:00:22 -04:00
src/main Removes commas in multiple dots with text. 2023-10-15 19:10:30 +03:00
.gitattributes Update .gitattributes 2023-02-26 21:49:29 +00:00
.gitignore Merge remote-tracking branch 'stirling-pdf-rewrite/main' into stirling-pdf-rewrite 2023-10-22 16:33:45 +02:00
build.gradle Merge branch 'main' into dependabot/gradle/org.springdoc-springdoc-openapi-starter-webmvc-ui-2.2.0 2023-10-11 21:04:36 +01:00
CNAME Create CNAME 2023-04-22 13:19:30 +01:00
CONTRIBUTE.md Updated CONTRIBUTE.md 2023-10-22 01:18:04 +02:00
Dockerfile Update Dockerfile remove PUID 2023-09-14 21:07:39 +01:00
Dockerfile-lite updates 2023-09-29 23:58:37 +01:00
Dockerfile-ultra-lite security 2023-09-04 18:42:22 +01:00
DockerfileBase html and url to pdf init 2023-07-22 16:57:40 +01:00
Endpoint-groups.md docs 2023-08-06 22:14:37 +01:00
functions.js implemented new shared-traverser on browser 2023-10-22 01:11:17 +02:00
gradlew
gradlew.bat
HowToAddNewLanguage.md docs 2023-09-14 13:32:49 +01:00
HowToUseOCR.md Update HowToUseOCR.md 2023-07-10 13:49:58 +02:00
index.js sync & async api 2023-10-19 19:46:23 +02:00
Jenkinsfile Add files via upload 2023-01-28 10:00:32 +00:00
lauch4jConfig.xml Upload jar and .exe to release 2023-06-10 15:05:38 +01:00
LICENSE Update LICENSE 2023-05-20 21:01:33 +01:00
LocalRunGuide.md Rename app to Stirling-PDF not S-pdf 2023-06-10 18:04:06 +01:00
package-lock.json Stream Zip & Fixed Split in Node 2023-10-20 02:10:03 +02:00
package.json Stream Zip & Fixed Split in Node 2023-10-20 02:10:03 +02:00
README.md Formatted README.md 2023-10-22 01:21:10 +02:00
settings.gradle Rename app to Stirling-PDF not S-pdf 2023-06-10 18:04:06 +01:00
Version-groups.md docs 2023-08-06 22:14:37 +01:00

StirlingPDF rewrite

This is the development repository for the new StirlingPDF backend. With the power of JS, WASM & GO this will provide almost all functionality SPDF can do currently directly on the client. For automation purposes this will still provide an API to automate your workflows.

Try the new API!

Run in Postman

Understanding Workflows

Workflows define how to apply operations to a PDF, including their order and relations with eachother.

Workflows can be created via the web-ui and then exported or, if you want to brag a bit, you can create the JSON object yourself.

Basics

To create your own, you have to understand a few key features first. You can also look at more examples our github repository.

{
  "outputOptions": {
    "zip": false
  },
  "operations": [
    {
      "type": "extract",
      "values": {
        "pagesToExtractArray": [0, 2]
      },
      "operations": []
    }
  ]
}

The workflow above will extract the first (p[0]) and third (p[2]) page of the document.

You can also nest workflows like this:

{
  "outputOptions": {
    "zip": false
  },
  "operations": [
    {
      "type": "extract",
      "values": {
        "pagesToExtractArray": [0, 2]
      },
      "operations": [
        {
          "type": "impose",
          "values": {
            "nup": 2, // 2 pages of the input document will be put on one page of the output document.
            "format": "A4L" // A4L -> The page size of the Ouput will be an A4 in Landscape. You can also use other paper formats and "P" for portrait output. 
          },
          "operations": []
        }
      ]
    }
  ]
}

If you look at it closely, you will see that the extract operation has another nested operation of the type impose. This workflow will produce a PDF with the 1st and 2nd page of the input on one single page.

Advanced

If that is not enought for you usecase, there is also the possibility to connect operations with eachother.

You can also do different operations to produce two different output PDFs from one input.

If you are interested in learning about this, take a look at the Example workflows provided in the repository, ask on the discord, or wait for me to finish this documentation.

Features

New

  • Client side PDF-Manipulation
  • Workflows
  • Stateful UI
  • Node based editing of them
  • Propper auth using passportjs

Functions

Current functions of spdf and their progress in this repo.

  • Merge
  • Split
  • Rotate
  • Multi-Page-Layout
  • Adjust page size/scale
  • Organize
  • Change Metadata
  • Add Watermark

  • Remove Pages
  • Remove Blank Pages
  • Detect/Split Scanned photos

  • Repair
  • Compress
  • Flatten
  • Compare/Diff

  • Sign
  • Sign with Certificate
  • Add Password
  • Remove Password
  • Change Permissions

  • Image to PDF
  • Add image
  • Extract Images
  • PDF to Image
  • OCR

  • Convert file to PDF
  • PDF to Text/RTF
  • PDF to HTML
  • PDF to XML

Contribute

For initial instructions look at CONTRIBUTE.md