Pdfserver 是一种 Web 服务,提供常见的 PDF 操作,例如加入文档、选择页面或“n 页合一”。
项目描述
Pdfserver 是一种 Web 服务,提供常见的 PDF 操作,如加入文档、选择页面或“n 页合一”。它建立在基于 Python 的微框架 Flask 之上,并依赖 pyPdf 来操作 PDF。
基本原理
存在处理 PDF 的强大工具,但它们并非在所有系统上都普遍可用或使用起来并不简单。该服务器允许任何人通过网络快速解决最常见的 PDF 操作。
如果您不信任其他服务器的数据,请自行部署副本!
例子
有关示例安装,请参阅http://pdfserverapp.appspot.com/ 。
依赖项
(见requirements.txt)
Python (>= 2.5, < 3.0), http://www.python.org
烧瓶(在 0.6 上测试), http: //flask.pocoo.org/
烧瓶脚本(>= 0.3.1),http://bitbucket.org/danjac/flask-script
SQLAlchemy(可能 >= 0.6.0),http: //www.sqlalchemy.org/
pyPdf (>= 1.13), http://pybrary.net/pyPdf/
可选
python-reportlab(用 2.4 测试)用于添加水印, http://www.reportlab.com/software/opensource/rl-toolkit/
celery(用 2.0.0 测试)用于异步请求处理(在 Google App Engine 上不需要),http://celeryq.org/
已经包含
jQuery 和 jQuery UI(用 1.8.4 测试)(都已随 pdfserver 一起提供),至少需要 UI 核心,来自 jQuery UI, http://jquery.com/的“Sortable”和“Dialog”
jQuery 插件:验证, http ://bassistance.de/jquery-plugins/jquery-plugin-validation/
jNotify jQuery 插件,不显眼的通知系统 http://www.givainc.com/labs/jnotify_jquery_plugin.htm
特征
简单但功能强大
专为使用和不使用 Javascript 而设计
N 页合一
文件的加入
选择页面和页面范围
旋转页面
给页面添加水印
在 Google App Engine 上运行
异步处理构建
变化
0.6
celery 默认使用 SQLAlchemy 代理后端
修复由于不兼容的 Flask 更改而导致的损坏
修复上传文件排序的测试
0.5
修复 setup.py 静态
如果未启用 cookie,则显示警告
更新 pyPdf 依赖项
启用 celery 任务后端的测试
0.4
通过 Ajax 处理上传和删除操作
支持异步 PDF 生成
修复 App Engine 的最大上传大小处理
单元测试
行动讯息
0.3
从“django-pdfserver”重命名为“pdfserver”
“N 页合一”功能
从 Django 迁移到 Flask
谷歌应用引擎支持
0.2.1
页面旋转
水印功能
页面范围验证
部署
下载并提取源代码。
在提取的文件夹中创建一个 virtualenv 并安装要求:
$ virtualenv env $ source env/bin/activate $ pip install -r requirements.txt
您可以简单地运行开发服务器:
$ python manage.py createdb $ mkdir uploads $ python manage.py runserver
一般的
确保给定的上传目录和数据库可以写入并且不能从外部访问(如果在公共服务器上)。
当不处于调试模式时,请确保在 static 下提供静态文件。
提供一个SECRET_KEY并对其保密,以便可以对会话进行签名并且用户无法看到其他人上传的文件。
通过运行创建数据库:
$ python manage.py createdb
芹菜
对于生成的 PDF 安装 celery 和 kombu-sqlalchemy 的可选异步生成(您也可以使用默认代理 RabbitMQ,请参阅 http://celeryq.org/docs/getting-started/broker-installation.html):
$ pip install -r celery_requirements.txt
从项目目录运行 celeryd 以异步处理任务:
$ celeryd
Google App Engine 有自己的自动使用的取消引用库。
充当 CGI
有关如何通过传统 CGI 界面运行 pdfserver 的示例,请参阅 pdfserver.cgi。
谷歌应用引擎
要在 App Engine 上运行 pdfserver,您需要在本地下载和复制依赖项。在提取的文件夹中运行以下命令:
# Get dependencies $ mkdir tmp $ pip install -r requirements.txt distribute --build=tmp --src=tmp \ --no-install --ignore-installed $ mv tmp/Babel/babel/ tmp/Flask/flask/ tmp/Flask-Babel/flaskext/ \ tmp/Jinja2/jinja2/ tmp/pyPdf/pyPdf/ tmp/pytz/pytz \ tmp/speaklater/speaklater.py tmp/Werkzeug/werkzeug/ \ tmp/reportlab/src/reportlab/ tmp/distribute/pkg_resources.py . $ rm -rf tmp # Add a secret key $ $EDITOR appengine.py # Choose your application name $ $EDITOR app.yaml # Run the development server $ /usr/local/google_appengine/dev_appserver.py . # Finally upload $ /usr/local/google_appengine/appcfg.py update .
如果任务无法执行(您可以在 http://localhost:8080/_ah/admin/tasks?queue=default 下查看),您可能会被错误http://code.google.com/p/appengine -mapreduce/issues/detail?id=9,请参阅那里的解决方法。
接触
请向http://github.com/cburgmer/pdfserver/issues报告错误。
Christoph Burgmer <cburgmer (at) ira uka de>