mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-04 21:37:11 -04:00
fix: use qpdf-wasm-esm-embedded + add logs
This commit is contained in:
parent
48dd7bb695
commit
c35e7102d5
7 changed files with 31 additions and 1305 deletions
10
components.d.ts
vendored
10
components.d.ts
vendored
|
@ -127,27 +127,25 @@ declare module '@vue/runtime-core' {
|
||||||
MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default']
|
MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default']
|
||||||
MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default']
|
MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default']
|
||||||
NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default']
|
NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default']
|
||||||
NCode: typeof import('naive-ui')['NCode']
|
NCheckbox: typeof import('naive-ui')['NCheckbox']
|
||||||
NCollapseTransition: typeof import('naive-ui')['NCollapseTransition']
|
NCollapseTransition: typeof import('naive-ui')['NCollapseTransition']
|
||||||
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
|
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
|
||||||
NDivider: typeof import('naive-ui')['NDivider']
|
NDivider: typeof import('naive-ui')['NDivider']
|
||||||
NEllipsis: typeof import('naive-ui')['NEllipsis']
|
NEllipsis: typeof import('naive-ui')['NEllipsis']
|
||||||
NFormItem: typeof import('naive-ui')['NFormItem']
|
NFormItem: typeof import('naive-ui')['NFormItem']
|
||||||
NGi: typeof import('naive-ui')['NGi']
|
|
||||||
NGrid: typeof import('naive-ui')['NGrid']
|
|
||||||
NH1: typeof import('naive-ui')['NH1']
|
NH1: typeof import('naive-ui')['NH1']
|
||||||
NH3: typeof import('naive-ui')['NH3']
|
NH3: typeof import('naive-ui')['NH3']
|
||||||
NIcon: typeof import('naive-ui')['NIcon']
|
NIcon: typeof import('naive-ui')['NIcon']
|
||||||
NInputNumber: typeof import('naive-ui')['NInputNumber']
|
NInput: typeof import('naive-ui')['NInput']
|
||||||
NLabel: typeof import('naive-ui')['NLabel']
|
|
||||||
NLayout: typeof import('naive-ui')['NLayout']
|
NLayout: typeof import('naive-ui')['NLayout']
|
||||||
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
|
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
|
||||||
NMenu: typeof import('naive-ui')['NMenu']
|
NMenu: typeof import('naive-ui')['NMenu']
|
||||||
NScrollbar: typeof import('naive-ui')['NScrollbar']
|
NSpace: typeof import('naive-ui')['NSpace']
|
||||||
NSpin: typeof import('naive-ui')['NSpin']
|
NSpin: typeof import('naive-ui')['NSpin']
|
||||||
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
|
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
|
||||||
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
|
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
|
||||||
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']
|
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']
|
||||||
|
PdfEncrypt: typeof import('./src/tools/pdf-encrypt/pdf-encrypt.vue')['default']
|
||||||
PdfSignatureChecker: typeof import('./src/tools/pdf-signature-checker/pdf-signature-checker.vue')['default']
|
PdfSignatureChecker: typeof import('./src/tools/pdf-signature-checker/pdf-signature-checker.vue')['default']
|
||||||
PdfSignatureDetails: typeof import('./src/tools/pdf-signature-checker/components/pdf-signature-details.vue')['default']
|
PdfSignatureDetails: typeof import('./src/tools/pdf-signature-checker/components/pdf-signature-details.vue')['default']
|
||||||
PercentageCalculator: typeof import('./src/tools/percentage-calculator/percentage-calculator.vue')['default']
|
PercentageCalculator: typeof import('./src/tools/percentage-calculator/percentage-calculator.vue')['default']
|
||||||
|
|
|
@ -81,6 +81,7 @@
|
||||||
"pdf-signature-reader": "^1.4.2",
|
"pdf-signature-reader": "^1.4.2",
|
||||||
"pinia": "^2.0.34",
|
"pinia": "^2.0.34",
|
||||||
"plausible-tracker": "^0.3.8",
|
"plausible-tracker": "^0.3.8",
|
||||||
|
"qpdf-wasm-esm-embedded": "^1.1.1",
|
||||||
"qrcode": "^1.5.1",
|
"qrcode": "^1.5.1",
|
||||||
"sql-formatter": "^13.0.0",
|
"sql-formatter": "^13.0.0",
|
||||||
"ua-parser-js": "^1.0.35",
|
"ua-parser-js": "^1.0.35",
|
||||||
|
|
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
|
@ -143,6 +143,9 @@ dependencies:
|
||||||
plausible-tracker:
|
plausible-tracker:
|
||||||
specifier: ^0.3.8
|
specifier: ^0.3.8
|
||||||
version: 0.3.8
|
version: 0.3.8
|
||||||
|
qpdf-wasm-esm-embedded:
|
||||||
|
specifier: ^1.1.1
|
||||||
|
version: 1.1.1
|
||||||
qrcode:
|
qrcode:
|
||||||
specifier: ^1.5.1
|
specifier: ^1.5.1
|
||||||
version: 1.5.1
|
version: 1.5.1
|
||||||
|
@ -7687,6 +7690,12 @@ packages:
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/qpdf-wasm-esm-embedded@1.1.1:
|
||||||
|
resolution: {integrity: sha512-e6Pb8jRw+VflZQvsS+eOfYF9BqjubvTBnxJc44LhI1btg2WYNKE5/lGMmzWZ2gd9YrdWByf8IdNZw6S7+7t27w==}
|
||||||
|
dependencies:
|
||||||
|
'@types/emscripten': 1.39.10
|
||||||
|
dev: false
|
||||||
|
|
||||||
/qrcode@1.5.1:
|
/qrcode@1.5.1:
|
||||||
resolution: {integrity: sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==}
|
resolution: {integrity: sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
|
@ -9456,6 +9465,7 @@ packages:
|
||||||
|
|
||||||
/workbox-google-analytics@7.0.0:
|
/workbox-google-analytics@7.0.0:
|
||||||
resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==}
|
resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==}
|
||||||
|
deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-background-sync: 7.0.0
|
workbox-background-sync: 7.0.0
|
||||||
workbox-core: 7.0.0
|
workbox-core: 7.0.0
|
||||||
|
|
BIN
public/qpdf.wasm
BIN
public/qpdf.wasm
Binary file not shown.
2
src/libs/qpdf/qpdf.d.ts
vendored
2
src/libs/qpdf/qpdf.d.ts
vendored
|
@ -1,2 +0,0 @@
|
||||||
const createModule: EmscriptenModuleFactory;
|
|
||||||
export default createModule;
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { Base64 } from 'js-base64';
|
import { Base64 } from 'js-base64';
|
||||||
import createQPDFModule from '@/libs/qpdf/qpdf';
|
import createQPDFModule from 'qpdf-wasm-esm-embedded';
|
||||||
import { useDownloadFileFromBase64Refs } from '@/composable/downloadBase64';
|
import { useDownloadFileFromBase64Refs } from '@/composable/downloadBase64';
|
||||||
|
|
||||||
const status = ref<'idle' | 'done' | 'error' | 'processing'>('idle');
|
const status = ref<'idle' | 'done' | 'error' | 'processing'>('idle');
|
||||||
|
@ -19,6 +19,7 @@ const userPassword = ref('');
|
||||||
const ownerPassword = ref('');
|
const ownerPassword = ref('');
|
||||||
|
|
||||||
const base64OutputPDF = ref('');
|
const base64OutputPDF = ref('');
|
||||||
|
const logs = ref<string[]>([]);
|
||||||
const fileName = ref('');
|
const fileName = ref('');
|
||||||
const fileExtension = ref('pdf');
|
const fileExtension = ref('pdf');
|
||||||
const { download } = useDownloadFileFromBase64Refs(
|
const { download } = useDownloadFileFromBase64Refs(
|
||||||
|
@ -42,6 +43,7 @@ async function onProcessClicked() {
|
||||||
status.value = 'processing';
|
status.value = 'processing';
|
||||||
try {
|
try {
|
||||||
const options = [
|
const options = [
|
||||||
|
'--verbose',
|
||||||
'--encrypt',
|
'--encrypt',
|
||||||
];
|
];
|
||||||
options.push(`${userPassword.value}`);
|
options.push(`${userPassword.value}`);
|
||||||
|
@ -75,7 +77,15 @@ async function onProcessClicked() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function callMainWithInOutPdf(data: ArrayBuffer, args: string[], expected_exitcode: number) {
|
async function callMainWithInOutPdf(data: ArrayBuffer, args: string[], expected_exitcode: number) {
|
||||||
const mod = await createQPDFModule();
|
logs.value = [];
|
||||||
|
const mod = await createQPDFModule({
|
||||||
|
print(text: string) {
|
||||||
|
logs.value.push(text);
|
||||||
|
},
|
||||||
|
printErr(text: string) {
|
||||||
|
logs.value.push(text);
|
||||||
|
},
|
||||||
|
});
|
||||||
mod.FS.writeFile('in.pdf', new Uint8Array(data));
|
mod.FS.writeFile('in.pdf', new Uint8Array(data));
|
||||||
const ret = mod.callMain(args);
|
const ret = mod.callMain(args);
|
||||||
if (expected_exitcode !== ret) {
|
if (expected_exitcode !== ret) {
|
||||||
|
@ -190,5 +200,9 @@ const modificationRestrictionOptions = [
|
||||||
size="small"
|
size="small"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<c-card title="Logs">
|
||||||
|
<pre>{{ logs.join('\n') }}</pre>
|
||||||
|
</c-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue