@jjlmoya/utils-converters 1.22.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/index.ts +4 -0
- package/src/entries.ts +4 -1
- package/src/index.ts +3 -0
- package/src/shared/ImageToPdfConverter.astro +80 -0
- package/src/shared/image-to-pdf/controller.ts +173 -0
- package/src/shared/image-to-pdf/dom-views.ts +55 -0
- package/src/shared/image-to-pdf/evaluator.ts +18 -0
- package/src/shared/image-to-pdf/logic.test.ts +29 -0
- package/src/shared/image-to-pdf/logic.ts +214 -0
- package/src/shared/image-to-pdf/storage.ts +36 -0
- package/src/shared/image-to-pdf/ui.ts +39 -0
- package/src/shared/image-to-pdf.css +394 -0
- package/src/tests/i18n_coverage.test.ts +2 -3
- package/src/tests/locale_completeness.test.ts +2 -3
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/spanish_leakage.test.ts +5 -1
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/jpgToPdf/bibliography.astro +11 -0
- package/src/tool/jpgToPdf/bibliography.ts +12 -0
- package/src/tool/jpgToPdf/component.astro +10 -0
- package/src/tool/jpgToPdf/entry.ts +26 -0
- package/src/tool/jpgToPdf/i18n/de.ts +111 -0
- package/src/tool/jpgToPdf/i18n/en.ts +37 -0
- package/src/tool/jpgToPdf/i18n/es.ts +111 -0
- package/src/tool/jpgToPdf/i18n/fr.ts +111 -0
- package/src/tool/jpgToPdf/i18n/id.ts +111 -0
- package/src/tool/jpgToPdf/i18n/it.ts +111 -0
- package/src/tool/jpgToPdf/i18n/ja.ts +111 -0
- package/src/tool/jpgToPdf/i18n/ko.ts +111 -0
- package/src/tool/jpgToPdf/i18n/nl.ts +111 -0
- package/src/tool/jpgToPdf/i18n/pl.ts +111 -0
- package/src/tool/jpgToPdf/i18n/pt.ts +111 -0
- package/src/tool/jpgToPdf/i18n/ru.ts +111 -0
- package/src/tool/jpgToPdf/i18n/sv.ts +111 -0
- package/src/tool/jpgToPdf/i18n/tr.ts +111 -0
- package/src/tool/jpgToPdf/i18n/zh.ts +111 -0
- package/src/tool/jpgToPdf/index.ts +11 -0
- package/src/tool/jpgToPdf/jpg-to-pdf-converter.css +3 -0
- package/src/tool/jpgToPdf/seo.astro +12 -0
- package/src/tool/pngAJpg/i18n/ko.ts +1 -1
- package/src/tool/pngAJpg/i18n/ru.ts +1 -1
- package/src/tool/pngAJpg/i18n/zh.ts +1 -1
- package/src/tool/pngToPdf/bibliography.astro +11 -0
- package/src/tool/pngToPdf/bibliography.ts +12 -0
- package/src/tool/pngToPdf/component.astro +10 -0
- package/src/tool/pngToPdf/entry.ts +26 -0
- package/src/tool/pngToPdf/i18n/de.ts +111 -0
- package/src/tool/pngToPdf/i18n/en.ts +37 -0
- package/src/tool/pngToPdf/i18n/es.ts +111 -0
- package/src/tool/pngToPdf/i18n/fr.ts +111 -0
- package/src/tool/pngToPdf/i18n/id.ts +111 -0
- package/src/tool/pngToPdf/i18n/it.ts +111 -0
- package/src/tool/pngToPdf/i18n/ja.ts +111 -0
- package/src/tool/pngToPdf/i18n/ko.ts +111 -0
- package/src/tool/pngToPdf/i18n/nl.ts +111 -0
- package/src/tool/pngToPdf/i18n/pl.ts +111 -0
- package/src/tool/pngToPdf/i18n/pt.ts +111 -0
- package/src/tool/pngToPdf/i18n/ru.ts +111 -0
- package/src/tool/pngToPdf/i18n/sv.ts +111 -0
- package/src/tool/pngToPdf/i18n/tr.ts +111 -0
- package/src/tool/pngToPdf/i18n/zh.ts +111 -0
- package/src/tool/pngToPdf/index.ts +11 -0
- package/src/tool/pngToPdf/png-to-pdf-converter.css +3 -0
- package/src/tool/pngToPdf/seo.astro +12 -0
- package/src/tool/webpToPdf/bibliography.astro +11 -0
- package/src/tool/webpToPdf/bibliography.ts +12 -0
- package/src/tool/webpToPdf/component.astro +10 -0
- package/src/tool/webpToPdf/entry.ts +26 -0
- package/src/tool/webpToPdf/i18n/de.ts +111 -0
- package/src/tool/webpToPdf/i18n/en.ts +37 -0
- package/src/tool/webpToPdf/i18n/es.ts +111 -0
- package/src/tool/webpToPdf/i18n/fr.ts +111 -0
- package/src/tool/webpToPdf/i18n/id.ts +111 -0
- package/src/tool/webpToPdf/i18n/it.ts +111 -0
- package/src/tool/webpToPdf/i18n/ja.ts +111 -0
- package/src/tool/webpToPdf/i18n/ko.ts +111 -0
- package/src/tool/webpToPdf/i18n/nl.ts +111 -0
- package/src/tool/webpToPdf/i18n/pl.ts +111 -0
- package/src/tool/webpToPdf/i18n/pt.ts +111 -0
- package/src/tool/webpToPdf/i18n/ru.ts +111 -0
- package/src/tool/webpToPdf/i18n/sv.ts +111 -0
- package/src/tool/webpToPdf/i18n/tr.ts +111 -0
- package/src/tool/webpToPdf/i18n/zh.ts +111 -0
- package/src/tool/webpToPdf/index.ts +11 -0
- package/src/tool/webpToPdf/seo.astro +12 -0
- package/src/tool/webpToPdf/webp-to-pdf-converter.css +3 -0
- package/src/tools.ts +9 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { PngToPdfLocaleContent } from '../entry';
|
|
4
|
+
import type { ImageToPdfUI } from '../../../shared/image-to-pdf/ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'png-to-pdf-converter';
|
|
7
|
+
const title = "PNG 转 PDF 转换器 Tool";
|
|
8
|
+
const description = "在浏览器中将 PNG 图片转换为排版整齐的 PDF。无需上传文件,轻松选择纸张大小、方向及页边距。";
|
|
9
|
+
|
|
10
|
+
const ui: ImageToPdfUI = {
|
|
11
|
+
formatLabel: 'PNG',
|
|
12
|
+
dropTitle: "根据 PNG 图片生成 PDF",
|
|
13
|
+
dropText: "拖放 PNG 文件至此处。您排列的顺序将直接作为 PDF 的页面顺序。",
|
|
14
|
+
selectFiles: "选择 PNG 文件",
|
|
15
|
+
privacyNote: "所有转换均在本地浏览器完成,您的图片绝不会被上传。",
|
|
16
|
+
optionsTitle: "打印页面",
|
|
17
|
+
settingsTitle: "纸张设置",
|
|
18
|
+
pageSizeLabel: "纸张大小",
|
|
19
|
+
a4: 'A4',
|
|
20
|
+
letter: 'Letter',
|
|
21
|
+
orientationLabel: "方向",
|
|
22
|
+
portrait: "纵向",
|
|
23
|
+
landscape: "横向",
|
|
24
|
+
marginLabel: "页边距",
|
|
25
|
+
pagesTitle: "页面列表",
|
|
26
|
+
reorderHint: "导出前可调整页面先后顺序。",
|
|
27
|
+
page: "页",
|
|
28
|
+
pageSingular: "页",
|
|
29
|
+
pagePlural: "页",
|
|
30
|
+
moveUp: "上移",
|
|
31
|
+
moveDown: "下移",
|
|
32
|
+
remove: "删除",
|
|
33
|
+
emptyPages: "您选择的图片将显示在这里。",
|
|
34
|
+
createPdf: "生成 PDF",
|
|
35
|
+
reset: "重新开始",
|
|
36
|
+
ready: "已准备好接收图片",
|
|
37
|
+
processing: "正在准备图片",
|
|
38
|
+
error: "无法读取该图片",
|
|
39
|
+
downloadPdf: "下载 PDF",
|
|
40
|
+
building: "正在生成 PDF",
|
|
41
|
+
pdfReady: "您的 PDF 已就绪",
|
|
42
|
+
invalidFile: "本工具仅支持 PNG 和 JPEG 格式文件。",
|
|
43
|
+
bibliographyTitle: "参考文献",
|
|
44
|
+
faqTitle: "常见问题",
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faq: PngToPdfLocaleContent['faq'] = [
|
|
48
|
+
{
|
|
49
|
+
"question": "可以将多张 PNG 图片合并为一个 PDF 吗?",
|
|
50
|
+
"answer": "可以。只需选择需要的 PNG 文件,调整好页面先后顺序,即可导出一份完整的 PDF 文档。"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"question": "我的图片会被上传到服务器吗?",
|
|
54
|
+
"answer": "不会。所有的转换过程均在您的本地浏览器中完成。"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"question": "可以选择 A4 或 Letter 纸张规格吗?",
|
|
58
|
+
"answer": "可以。您可以自由选择 A4 或 Letter 尺寸,并调整横纵方向与页边距。"
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const howTo: PngToPdfLocaleContent['howTo'] = [
|
|
63
|
+
{
|
|
64
|
+
"name": "选择 PNG 图片",
|
|
65
|
+
"text": "将 PNG 文件拖入区域或从设备中选择。"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "排序并设置纸张",
|
|
69
|
+
"text": "调整图片先后顺序,并设置 A4/Letter 纸张、方向及页边距。"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "生成并下载 PDF",
|
|
73
|
+
"text": "点击 '生成 PDF',就绪后保存文档到本地。"
|
|
74
|
+
}
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const seo: PngToPdfLocaleContent['seo'] = [
|
|
78
|
+
{
|
|
79
|
+
"type": "title",
|
|
80
|
+
"text": "将 PNG 图片快速合并为便于打印的 PDF 文档",
|
|
81
|
+
"level": 2
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "paragraph",
|
|
85
|
+
"html": "这款 PNG 转 PDF 转换器能够帮您把多张照片或扫描件整合成一个结构清晰的 PDF 文件。支持自由调整排序与页面规格。"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "title",
|
|
89
|
+
"text": "制作精美 PDF 的小技巧",
|
|
90
|
+
"level": 3
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "list",
|
|
94
|
+
"icon": "mdi:check-circle",
|
|
95
|
+
"items": [
|
|
96
|
+
"按逻辑调整图片顺次,确保封面或重要照片在最前。",
|
|
97
|
+
"根据图片宽高比例选择纵向或横向版式。",
|
|
98
|
+
"适当增加页边距,防止家庭打印机打印时切边。"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "tip",
|
|
103
|
+
"title": "隐私安全无忧",
|
|
104
|
+
"html": "所有文件转换均在本地浏览器中完成,绝不会上传至任何第三方服务器。"
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
export const content: PngToPdfLocaleContent = {
|
|
109
|
+
slug, title, description, ui, seo, faq, bibliography, howTo,
|
|
110
|
+
schemas: generateSchemas({ title, description, inLanguage: 'zh', faq, howTo }),
|
|
111
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../../types';
|
|
2
|
+
import { pngToPdf } from './entry';
|
|
3
|
+
|
|
4
|
+
export * from './entry';
|
|
5
|
+
|
|
6
|
+
export const PNG_TO_PDF_TOOL: ToolDefinition = {
|
|
7
|
+
entry: pngToPdf,
|
|
8
|
+
Component: () => import('./component.astro'),
|
|
9
|
+
SEOComponent: () => import('./seo.astro'),
|
|
10
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
11
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { pngToPdf } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props { locale?: KnownLocale }
|
|
7
|
+
const { locale = 'en' } = Astro.props;
|
|
8
|
+
const content = await pngToPdf.i18n[locale]?.();
|
|
9
|
+
if (!content) return null;
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
{content.seo.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { webpToPdf } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props { locale?: KnownLocale }
|
|
7
|
+
const { locale = 'en' } = Astro.props;
|
|
8
|
+
const content = await webpToPdf.i18n[locale]?.();
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
{content && <SharedBibliography links={content.bibliography} />}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BibliographyEntry } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const bibliography: BibliographyEntry[] = [
|
|
4
|
+
{
|
|
5
|
+
name: 'Adobe PDF Reference 1.7',
|
|
6
|
+
url: 'https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfs/pdf_reference_1-7.pdf',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'WebP Documentation',
|
|
10
|
+
url: 'https://developers.google.com/speed/webp/docs/',
|
|
11
|
+
},
|
|
12
|
+
];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
import '../../shared/image-to-pdf.css';
|
|
3
|
+
import ImageToPdfConverter from '../../shared/ImageToPdfConverter.astro';
|
|
4
|
+
import type { ImageToPdfUI } from '../../shared/image-to-pdf/ui';
|
|
5
|
+
|
|
6
|
+
interface Props { ui: ImageToPdfUI }
|
|
7
|
+
const { ui } = Astro.props;
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<ImageToPdfConverter ui={ui} sourceFormat="webp" />
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ConvertersToolEntry, ToolLocaleContent } from '../../types';
|
|
2
|
+
import type { ImageToPdfUI } from '../../shared/image-to-pdf/ui';
|
|
3
|
+
|
|
4
|
+
export type WebpToPdfLocaleContent = ToolLocaleContent<ImageToPdfUI>;
|
|
5
|
+
|
|
6
|
+
export const webpToPdf: ConvertersToolEntry<ImageToPdfUI> = {
|
|
7
|
+
id: 'webp-to-pdf',
|
|
8
|
+
icons: { bg: 'mdi:file-image-marker', fg: 'mdi:file-pdf-box' },
|
|
9
|
+
i18n: {
|
|
10
|
+
de: () => import('./i18n/de').then((module) => module.content),
|
|
11
|
+
en: () => import('./i18n/en').then((module) => module.content),
|
|
12
|
+
es: () => import('./i18n/es').then((module) => module.content),
|
|
13
|
+
fr: () => import('./i18n/fr').then((module) => module.content),
|
|
14
|
+
id: () => import('./i18n/id').then((module) => module.content),
|
|
15
|
+
it: () => import('./i18n/it').then((module) => module.content),
|
|
16
|
+
ja: () => import('./i18n/ja').then((module) => module.content),
|
|
17
|
+
ko: () => import('./i18n/ko').then((module) => module.content),
|
|
18
|
+
nl: () => import('./i18n/nl').then((module) => module.content),
|
|
19
|
+
pl: () => import('./i18n/pl').then((module) => module.content),
|
|
20
|
+
pt: () => import('./i18n/pt').then((module) => module.content),
|
|
21
|
+
ru: () => import('./i18n/ru').then((module) => module.content),
|
|
22
|
+
sv: () => import('./i18n/sv').then((module) => module.content),
|
|
23
|
+
tr: () => import('./i18n/tr').then((module) => module.content),
|
|
24
|
+
zh: () => import('./i18n/zh').then((module) => module.content),
|
|
25
|
+
},
|
|
26
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { WebpToPdfLocaleContent } from '../entry';
|
|
4
|
+
import type { ImageToPdfUI } from '../../../shared/image-to-pdf/ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'jpg-in-pdf-umwandeln';
|
|
7
|
+
const title = "WebP in PDF Umwandler";
|
|
8
|
+
const description = "Wandeln Sie WebP-Bilder direkt im Browser in ein geordnetes PDF um. Wählen Sie Papierformat, Ausrichtung und Ränder ohne Upload.";
|
|
9
|
+
|
|
10
|
+
const ui: ImageToPdfUI = {
|
|
11
|
+
formatLabel: 'WebP',
|
|
12
|
+
dropTitle: "PDF aus WebP-Bildern erstellen",
|
|
13
|
+
dropText: "Ziehen Sie WebP-Dateien hierher. Die Reihenfolge bestimmt die Seitennummerierung.",
|
|
14
|
+
selectFiles: "WebP-Dateien auswählen",
|
|
15
|
+
privacyNote: "Alles bleibt im Browser. Ihre Bilder werden nicht hochgeladen.",
|
|
16
|
+
optionsTitle: "Druckblatt",
|
|
17
|
+
settingsTitle: "Papiereinstellungen",
|
|
18
|
+
pageSizeLabel: "Papierformat",
|
|
19
|
+
a4: 'A4',
|
|
20
|
+
letter: 'Letter',
|
|
21
|
+
orientationLabel: "Ausrichtung",
|
|
22
|
+
portrait: "Hochformat",
|
|
23
|
+
landscape: "Querformat",
|
|
24
|
+
marginLabel: "Ränder",
|
|
25
|
+
pagesTitle: "Seiten",
|
|
26
|
+
reorderHint: "Seiten vor dem Export nach oben oder unten verschieben.",
|
|
27
|
+
page: "Seite",
|
|
28
|
+
pageSingular: "Seite",
|
|
29
|
+
pagePlural: "Seiten",
|
|
30
|
+
moveUp: "Nach oben",
|
|
31
|
+
moveDown: "Nach unten",
|
|
32
|
+
remove: "Entfernen",
|
|
33
|
+
emptyPages: "Ihre ausgewählten Bilder erscheinen hier.",
|
|
34
|
+
createPdf: "PDF erstellen",
|
|
35
|
+
reset: "Neu starten",
|
|
36
|
+
ready: "Bereit für Ihre Bilder",
|
|
37
|
+
processing: "Bild wird vorbereitet",
|
|
38
|
+
error: "Bild konnte nicht gelesen werden",
|
|
39
|
+
downloadPdf: "PDF herunterladen",
|
|
40
|
+
building: "PDF wird erstellt",
|
|
41
|
+
pdfReady: "Ihr PDF ist bereit",
|
|
42
|
+
invalidFile: "Dieses Tool akzeptiert nur WebP- und JPEG-Dateien.",
|
|
43
|
+
bibliographyTitle: "Referenzen",
|
|
44
|
+
faqTitle: "Häufig gestellte Fragen",
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faq: WebpToPdfLocaleContent['faq'] = [
|
|
48
|
+
{
|
|
49
|
+
"question": "Kann ich mehrere WebP-Bilder in ein PDF zusammenfügen?",
|
|
50
|
+
"answer": "Ja. Wählen Sie beliebig viele WebP-Dateien aus, ordnen Sie die Seiten an und exportieren Sie ein einzelnes PDF."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"question": "Werden meine Bilder auf einen Server hochgeladen?",
|
|
54
|
+
"answer": "Nein. Alle Bilder werden lokal im Browser verarbeitet und verlassen Ihr Gerät nicht."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"question": "Kann ich das Papierformat wählen?",
|
|
58
|
+
"answer": "Ja. Sie können A4 oder Letter sowie Hoch- oder Querformat und Ränder festlegen."
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const howTo: WebpToPdfLocaleContent['howTo'] = [
|
|
63
|
+
{
|
|
64
|
+
"name": "WebP-Bilder auswählen",
|
|
65
|
+
"text": "Ziehen Sie Ihre WebP-Dateien in den Arbeitsbereich oder wählen Sie diese über den Dateidialog aus."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "Seiten anordnen",
|
|
69
|
+
"text": "Verschieben Sie die Seiten in die gewünschte Reihenfolge und legen Sie Papierformat und Ränder fest."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "PDF erstellen",
|
|
73
|
+
"text": "Klicken Sie auf PDF erstellen und laden Sie das Dokument herunter."
|
|
74
|
+
}
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const seo: WebpToPdfLocaleContent['seo'] = [
|
|
78
|
+
{
|
|
79
|
+
"type": "title",
|
|
80
|
+
"text": "WebP-Bilder in ein druckfähiges PDF verwandeln",
|
|
81
|
+
"level": 2
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "paragraph",
|
|
85
|
+
"html": "Dieser WebP-in-PDF-Umwandler ermöglicht es Ihnen, mehrere Fotos oder Scans in ein einziges, übersichtliches PDF-Dokument zusammenzufügen. Passen Sie die Reihenfolge und die Papiereinstellungen individuell an."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "title",
|
|
89
|
+
"text": "Saubere Dokumente ohne Qualitätsverlust",
|
|
90
|
+
"level": 3
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "list",
|
|
94
|
+
"icon": "mdi:check-circle",
|
|
95
|
+
"items": [
|
|
96
|
+
"Sortieren Sie Ihre Bilder für eine perfekte Seitenabfolge.",
|
|
97
|
+
"Wählen Sie das Hochformat für Standarddokumente oder Querformat für Breitmotive.",
|
|
98
|
+
"Erhöhen Sie die Ränder für einen optimalen Ausdruck auf Heimdruckern."
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "tip",
|
|
103
|
+
"title": "Maximale Privatsphäre garantiert",
|
|
104
|
+
"html": "Da die Konvertierung komplett im Browser stattfindet, bleiben vertrauliche Dokumente und persönliche Fotos geschützt."
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
export const content: WebpToPdfLocaleContent = {
|
|
109
|
+
slug, title, description, ui, seo, faq, bibliography, howTo,
|
|
110
|
+
schemas: generateSchemas({ title, description, inLanguage: 'de', faq, howTo }),
|
|
111
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { WebpToPdfLocaleContent } from '../entry';
|
|
4
|
+
import type { ImageToPdfUI } from '../../../shared/image-to-pdf/ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'webp-to-pdf-converter';
|
|
7
|
+
const title = 'WebP to PDF Converter';
|
|
8
|
+
const description = 'Turn WebP images into an ordered PDF in your browser. Set paper size, orientation and margins without uploading files.';
|
|
9
|
+
|
|
10
|
+
const ui: ImageToPdfUI = {
|
|
11
|
+
formatLabel: 'WebP', dropTitle: 'Build a PDF from your WebP images', dropText: 'Drop one or more WebP files here. The order you choose becomes the page order.', selectFiles: 'Select WebP files', privacyNote: 'Everything stays in this browser. Your images are never uploaded.', optionsTitle: 'Print sheet', settingsTitle: 'Paper settings', pageSizeLabel: 'Paper size', a4: 'A4', letter: 'Letter', orientationLabel: 'Orientation', portrait: 'Portrait', landscape: 'Landscape', marginLabel: 'Margins', pagesTitle: 'Pages', reorderHint: 'Move pages up or down before exporting.', page: 'Page', pageSingular: 'page', pagePlural: 'pages', moveUp: 'Move up', moveDown: 'Move down', remove: 'Remove', emptyPages: 'Your selected images will appear here.', createPdf: 'Create PDF', reset: 'Start over', ready: 'Ready for your images', processing: 'Preparing image', error: 'Could not read this WebP', downloadPdf: 'Download PDF', building: 'Building PDF', pdfReady: 'Your PDF is ready', invalidFile: 'This tool accepts WebP files only.', bibliographyTitle: 'References', faqTitle: 'Frequently asked questions',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const faq: WebpToPdfLocaleContent['faq'] = [
|
|
15
|
+
{ question: 'Can I turn a WebP gallery into one PDF?', answer: 'Yes. Select the WebP images together, arrange their pages, and create one PDF for download.' },
|
|
16
|
+
{ question: 'Does converting WebP to PDF upload my images?', answer: 'No. WebP files are decoded and composed locally in your browser.' },
|
|
17
|
+
{ question: 'Which paper options are available?', answer: 'You can choose A4 or Letter paper, switch between portrait and landscape, and set a margin from 0 to 32 millimetres.' },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const howTo: WebpToPdfLocaleContent['howTo'] = [
|
|
21
|
+
{ name: 'Choose WebP files', text: 'Drop your WebP images into the tool or select them from your device.' },
|
|
22
|
+
{ name: 'Set the document order', text: 'Use the page controls to move images up or down until the PDF reads correctly.' },
|
|
23
|
+
{ name: 'Set paper and download', text: 'Choose paper size, orientation and margins, create the PDF, and download it locally.' },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
const seo: WebpToPdfLocaleContent['seo'] = [
|
|
27
|
+
{ type: 'title', text: 'Turn a WebP image set into a printable PDF', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'WebP is convenient for the web, but a PDF is easier to print, archive or send as a fixed document. This converter keeps the workflow focused on a selected image sequence and gives you control over the paper before export.' },
|
|
29
|
+
{ type: 'title', text: 'Choose settings for the document you need', level: 3 },
|
|
30
|
+
{ type: 'list', icon: 'mdi:check-circle', items: ['Use portrait for vertical photographs and portrait documents.', 'Use landscape when the WebP files are wider than they are tall.', 'Leave a generous margin for office printers that cannot print to the edge.', 'Check the page order before export because it becomes the final PDF order.'] },
|
|
31
|
+
{ type: 'tip', title: 'A local conversion for private assets', html: 'The browser does the conversion on your device, so WebP assets are not copied to a remote service.' },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
export const content: WebpToPdfLocaleContent = {
|
|
35
|
+
slug, title, description, ui, seo, faq, bibliography, howTo,
|
|
36
|
+
schemas: generateSchemas({ title, description, inLanguage: 'en', faq, howTo }),
|
|
37
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { WebpToPdfLocaleContent } from '../entry';
|
|
4
|
+
import type { ImageToPdfUI } from '../../../shared/image-to-pdf/ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'convertidor-webp-a-pdf';
|
|
7
|
+
const title = "Convertidor de WebP a PDF";
|
|
8
|
+
const description = "Convierte imágenes WebP en un PDF ordenado desde tu navegador. Elige tamaño de papel, orientación y márgenes sin subir archivos.";
|
|
9
|
+
|
|
10
|
+
const ui: ImageToPdfUI = {
|
|
11
|
+
formatLabel: 'WebP',
|
|
12
|
+
dropTitle: "Crea un PDF a partir de tus imágenes WebP",
|
|
13
|
+
dropText: "Arrastra archivos WebP aquí. El orden que elijas será el orden de las páginas.",
|
|
14
|
+
selectFiles: "Seleccionar archivos WebP",
|
|
15
|
+
privacyNote: "Todo se procesa en tu navegador. Tus imágenes nunca se suben.",
|
|
16
|
+
optionsTitle: "Hoja de impresión",
|
|
17
|
+
settingsTitle: "Ajustes de papel",
|
|
18
|
+
pageSizeLabel: "Tamaño de papel",
|
|
19
|
+
a4: 'A4',
|
|
20
|
+
letter: 'Letter',
|
|
21
|
+
orientationLabel: "Orientación",
|
|
22
|
+
portrait: "Vertical",
|
|
23
|
+
landscape: "Horizontal",
|
|
24
|
+
marginLabel: "Márgenes",
|
|
25
|
+
pagesTitle: "Páginas",
|
|
26
|
+
reorderHint: "Mueve las páginas arriba o abajo antes de exportar.",
|
|
27
|
+
page: "Página",
|
|
28
|
+
pageSingular: "página",
|
|
29
|
+
pagePlural: "páginas",
|
|
30
|
+
moveUp: "Subir",
|
|
31
|
+
moveDown: "Bajar",
|
|
32
|
+
remove: "Eliminar",
|
|
33
|
+
emptyPages: "Tus imágenes seleccionadas aparecerán aquí.",
|
|
34
|
+
createPdf: "Crear PDF",
|
|
35
|
+
reset: "Empezar de nuevo",
|
|
36
|
+
ready: "Listo para tus imágenes",
|
|
37
|
+
processing: "Preparando imagen",
|
|
38
|
+
error: "No se pudo leer la imagen",
|
|
39
|
+
downloadPdf: "Descargar PDF",
|
|
40
|
+
building: "Generando PDF",
|
|
41
|
+
pdfReady: "Tu PDF está listo",
|
|
42
|
+
invalidFile: "Esta herramienta solo acepta archivos WebP y JPEG.",
|
|
43
|
+
bibliographyTitle: "Referencias",
|
|
44
|
+
faqTitle: "Preguntas frecuentes",
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faq: WebpToPdfLocaleContent['faq'] = [
|
|
48
|
+
{
|
|
49
|
+
"question": "¿Puedo juntar varias imágenes WebP en un solo PDF?",
|
|
50
|
+
"answer": "Sí. Selecciona los archivos WebP que necesites, ordena las páginas y exporta un único PDF."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"question": "¿Se suben mis imágenes a algún servidor?",
|
|
54
|
+
"answer": "No. Todo el proceso se realiza localmente en tu navegador."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"question": "¿Puedo elegir el tamaño de papel A4 o Carta?",
|
|
58
|
+
"answer": "Sí. Puedes seleccionar A4 o Letter, así como la orientación y los márgenes."
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const howTo: WebpToPdfLocaleContent['howTo'] = [
|
|
63
|
+
{
|
|
64
|
+
"name": "Selecciona las imágenes WebP",
|
|
65
|
+
"text": "Arrastra tus archivos WebP o elígelos desde tu dispositivo."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "Organiza las páginas y el papel",
|
|
69
|
+
"text": "Ordena las imágenes y configura el formato A4/Letter, orientación y márgenes."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "Genera y descarga el PDF",
|
|
73
|
+
"text": "Haz clic en Crear PDF y descarga el archivo resultante."
|
|
74
|
+
}
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const seo: WebpToPdfLocaleContent['seo'] = [
|
|
78
|
+
{
|
|
79
|
+
"type": "title",
|
|
80
|
+
"text": "Crea un documento PDF listo para imprimir desde tus imágenes WebP",
|
|
81
|
+
"level": 2
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "paragraph",
|
|
85
|
+
"html": "Este convertidor de WebP a PDF está pensado para unificar listas de fotos, escaneos o documentos en un solo archivo organizado. Reordena las páginas y ajusta el tipo de papel antes de exportar."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "title",
|
|
89
|
+
"text": "Prepara documentos digitales impecables",
|
|
90
|
+
"level": 3
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "list",
|
|
94
|
+
"icon": "mdi:check-circle",
|
|
95
|
+
"items": [
|
|
96
|
+
"Organiza las páginas para colocar portadas o fotos principales al inicio.",
|
|
97
|
+
"Elige formato vertical u horizontal según la composición de tus imágenes.",
|
|
98
|
+
"Ajusta los márgenes para asegurar una impresión limpia en cualquier impresora."
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "tip",
|
|
103
|
+
"title": "Tus fotos privadas siempre seguras",
|
|
104
|
+
"html": "Al ejecutarse completamente en tu navegador, tus recibos, documentos o fotos personales no se envían a servidores externos."
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
export const content: WebpToPdfLocaleContent = {
|
|
109
|
+
slug, title, description, ui, seo, faq, bibliography, howTo,
|
|
110
|
+
schemas: generateSchemas({ title, description, inLanguage: 'es', faq, howTo }),
|
|
111
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { generateSchemas } from '../../../shared/logic/schemas';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { WebpToPdfLocaleContent } from '../entry';
|
|
4
|
+
import type { ImageToPdfUI } from '../../../shared/image-to-pdf/ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'convertisseur-webp-en-pdf';
|
|
7
|
+
const title = "Convertisseur WebP en PDF";
|
|
8
|
+
const description = "Transformez des images WebP en un PDF ordonné dans votre navigateur. Choisissez le format de papier, l orientation et les marges sans téléverser de fichier.";
|
|
9
|
+
|
|
10
|
+
const ui: ImageToPdfUI = {
|
|
11
|
+
formatLabel: 'WebP',
|
|
12
|
+
dropTitle: "Créez un PDF à partir de vos images WebP",
|
|
13
|
+
dropText: "Déposez des fichiers WebP ici. L ordre choisi sera l ordre des pages.",
|
|
14
|
+
selectFiles: "Sélectionner les fichiers WebP",
|
|
15
|
+
privacyNote: "Tout reste dans le navigateur. Vos images ne sont jamais téléchargées.",
|
|
16
|
+
optionsTitle: "Feuille d impression",
|
|
17
|
+
settingsTitle: "Paramètres du papier",
|
|
18
|
+
pageSizeLabel: "Taille du papier",
|
|
19
|
+
a4: 'A4',
|
|
20
|
+
letter: 'Letter',
|
|
21
|
+
orientationLabel: "Orientation",
|
|
22
|
+
portrait: "Portrait",
|
|
23
|
+
landscape: "Paysage",
|
|
24
|
+
marginLabel: "Marges",
|
|
25
|
+
pagesTitle: "Pages",
|
|
26
|
+
reorderHint: "Déplacez les pages avant l exportation.",
|
|
27
|
+
page: "Page",
|
|
28
|
+
pageSingular: "page",
|
|
29
|
+
pagePlural: "pages",
|
|
30
|
+
moveUp: "Monter",
|
|
31
|
+
moveDown: "Descendre",
|
|
32
|
+
remove: "Supprimer",
|
|
33
|
+
emptyPages: "Vos images sélectionnées apparaîtront ici.",
|
|
34
|
+
createPdf: "Créer le PDF",
|
|
35
|
+
reset: "Recommencer",
|
|
36
|
+
ready: "Prêt pour vos images",
|
|
37
|
+
processing: "Préparation de l image",
|
|
38
|
+
error: "Impossible de lire l image",
|
|
39
|
+
downloadPdf: "Télécharger le PDF",
|
|
40
|
+
building: "Création du PDF",
|
|
41
|
+
pdfReady: "Votre PDF est prêt",
|
|
42
|
+
invalidFile: "Cet outil accepte uniquement les fichiers WebP et JPEG.",
|
|
43
|
+
bibliographyTitle: "Références",
|
|
44
|
+
faqTitle: "Foire aux questions",
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faq: WebpToPdfLocaleContent['faq'] = [
|
|
48
|
+
{
|
|
49
|
+
"question": "Puis-je regrouper plusieurs images WebP dans un seul PDF ?",
|
|
50
|
+
"answer": "Oui. Sélectionnez autant de fichiers WebP que nécessaire, réorganisez les pages et exportez un PDF unique."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"question": "Mes images sont-elles téléversées sur un serveur ?",
|
|
54
|
+
"answer": "Non. La conversion s effectue localement dans votre navigateur."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"question": "Puis-je choisir le format de papier ?",
|
|
58
|
+
"answer": "Oui. Vous pouvez définir le format A4 ou Lettre, l orientation et les marges."
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const howTo: WebpToPdfLocaleContent['howTo'] = [
|
|
63
|
+
{
|
|
64
|
+
"name": "Sélectionnez les images WebP",
|
|
65
|
+
"text": "Glissez vos fichiers WebP ou choisissez-les depuis votre appareil."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "Organisez les pages",
|
|
69
|
+
"text": "Ajustez l ordre des pages, choisissez le format A4/Lettre et les marges."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "Créez et téléchargez",
|
|
73
|
+
"text": "Cliquez sur Créer le PDF puis téléchargez votre document."
|
|
74
|
+
}
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
const seo: WebpToPdfLocaleContent['seo'] = [
|
|
78
|
+
{
|
|
79
|
+
"type": "title",
|
|
80
|
+
"text": "Convertissez vos images WebP en un PDF prêt à imprimer",
|
|
81
|
+
"level": 2
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "paragraph",
|
|
85
|
+
"html": "Ce convertisseur WebP en PDF permet d assembler plusieurs photos ou numérisations dans un seul document fluide. Ajustez la disposition des pages et les marges selon vos besoins."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "title",
|
|
89
|
+
"text": "Un rendu propre et professionnel",
|
|
90
|
+
"level": 3
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "list",
|
|
94
|
+
"icon": "mdi:check-circle",
|
|
95
|
+
"items": [
|
|
96
|
+
"Reclassez facilement vos images avant l exportation.",
|
|
97
|
+
"Choisissez l orientation portrait ou paysage adaptée à vos visuels.",
|
|
98
|
+
"Définissez des marges adaptées à votre imprimante."
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "tip",
|
|
103
|
+
"title": "Confidentialité totale",
|
|
104
|
+
"html": "Le traitement est effectué en local sur votre appareil, garantissant la sécurité de vos fichiers."
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
export const content: WebpToPdfLocaleContent = {
|
|
109
|
+
slug, title, description, ui, seo, faq, bibliography, howTo,
|
|
110
|
+
schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
|
|
111
|
+
};
|