Initial commit

This commit is contained in:
JiJi
2023-01-25 00:22:24 +08:00
parent d5ac0347c6
commit 8a1e8c478a
8 changed files with 257 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
.venv
__pycache__
dist
pdfuck.egg-info
+70
View File
@@ -0,0 +1,70 @@
![](assets/logo.svg)
[简体中文](README.md) | [**English**](README.en.md)
---
## Introduction
[PDFuck](https://github.com/mmdjiji/pdfuck) is a tool to remove PDF editing password, which is used in CLI (command line) mode.
## Installation
Before installing, please ensure that you have installed Python (>=3.0) and its matching version of pip, and then enter the following command at the command prompt:
```bash
pip install pdfuck
```
## Usage
### Remove PDF password
For example, if you want to remove the password from the PDF file which is located in `example.pdf`, just enter the following command:
```bash
pdfuck example.pdf
```
The default path of the output file is `example.fucked.pdf`.
### Manually specify the output file path
If you want to specify the path of the output file manually, you can use the `-o` parameter, for example:
```bash
pdfuck example.pdf -o target.pdf
```
### PDF file requires opening password
Use the `-p` parameter to manually specify the opening password, for example:
```bash
pdfuck example.pdf -p password
```
## Credit
Thanks for the following open source projects. The completion of this project is inseparable from the code contributed by these authors.
* [pikepdf](https://github.com/pikepdf/pikepdf)
## Workflow
### Configure development environment
```bash
pip install -r requirements.txt
```
### Build and test
```bash
python -m build
pip install --editable .
```
## License
[GPL-3.0](LICENSE)
+70
View File
@@ -0,0 +1,70 @@
![](assets/logo.svg)
[**简体中文**](README.md) | [English](README.en.md)
---
## 简介
[PDFuck](https://github.com/mmdjiji/pdfuck) 是一个去除 PDF 编辑密码的工具,以命令行方式使用。
## 安装
在安装前,请确保你安装了 Python (>=3.0) 及与之版本相匹配的 pip,然后在命令提示符中输入下面的命令:
```bash
pip install pdfuck
```
## 使用
### 去除 PDF 密码
例如,想要去除密码的 PDF 文件位于 `example.pdf`,只需输入下面的命令:
```bash
pdfuck example.pdf
```
输出文件的默认路径为 `example.fucked.pdf`
### 手动指定输出文件路径
如果想要手动指定输出文件的路径,可以使用 `-o` 参数,例如:
```bash
pdfuck example.pdf -o target.pdf
```
### PDF 文件含有打开密码
使用 `-p` 参数手动指定打开密码,例如:
```bash
pdfuck example.pdf -p password
```
## 致谢
感谢以下开源项目,本项目的完成离不开这些作者贡献的代码。
* [pikepdf](https://github.com/pikepdf/pikepdf)
## 工作流
### 配置开发环境
```bash
pip install -r requirements.txt
```
### 构建与测试
```bash
python -m build
pip install --editable .
```
## 开源协议
[GPL-3.0](LICENSE)
+52
View File
@@ -0,0 +1,52 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 650 85" width="650" height="85" style="/*! background: #0d1117; */">
<foreignObject width="100%" height="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
<style>
@keyframes gradientText {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
h1 {
font-family:
'Segoe UI',
'Roboto',
'Oxygen',
'Ubuntu',
'Cantarell',
'Fira Sans',
'Droid Sans',
'Helvetica Neue',
sans-serif;
margin: 0;
font-size: 3.75em;
font-weight: 900;
letter-spacing: -.05em;
text-align: center;
float: center;
}
.text {
background: -webkit-linear-gradient(right, #ff056e,#3c66ff);
background: linear-gradient(270deg, #ff056e 0,#3c66ff);
background-size: 350%;
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: gradientText 3s ease infinite;
animation: gradientText 3s ease infinite;
}
</style>
<h1>
<span class="text">PDFuck</span>
</h1>
</div>
</foreignObject>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

+38
View File
@@ -0,0 +1,38 @@
# pdfuck.py
# Author JiJi <i@mmdjiji.com>
# GitHub https://github.com/mmdjiji/pdfuck
import argparse
import pikepdf
def pdfuck(filepath, output, password):
# add '.fuck' sign for the output file
if not output:
splited = filepath.rsplit('.', 1)
prefix = splited[0]
output = prefix + '.fucked'
if(len(splited) >= 2):
suffix = splited[1]
output += '.' + suffix
try:
with pikepdf.open(filename_or_stream=filepath, password=password) as pdf:
pdf.save(filename_or_stream=output)
print('Decryption succeeded, saved to \'' + output + '\'')
except Exception as e:
print(e)
def main():
parser = argparse.ArgumentParser(description='PDFuck: Remove the password of your PDF file')
parser.add_argument('filepath', metavar='<filepath>', type=str, help='path of the source PDF file')
parser.add_argument('-o', '--output', metavar='<filepath>', type=str, help='path of the target PDF file')
parser.add_argument('-p', '--password', metavar='<password>', type=str, help='reading password of the source PDF file')
args = parser.parse_args()
filepath, output, password = args.filepath, args.output, args.password or ''
pdfuck(filepath=filepath, output=output, password=password)
if __name__ == '__main__':
main()
BIN
View File
Binary file not shown.
+18
View File
@@ -0,0 +1,18 @@
[metadata]
name = pdfuck
version = 1.0.0
author = JiJi <i@mmdjiji.com>
long_description = file: README.md
license = GPL-3.0
url = https://github.com/mmdjiji/pdfuck
classifiers =
Programming Language :: Python :: 3
[options]
packages = find:
install_requires =
pikepdf
[options.entry_points]
console_scripts =
pdfuck = pdfuck:main
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import setuptools
setuptools.setup()