Contents
pdfebc-web
is the web based part of the set of pdfebc-core interfaces. The app is primarily
built with Flask
, but Celery
handles CPU-intensive background tasks, such as compressing pdf files.
This is mostly a toy project for me to learn Flask, but someone, somewhere may find it
useful someday. Currently, the features include uploading pdf files, compressing them, and
having them sent to a pre-configured e-mail address.
Aside from the Python modules listed in requirements.txt, the following requirements must be met:
Python 3.6
- Strictly speaking, 3.5 should also work fine, but the tests use 3.6 features so the build is only tested for 3.6.
Ghostscript
pdfebc-core
requiresGhostscript
for the PDF compression. The default binary isgs
, but this can be specified in the configuration file.
Redis
- Celery requires a message broker, and I chose to go with
Redis
.
- Celery requires a message broker, and I chose to go with
- A Gmail account (for sending e-mails)
- By default,
pdfebc
uses Google's SMTP server to send e-mails. The program can however be configured to use any SMTP server by maniupulating theconfig.cnf
.
- By default,
The latest release of pdfebc-web
is on PyPi, and can thus be installed as usual with pip
.
I strongly discourage system-wide pip
installs (i.e. sudo pip install <package>
), as this
may land you with incompatible packages in a very short amount of time. A per-user install
can be done like this:
Execute
pip install --user pdfebc-web
to install the package.- Install
Redis
(used byCelery
). - This may or may not be available in your package manager, Google it for specifics!
- Install
- Install
Ghostscript
. - Many distributions come with
Ghostscript
pre-installed, but you may need to install it. - Make note of what the binary is called, and enter it in the configuration file (see the next step).
- Many distributions come with
- Install
Currently, you must add the configuration file manually. Please have a look at the sample configuration file for details. Where to put the configuration file is machine-dependent, and decided by the
appdirs
package. On most modern Linux distributions, the file should be put at$HOME/.config/pdfebc/config.cnf
. You can runapdirs.user_config_dir('pdfebc')
in the Python interpreter to find the correct directory for your machine. Note that you must first importappdirs
for it to be available in the interpreter.Note: When using a Gmail account, I strongly recommend using an App password instead of the actual account password.
If you want the dev version, you will need to clone the repo, as only release versions are uploaded to PyPi. Unless you are planning to work on this yourself, I suggest going with the release version.
- Clone the repo with
git
: git clone https://github.com/slarse/pdfebc-web
- Clone the repo with
cd
into the project root directory and install withpip
.pip install --user .
, this will create a local install for the current user.- Or just
pip install .
if you usevirtualenv
. - For development, use
pip install -e .
in avirtualenv
.
- Install
Redis
(used byCelery
). - This may or may not be available in your package manager, Google it for specifics!
- Install
- Install
Ghostscript
. - Many distributions come with
Ghostscript
pre-installed, but you may need to install it. - Make note of what the binary is called, and enter it in the configuration file (see the next step).
- Many distributions come with
- Install
- Currently, you must add the configuration file manually. Please have a look at the
sample configuration file for details. Where to put the configuration file is
machine-dependent, and decided by the
appdirs
package. Runapdirs.user_config_dir('pdfebc')
in the Python interpreter to find the correct directory. Note that you must first importappdirs
for it to be available in the interpreter. Note: When using a Gmail account, I strongly recommend using an App password instead of the actual account password.
Assuming everything is installed correctly, running the application is dead simple.
- Execute
pdfebc-web-start-celery-redis
to start up theRedis
server and 4Celery
workers. The script will complain ifRedis
orCelery
is not installed. - Execute
pdfebc-web runserver -h x.x.x.x -p n
to runpdfebc-web
while listening to addressx.x.x.x
and portn
. Do note that if you run the server as root, for example if you want to run it on a port lower than 1000, thenappdirs
will likely look for a different configuration directory than if you run it as your normal user (because root is a different user).
This software is licensed under the MIT License. See the license file file for specifics.
I am currently not looking for contributions. At this point, this is a practice project for me, and even if I were looking for outside help the test suite is nowhere near comprehensive enough for that yet. Sorry!