# pdfcpu **Repository Path**: albinZhang/pdfcpu ## Basic Information - **Project Name**: pdfcpu - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-07-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pdfcpu: a Go PDF processor [![Build Status](https://travis-ci.org/pdfcpu/pdfcpu.svg?branch=master)](https://travis-ci.org/pdfcpu/pdfcpu) [![GoDoc](https://godoc.org/github.com/pdfcpu/pdfcpu?status.svg)](https://godoc.org/github.com/pdfcpu/pdfcpu) [![Coverage Status](https://coveralls.io/repos/github/pdfcpu/pdfcpu/badge.svg?branch=master)](https://coveralls.io/github/pdfcpu/pdfcpu?branch=master) [![Go Report Card](https://goreportcard.com/badge/github.com/pdfcpu/pdfcpu)](https://goreportcard.com/report/github.com/pdfcpu/pdfcpu) [![Hex.pm](https://img.shields.io/hexpm/l/plug.svg)](https://opensource.org/licenses/Apache-2.0) [![Latest release](https://img.shields.io/github/release/pdfcpu/pdfcpu.svg)](https://github.com/pdfcpu/pdfcpu/releases) pdfcpu is a PDF processing library written in [Go](http://golang.org) supporting encryption. It provides both an API and a CLI. Supported are all versions up to PDF 1.7 (ISO-32000). ## Motivation This is an effort to build a comprehensive PDF processing library from the ground up written in Go. Over time pdfcpu aims to support the standard range of PDF processing features and also any interesting use cases that may present themselves along the way.

     

     

 

## Focus The main focus lies on strong support for batch processing and scripting via a rich command line. At the same time pdfcpu wants to make it easy to integrate PDF processing into your Go based backend system by providing a robust command set. ## Command Set * [attachments](https://pdfcpu.io/attach/attach) * [change owner password](https://pdfcpu.io/encrypt/change_opw) * [change user password](https://pdfcpu.io/encrypt/change_upw) * [collect](https://pdfcpu.io/core/collect) * [decrypt](https://pdfcpu.io/encrypt/decryptPDF) * [encrypt](https://pdfcpu.io/encrypt/encryptPDF) * [extract](https://pdfcpu.io/extract/extract) * [fonts](https://pdfcpu.io/fonts/fonts) * [grid](https://pdfcpu.io/core/grid) * [import](https://pdfcpu.io/generate/import) * [info](https://pdfcpu.io/info) * [keywords](https://pdfcpu.io/keywords/keywords) * [merge](https://pdfcpu.io/core/merge) * [nup](https://pdfcpu.io/core/nup) * [optimize](https://pdfcpu.io/core/optimize) * [pages](https://pdfcpu.io/pages/pages) * [permissions](https://pdfcpu.io/encrypt/perm_add) * [portfolio](https://pdfcpu.io/portfolio/portfolio) * [properties](https://pdfcpu.io/properties/properties) * [rotate](https://pdfcpu.io/core/rotate) * [split](https://pdfcpu.io/core/split) * [stamp](https://pdfcpu.io/core/stamp) * [trim](https://pdfcpu.io/core/trim) * [validate](https://pdfcpu.io/core/validate) * [watermark](https://pdfcpu.io/core/watermark) ## Documentation * The main entry point is [pdfcpu.io](https://pdfcpu.io). * For CLI examples also go to [pdfcpu.io](https://pdfcpu.io). There you will find explanations of all the commands and their parameters. * For API examples of all pdfcpu operations please refer to [GoDoc](https://godoc.org/github.com/pdfcpu/pdfcpu/pkg/api). ### GoDoc * [pdfcpu package](https://godoc.org/github.com/pdfcpu/pdfcpu) * [pdfcpu API](https://godoc.org/github.com/pdfcpu/pdfcpu/pkg/api) * [pdfcpu CLI](https://godoc.org/github.com/pdfcpu/pdfcpu/pkg/cli) ## Reminder * Always make sure your work is based on the latest commit!
* pdfcpu is still *Alpha* - bugfixes are committed on the fly and will be mentioned in the next release notes.
* Follow [pdfcpu](https://twitter.com/pdfcpu) for news and release announcements. * For quick questions or discussions get in touch on the [Gopher Slack](https://invite.slack.golangbridge.org/) in the #pdfcpu channel. ## Demo Screencast (using older version with a smaller command set) [![asciicast](resources/demo.png)](https://asciinema.org/a/P5jaAo9kgZXKj2iSA1OqIdLAU) ## Installation ### Download Get the latest binary [here](https://github.com/pdfcpu/pdfcpu/releases). ### Using GOPATH Required go version for building: go1.14 and up ``` go get github.com/pdfcpu/pdfcpu/cmd/... cd $GOPATH/src/github.com/pdfcpu/pdfcpu/cmd/pdfcpu go install pdfcpu version ``` ### Using Go Modules ``` git clone https://github.com/pdfcpu/pdfcpu cd pdfcpu/cmd/pdfcpu go install pdfcpu version ``` ### Using Homebrew (macOS) ``` brew install pdfcpu pdfcpu version ``` ### Run in a Docker container ``` docker build -t pdfcpu . # mount current folder into container to process local files docker run -it --mount type=bind,source="$(pwd)",target=/app pdfcpu ./pdfcpu validate -mode strict /app/pdfs/a.pdf ``` ## Contributing ### What * Please open an issue if you find a bug or want to propose a change. * Feature requests - always welcome! * Bug fixes - always welcome! * PRs - anytime! * pdfcpu is stable but still *Alpha* and occasionally undergoing heavy changes. ### How * If you want to report a bug please attach the *very verbose* (`pdfcpu cmd -vv ...`) output and ideally a test PDF that you can share. * Always make sure your contribution is based on the latest commit. * Please sign your commits. ### Reporting Crashes Unfortunately crashes do happen :( For the majority of the cases this is due to a diverse pool of PDF Writers out there and millions of PDF files using different versions waiting to be processed by pdfcpu. Sometimes these PDFs were written more than 20(!) years ago. Often there is an issue with validation - sometimes a bug in the parser. Many times even using relaxed validation with pdfcpu does not work. In these cases we need to extend relaxed validation and for this we are relying on your help. By reporting crashes you are helping to improve the stability of pdfcpu. If you happen to crash on any pdfcpu operation be it on the command line or in your Go backend these are the steps to report this: Regardless of the pdfcpu operation, please start using the pdfcpu command line to validate your file: ``` sh pdfcpu validate -v &> crash.log ``` or to produce very verbose output ``` sh pdfcpu validate -vv &> crash.log ``` will produce what's needed to investigate a crash. Then open an issue and post `crash.log` or its contents. Ideally post a test PDF you can share to reproduce this. You can also email to hhrutter@gmail.com or if you prefer Slack you can get in touch on the Gopher slack #pdfcpu channel. If processing your PDF with pdfcpu crashes during validation and can be opened by Adobe Reader and Mac Preview chances are we can extend relaxed validation and provide a fix. If the file in question cannot be opened by both Adobe Reader and Mac Preview we cannot help you! ## Contributors Thanks goes to these wonderful people: |||||||| | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | [
Horst Rutter](https://github.com/hhrutter) | [
haldyr](https://github.com/haldyr) | [
Vyacheslav](https://github.com/SimePel) | [
Erik Unger](https://github.com/ungerik) | [
Richard Wilkes](https://github.com/richardwilkes) | [
minenok-tutu](https://github.com/minenok-tutu) | [
Mateusz Burniak](https://github.com/matbur) | | [
Dmitry Harnitski](https://github.com/dharnitski) | [
ryarnyah](https://github.com/ryarnyah) | [
Sam Giffney](https://github.com/s01ipsist) | [
Carlos Eduardo Witte](https://github.com/cewitte) | [
minusworld](https://github.com/minusworld) ## Code of Conduct Please note that this project is released with a Contributor [Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. ## Disclaimer Usage of pdfcpu assumes you know about and respect all copyrights of any PDF content you may be processing. This applies to the PDF files as such, their content and in particular all embedded resources like font files or images. Credit goes to [Renee French](https://instagram.com/reneefrench) for creating our beloved Gopher. ## License Apache-2.0 ## Powered By