Skip to content

Commit

Permalink
update: 增加注释裁剪功能
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin2li committed Jul 23, 2023
1 parent 712221f commit b04c032
Show file tree
Hide file tree
Showing 12 changed files with 248 additions and 70 deletions.
17 changes: 17 additions & 0 deletions crop.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,20 @@ func (a *App) CropPDFByMargin(inFile string, outFile string, margin []float32, u
logger.Println(args)
return a.cmdRunner(args, "pdf")
}

func (a *App) CropPDFByRectAnnots(inFile string, outFile string, keepSize bool, pages string) error {
logger.Printf("inFile: %s, outFile: %s, keepSize: %v, pages: %s\n", inFile, outFile, keepSize, pages)
args := []string{"crop", "--method", "annot"}
if keepSize {
args = append(args, "--keep_size")
}
if pages != "" {
args = append(args, "--page_range", pages)
}
if outFile != "" {
args = append(args, "-o", outFile)
}
args = append(args, inFile)
logger.Println(args)
return a.cmdRunner(args, "pdf")
}
91 changes: 91 additions & 0 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
},
"dependencies": {
"ant-design-vue": "^3.2.20",
"axios": "^1.4.0",
"lightvue": "^1.5.1",
"pinia": "^2.1.4",
"tinycolor2": "^1.6.0",
Expand Down
2 changes: 1 addition & 1 deletion frontend/package.json.md5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9f342127cb11d3aafd2cbbc64f4d342d
d529c74798c3370cbcfdc4cfb60ec678
2 changes: 1 addition & 1 deletion frontend/src/Main.vue
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ import MetaForm from "./components/Forms/MetaForm.vue";
import DualLayerForm from "./components/Forms/DualLayerForm.vue";
import PasswordCrackForm from "./components/Forms/PasswordCrackForm.vue";
import Index from "./components/Forms/Index.vue";
import SignForm from "./components/Forms/Sign.vue";
import SignForm from "./components/Forms/SignForm.vue";
import Debug from "./components/Forms/Debug.vue";
import { useMenuState } from './store/menu';
Expand Down
26 changes: 19 additions & 7 deletions frontend/src/components/Forms/BookmarkForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,19 @@
</a-form-item>
<a-form-item name="bookmark_file" label="书签文件" hasFeedback :validateStatus="validateStatus.bookmark_file"
:help="validateHelp.bookmark_file" v-if="store.write_type == 'file'">
<a-input v-model:value="store.bookmark_file" placeholder="书签文件路径" allow-clear />
<div>
<a-row>
<a-col :span="22">
<a-input v-model:value="store.bookmark_file" placeholder="书签文件路径" allow-clear />
</a-col>
<a-col :span="1" style="margin-left: 1vw;">
<a-tooltip>
<template #title>选择文件</template>
<a-button @click="selectFile('bookmark_file')"><ellipsis-outlined /></a-button>
</a-tooltip>
</a-col>
</a-row>
</div>
</a-form-item>
<a-form-item name="write_offset" label="页码偏移量" v-if="store.write_type == 'file'">
<a-input-number v-model:value="store.write_offset" />
Expand Down Expand Up @@ -305,12 +317,12 @@ export default defineComponent({
validateHelp[_rule.field] = err;
return Promise.reject("文件不存在");
});
const legal_suffix = [".pdf"];
if (!legal_suffix.some((suffix) => value.trim().endsWith(suffix))) {
validateStatus["input"] = 'error';
validateHelp["input"] = "仅支持pdf格式的文件";
return Promise.reject();
}
// const legal_suffix = [".pdf"];
// if (!legal_suffix.some((suffix) => value.trim().toLocaleLowerCase().endsWith(suffix))) {
// validateStatus["input"] = 'error';
// validateHelp["input"] = "仅支持pdf格式的文件";
// return Promise.reject();
// }
};
const validateRange = async (_rule: Rule, value: string) => {
validateStatus["page"] = 'validating';
Expand Down
125 changes: 68 additions & 57 deletions frontend/src/components/Forms/CropForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,64 +7,72 @@
<a-radio-group button-style="solid" v-model:value="store.op">
<a-radio-button value="margin">根据页边距</a-radio-button>
<a-radio-button value="bbox">根据锚框</a-radio-button>
<a-radio-button value="annot">根据矩形注释</a-radio-button>
</a-radio-group>
</a-form-item>
<a-form-item label="单位">
<a-radio-group v-model:value="store.unit">
<a-radio value="pt">像素</a-radio>
<a-radio value="cm">厘米</a-radio>
<a-radio value="mm">毫米</a-radio>
<a-radio value="in">英寸</a-radio>
</a-radio-group>
</a-form-item>
<a-form-item name="crop.type" label="页边距" v-if="store.op === 'margin'">
<a-space size="large">
<a-input-number v-model:value="store.up" :min="0">
<template #addonBefore>
</template>
</a-input-number>
<a-input-number v-model:value="store.down" :min="0">
<template #addonBefore>
</template>
</a-input-number>
<a-input-number v-model:value="store.left" :min="0">
<template #addonBefore>
</template>
</a-input-number>
<a-input-number v-model:value="store.right" :min="0">
<template #addonBefore>
</template>
</a-input-number>
</a-space>
</a-form-item>
<a-form-item name="crop.type" label="锚框" v-if="store.op === 'bbox'">
<a-space size="large">
<a-input-number v-model:value="store.up" :min="0">
<template #addonBefore>
左上x
</template>
</a-input-number>
<a-input-number v-model:value="store.left" :min="0">
<template #addonBefore>
左上y
</template>
</a-input-number>
<a-input-number v-model:value="store.down" :min="0">
<template #addonBefore>
右下x
</template>
</a-input-number>
<a-input-number v-model:value="store.right" :min="0">
<template #addonBefore>
右下y
</template>
</a-input-number>
</a-space>
</a-form-item>
<div v-if="store.op !== 'annot'">
<a-form-item label="单位">
<a-radio-group v-model:value="store.unit">
<a-radio value="pt">像素</a-radio>
<a-radio value="cm">厘米</a-radio>
<a-radio value="mm">毫米</a-radio>
<a-radio value="in">英寸</a-radio>
</a-radio-group>
</a-form-item>
</div>
<div v-if="store.op === 'margin'">
<a-form-item name="" label="页边距">
<a-space size="large">
<a-input-number v-model:value="store.up" :min="0">
<template #addonBefore>
</template>
</a-input-number>
<a-input-number v-model:value="store.down" :min="0">
<template #addonBefore>
</template>
</a-input-number>
<a-input-number v-model:value="store.left" :min="0">
<template #addonBefore>
</template>
</a-input-number>
<a-input-number v-model:value="store.right" :min="0">
<template #addonBefore>
</template>
</a-input-number>
</a-space>
</a-form-item>
</div>
<div v-if="store.op === 'bbox'">
<a-form-item name="crop.type" label="锚框">
<a-space size="large">
<a-input-number v-model:value="store.up" :min="0">
<template #addonBefore>
左上x
</template>
</a-input-number>
<a-input-number v-model:value="store.left" :min="0">
<template #addonBefore>
左上y
</template>
</a-input-number>
<a-input-number v-model:value="store.down" :min="0">
<template #addonBefore>
右下x
</template>
</a-input-number>
<a-input-number v-model:value="store.right" :min="0">
<template #addonBefore>
右下y
</template>
</a-input-number>
</a-space>
</a-form-item>
</div>

<a-form-item label="保持页面尺寸">
<a-switch v-model:checked="store.keep_size" />
</a-form-item>
Expand Down Expand Up @@ -119,7 +127,8 @@ import {
CheckFileExists,
CheckRangeFormat,
CropPDFByBBOX,
CropPDFByMargin
CropPDFByMargin,
CropPDFByRectAnnots,
} from '../../../wailsjs/go/main/App';
import type { FormInstance } from 'ant-design-vue';
import type { Rule } from 'ant-design-vue/es/form';
Expand Down Expand Up @@ -219,6 +228,8 @@ export default defineComponent({
else if (store.op === "bbox") {
let bbox = [store.up, store.left, store.down, store.right];
await handleOps(CropPDFByBBOX, [store.input, store.output, bbox, store.unit, store.keep_size, store.page]);
} else if (store.op === "annot") {
await handleOps(CropPDFByRectAnnots, [store.input, store.output, store.keep_size, store.page]);
}
else {
message.error("未知的操作类型");
Expand Down
File renamed without changes.
2 changes: 2 additions & 0 deletions frontend/wailsjs/go/main/App.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ export function CropPDFByBBOX(arg1:string,arg2:string,arg3:Array<number>,arg4:st

export function CropPDFByMargin(arg1:string,arg2:string,arg3:Array<number>,arg4:string,arg5:boolean,arg6:string):Promise<void>;

export function CropPDFByRectAnnots(arg1:string,arg2:string,arg3:boolean,arg4:string):Promise<void>;

export function CutPDFByBreakpoints(arg1:string,arg2:string,arg3:Array<number>,arg4:Array<number>,arg5:string):Promise<void>;

export function CutPDFByGrid(arg1:string,arg2:string,arg3:number,arg4:number,arg5:string):Promise<void>;
Expand Down
4 changes: 4 additions & 0 deletions frontend/wailsjs/go/main/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ export function CropPDFByMargin(arg1, arg2, arg3, arg4, arg5, arg6) {
return window['go']['main']['App']['CropPDFByMargin'](arg1, arg2, arg3, arg4, arg5, arg6);
}

export function CropPDFByRectAnnots(arg1, arg2, arg3, arg4) {
return window['go']['main']['App']['CropPDFByRectAnnots'](arg1, arg2, arg3, arg4);
}

export function CutPDFByBreakpoints(arg1, arg2, arg3, arg4, arg5) {
return window['go']['main']['App']['CutPDFByBreakpoints'](arg1, arg2, arg3, arg4, arg5);
}
Expand Down
Loading

0 comments on commit b04c032

Please sign in to comment.