diff --git a/.claude/skills/pptx/scripts/html2pptx.js b/.claude/skills/pptx/scripts/html2pptx.js index 437bf7c..cf31ab2 100644 --- a/.claude/skills/pptx/scripts/html2pptx.js +++ b/.claude/skills/pptx/scripts/html2pptx.js @@ -120,9 +120,21 @@ function validateTextBoxPosition(slideData, bodyDimensions) { // Helper: Add background to slide async function addBackground(slideData, targetSlide, tmpDir) { if (slideData.background.type === 'image' && slideData.background.path) { - let imagePath = slideData.background.path.startsWith('file://') - ? slideData.background.path.replace('file://', '') - : slideData.background.path; + let imagePath = slideData.background.path; + if (imagePath.startsWith('file://')) { + // Use URL to properly handle file:// paths on all platforms + try { + const url = new URL(imagePath); + imagePath = url.pathname; + // On Windows, pathname starts with / before drive letter, remove it + if (process.platform === 'win32' && /^\/[A-Z]:/.test(imagePath)) { + imagePath = imagePath.slice(1); + } + } catch (e) { + // Fallback to simple replace + imagePath = imagePath.replace('file://', ''); + } + } targetSlide.background = { path: imagePath }; } else if (slideData.background.type === 'color' && slideData.background.value) { targetSlide.background = { color: slideData.background.value }; @@ -133,7 +145,21 @@ async function addBackground(slideData, targetSlide, tmpDir) { function addElements(slideData, targetSlide, pres) { for (const el of slideData.elements) { if (el.type === 'image') { - let imagePath = el.src.startsWith('file://') ? el.src.replace('file://', '') : el.src; + let imagePath = el.src; + if (imagePath.startsWith('file://')) { + // Use URL to properly handle file:// paths on all platforms + try { + const url = new URL(imagePath); + imagePath = url.pathname; + // On Windows, pathname starts with / before drive letter, remove it + if (process.platform === 'win32' && /^\/[A-Z]:/.test(imagePath)) { + imagePath = imagePath.slice(1); + } + } catch (e) { + // Fallback to simple replace + imagePath = imagePath.replace('file://', ''); + } + } targetSlide.addImage({ path: imagePath, x: el.position.x, diff --git a/package.json b/package.json index edbcf58..ae74de2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "dependencies": { "playwright": "^1.56.1", - "pptxgenjs": "^4.0.1" + "pptxgenjs": "^4.0.1", + "sharp": "^0.34.5" } } diff --git a/work_chinese/PPT04122025/_build/alimentari_piccolo.html b/work_chinese/PPT04122025/_build/alimentari_piccolo.html index ecd84cb..5def3a4 100644 --- a/work_chinese/PPT04122025/_build/alimentari_piccolo.html +++ b/work_chinese/PPT04122025/_build/alimentari_piccolo.html @@ -56,11 +56,11 @@ .title-container { position: absolute; - top: 95pt; + top: 80pt; left: 50%; transform: translateX(-50%); background: #F8F8F8; - padding: 28pt 45pt; + padding: 24pt 45pt; border-radius: 15pt; box-shadow: 0 8pt 25pt rgba(0, 0, 0, 0.15); border: 3pt solid #D4AF37; @@ -363,7 +363,7 @@ .final-box { position: absolute; - bottom: 62pt; + bottom: 90pt; left: 30pt; right: 30pt; height: 46pt; diff --git a/work_chinese/PPT04122025/_build/generate.js b/work_chinese/PPT04122025/_build/generate.js new file mode 100644 index 0000000..a228c71 --- /dev/null +++ b/work_chinese/PPT04122025/_build/generate.js @@ -0,0 +1,32 @@ +const pptxgen = require('pptxgenjs'); +const html2pptx = require('../../../.claude/skills/pptx/scripts/html2pptx.js'); +const path = require('path'); + +async function generatePresentation() { + console.log('🍝 Génération Alimentari Piccolo PowerPoint...\n'); + + const pptx = new pptxgen(); + pptx.layout = 'LAYOUT_16x9'; + pptx.author = 'Alexis - Xiezuo Course'; + pptx.title = 'Alimentari Piccolo - 意大利餐吧评价'; + pptx.subject = '餐厅评价作业'; + + const htmlFile = path.join(__dirname, 'alimentari_piccolo.html'); + + try { + await html2pptx(htmlFile, pptx, { tmpDir: __dirname }); + + const outputPath = path.join(__dirname, '..', 'Alimentari_Piccolo.pptx'); + await pptx.writeFile({ fileName: outputPath }); + + console.log(`✅ Présentation créée avec succès: ${outputPath}`); + } catch (error) { + console.error('❌ Erreur lors de la génération:', error.message); + if (error.stack) { + console.error(error.stack); + } + process.exit(1); + } +} + +generatePresentation(); diff --git a/work_chinese/PPT04122025/create_alimentari.js b/work_chinese/PPT04122025/create_alimentari.js index 2ec5d28..27740ec 100644 --- a/work_chinese/PPT04122025/create_alimentari.js +++ b/work_chinese/PPT04122025/create_alimentari.js @@ -17,7 +17,7 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide1_title.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Slide 2: Location @@ -25,7 +25,7 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide2_location.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Slide 3: Piadina @@ -33,7 +33,7 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide3_piadina.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Slide 4: Croquettes @@ -41,7 +41,7 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide4_croquettes.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Slide 5: Ambiance @@ -49,7 +49,7 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide5_ambiance.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Slide 6: Menu @@ -57,7 +57,7 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide6_menu.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Slide 7: Credits @@ -65,11 +65,12 @@ async function createPresentation() { await html2pptx( path.join(__dirname, 'slides/slide7_credits.html'), pptx, - { tmpDir: '/tmp' } + { tmpDir: path.join(__dirname, '_build') } ); // Save - const outputFile = 'Alimentari_Piccolo_v3.pptx'; + const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5); + const outputFile = `Alimentari_Piccolo_${timestamp}.pptx`; await pptx.writeFile({ fileName: path.join(__dirname, outputFile) }); console.log('\n✅ 演示文稿创建成功!'); diff --git a/work_chinese/PPT04122025/fix_flags.js b/work_chinese/PPT04122025/fix_flags.js new file mode 100644 index 0000000..0c86795 --- /dev/null +++ b/work_chinese/PPT04122025/fix_flags.js @@ -0,0 +1,58 @@ +const fs = require('fs'); +const path = require('path'); + +const slidesDir = path.join(__dirname, 'slides'); +const files = fs.readdirSync(slidesDir).filter(f => f.endsWith('.html') && f !== 'slide1_title.html'); + +const flagCSSFix = `/* Italian flag diagonal - simple rectangles positioned diagonally */ +.flag-green { + position: absolute; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; + background: #2D5016; + opacity: 0.85; +} + +.flag-white { + position: absolute; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; + background: #F5F5DC; + opacity: 0.85; +} + +.flag-red { + position: absolute; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; + background: #8B1A1A; + opacity: 0.85; +}`; + +files.forEach(file => { + const filePath = path.join(slidesDir, file); + let content = fs.readFileSync(filePath, 'utf8'); + + // Replace the old flag CSS with the new one + content = content.replace( + /\/\* Italian flag diagonal \*\/[\s\S]*?\.flag-red \{[\s\S]*?\}/, + flagCSSFix + ); + + // Remove the flag-diagonal wrapper div in HTML + content = content.replace( + /
\s*
<\/div>\s*
<\/div>\s*
<\/div>\s*<\/div>/, + '
\n
\n
' + ); + + fs.writeFileSync(filePath, content, 'utf8'); + console.log(`✓ Fixed ${file}`); +}); + +console.log(`\n✅ Fixed ${files.length} slides`); diff --git a/work_chinese/PPT04122025/pptx_build/CarteCNNice.jpg b/work_chinese/PPT04122025/pptx_build/CarteCNNice.jpg new file mode 100644 index 0000000..800f4d9 Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/CarteCNNice.jpg differ diff --git a/work_chinese/PPT04122025/pptx_build/CarteENTravers.jpg b/work_chinese/PPT04122025/pptx_build/CarteENTravers.jpg new file mode 100644 index 0000000..4be89df Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/CarteENTravers.jpg differ diff --git a/work_chinese/PPT04122025/pptx_build/InsideResto.jpg b/work_chinese/PPT04122025/pptx_build/InsideResto.jpg new file mode 100644 index 0000000..20681ac Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/InsideResto.jpg differ diff --git a/work_chinese/PPT04122025/pptx_build/LayoutTable.jpg b/work_chinese/PPT04122025/pptx_build/LayoutTable.jpg new file mode 100644 index 0000000..ada3d7c Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/LayoutTable.jpg differ diff --git a/work_chinese/PPT04122025/pptx_build/OutsideResto.jpg b/work_chinese/PPT04122025/pptx_build/OutsideResto.jpg new file mode 100644 index 0000000..766ce24 Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/OutsideResto.jpg differ diff --git a/work_chinese/PPT04122025/pptx_build/croquettes.jpg b/work_chinese/PPT04122025/pptx_build/croquettes.jpg new file mode 100644 index 0000000..0aac7bc Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/croquettes.jpg differ diff --git a/work_chinese/PPT04122025/pptx_build/piadina.jpg b/work_chinese/PPT04122025/pptx_build/piadina.jpg new file mode 100644 index 0000000..638a3aa Binary files /dev/null and b/work_chinese/PPT04122025/pptx_build/piadina.jpg differ diff --git a/work_chinese/PPT04122025/slides/slide1_title.html b/work_chinese/PPT04122025/slides/slide1_title.html index e2bb001..568808b 100644 --- a/work_chinese/PPT04122025/slides/slide1_title.html +++ b/work_chinese/PPT04122025/slides/slide1_title.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -102,47 +88,108 @@ body { letter-spacing: 1pt; } -/* Geometric pattern */ -.pattern { - position: absolute; - bottom: 40pt; - left: 80pt; - width: 60pt; - height: 60pt; - border: 2pt solid #D4AF37; - transform: rotate(45deg); - opacity: 0.3; -} - -.pattern-inner { +/* Chinese character background - 意 (Italy) */ +.chinese-bg { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); - width: 30pt; - height: 30pt; - border: 2pt solid #D4AF37; + z-index: 1; + pointer-events: none; } + +.chinese-bg p { + font-size: 280pt; + font-weight: 900; + color: #2A2A2A; + opacity: 0.08; + font-family: "SimHei", "STHeiti", "Microsoft YaHei", sans-serif; + line-height: 1; + margin: 0; + padding: 0; +} + +/* Geometric pattern - Art Deco Italian style */ +.pattern-grid { + position: absolute; + top: 0; + right: 0; + width: 200pt; + height: 405pt; + opacity: 0.04; + z-index: 2; + overflow: hidden; +} + +.pattern-line { + position: absolute; + background: #D4AF37; + height: 1pt; +} + +.pattern-line-1 { top: 30pt; left: 0; width: 200pt; } +.pattern-line-2 { top: 60pt; left: 0; width: 200pt; } +.pattern-line-3 { top: 90pt; left: 0; width: 200pt; } +.pattern-line-4 { top: 120pt; left: 0; width: 200pt; } +.pattern-line-5 { top: 150pt; left: 0; width: 200pt; } +.pattern-line-6 { top: 180pt; left: 0; width: 200pt; } +.pattern-line-7 { top: 210pt; left: 0; width: 200pt; } +.pattern-line-8 { top: 240pt; left: 0; width: 200pt; } +.pattern-line-9 { top: 270pt; left: 0; width: 200pt; } +.pattern-line-10 { top: 300pt; left: 0; width: 200pt; } +.pattern-line-11 { top: 330pt; left: 0; width: 200pt; } +.pattern-line-12 { top: 360pt; left: 0; width: 200pt; } + +.pattern-box { + position: absolute; + border: 1pt solid #D4AF37; +} + +.pattern-box-1 { top: 40pt; right: 20pt; width: 30pt; height: 30pt; } +.pattern-box-2 { top: 100pt; right: 60pt; width: 25pt; height: 25pt; } +.pattern-box-3 { top: 160pt; right: 30pt; width: 35pt; height: 35pt; } +.pattern-box-4 { top: 220pt; right: 70pt; width: 28pt; height: 28pt; } +.pattern-box-5 { top: 280pt; right: 45pt; width: 32pt; height: 32pt; } +.pattern-box-6 { top: 340pt; right: 25pt; width: 30pt; height: 30pt; }
-
-
-
-
+ +

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+

ALIMENTARI
PICCOLO

意大利餐吧 · 番禺路

- -
-
-
diff --git a/work_chinese/PPT04122025/slides/slide2_ambiance.html b/work_chinese/PPT04122025/slides/slide2_ambiance.html index 60df415..05f5e36 100644 --- a/work_chinese/PPT04122025/slides/slide2_ambiance.html +++ b/work_chinese/PPT04122025/slides/slide2_ambiance.html @@ -19,43 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - transform: rotate(-45deg); - overflow: hidden; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; - background: #8B9B83; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; + background: #2D5016; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; - background: #FFFFFF; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; + background: #F5F5DC; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; - background: #B8867D; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; + background: #8B1A1A; + opacity: 0.85; } /* Photo grid */ @@ -118,21 +110,19 @@ body {
-
-
-
-
-
+
+
+
- Outside + Outside
- Inside + Inside
- Table + Table
diff --git a/work_chinese/PPT04122025/slides/slide2_location.html b/work_chinese/PPT04122025/slides/slide2_location.html index 50b5127..dd83afe 100644 --- a/work_chinese/PPT04122025/slides/slide2_location.html +++ b/work_chinese/PPT04122025/slides/slide2_location.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -131,16 +117,14 @@ body {
-
-
-
-
-
+
+
+
- Outside + Outside
diff --git a/work_chinese/PPT04122025/slides/slide3_piadina.html b/work_chinese/PPT04122025/slides/slide3_piadina.html index 1237d54..93b9b9c 100644 --- a/work_chinese/PPT04122025/slides/slide3_piadina.html +++ b/work_chinese/PPT04122025/slides/slide3_piadina.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -147,16 +133,14 @@ body {
-
-
-
-
-
+
+
+
- Piadina + Piadina
diff --git a/work_chinese/PPT04122025/slides/slide4_croquettes.html b/work_chinese/PPT04122025/slides/slide4_croquettes.html index 663cf42..12bc669 100644 --- a/work_chinese/PPT04122025/slides/slide4_croquettes.html +++ b/work_chinese/PPT04122025/slides/slide4_croquettes.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -147,16 +133,14 @@ body {
-
-
-
-
-
+
+
+
- Croquettes + Croquettes
diff --git a/work_chinese/PPT04122025/slides/slide5_ambiance.html b/work_chinese/PPT04122025/slides/slide5_ambiance.html index 0e04627..2faaab0 100644 --- a/work_chinese/PPT04122025/slides/slide5_ambiance.html +++ b/work_chinese/PPT04122025/slides/slide5_ambiance.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -151,20 +137,18 @@ body {
-
-
-
-
-
+
+
+
- Inside + Inside
- Table + Table
diff --git a/work_chinese/PPT04122025/slides/slide5_conclusion.html b/work_chinese/PPT04122025/slides/slide5_conclusion.html index 81e8bba..dcdefb8 100644 --- a/work_chinese/PPT04122025/slides/slide5_conclusion.html +++ b/work_chinese/PPT04122025/slides/slide5_conclusion.html @@ -19,43 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - transform: rotate(-45deg); - overflow: hidden; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; - background: #8B9B83; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; + background: #2D5016; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; - background: #FFFFFF; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; + background: #F5F5DC; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; - background: #B8867D; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; + background: #8B1A1A; + opacity: 0.85; } /* Menu photos */ @@ -129,18 +121,16 @@ body {
-
-
-
-
-
+
+
+
diff --git a/work_chinese/PPT04122025/slides/slide6_menu.html b/work_chinese/PPT04122025/slides/slide6_menu.html index 72887d3..5f23ef7 100644 --- a/work_chinese/PPT04122025/slides/slide6_menu.html +++ b/work_chinese/PPT04122025/slides/slide6_menu.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -128,11 +114,9 @@ body {
-
-
-
-
-
+
+
+
@@ -141,7 +125,7 @@ body {
diff --git a/work_chinese/PPT04122025/slides/slide7_credits.html b/work_chinese/PPT04122025/slides/slide7_credits.html index 4107fd3..27a8a8b 100644 --- a/work_chinese/PPT04122025/slides/slide7_credits.html +++ b/work_chinese/PPT04122025/slides/slide7_credits.html @@ -19,49 +19,35 @@ body { position: relative; } -/* Italian flag diagonal */ -.flag-diagonal { - position: absolute; - top: -20pt; - left: -20pt; - width: 120pt; - height: 120pt; - overflow: hidden; - opacity: 0.8; - z-index: 10; -} - +/* Italian flag diagonal - simple rectangles positioned diagonally */ .flag-green { position: absolute; - top: 0; - left: 0; - width: 33.33%; - height: 100%; + top: 15pt; + left: 15pt; + width: 45pt; + height: 12pt; background: #2D5016; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-white { position: absolute; - top: 0; - left: 33.33%; - width: 33.33%; - height: 100%; + top: 27pt; + left: 27pt; + width: 45pt; + height: 12pt; background: #F5F5DC; - transform: rotate(-45deg); - transform-origin: top left; + opacity: 0.85; } .flag-red { position: absolute; - top: 0; - right: 0; - width: 33.33%; - height: 100%; + top: 39pt; + left: 39pt; + width: 45pt; + height: 12pt; background: #8B1A1A; - transform: rotate(-45deg); - transform-origin: top right; + opacity: 0.85; } /* Signature gold bar */ @@ -127,11 +113,9 @@ body {
-
-
-
-
-
+
+
+
diff --git a/work_chinese/PPT04122025/slides_backup/slide1_title.html b/work_chinese/PPT04122025/slides_backup/slide1_title.html new file mode 100644 index 0000000..b0082d1 --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide1_title.html @@ -0,0 +1,130 @@ + + + + + + +
+
+
+
+ +
+ +
+

ALIMENTARI
PICCOLO

+

意大利餐吧 · 番禺路

+
+ +
+
+
+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide2_ambiance.html b/work_chinese/PPT04122025/slides_backup/slide2_ambiance.html new file mode 100644 index 0000000..05f5e36 --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide2_ambiance.html @@ -0,0 +1,145 @@ + + + + + + +
+
+
+
+ +
+
+ Outside +
+
+ Inside +
+
+ Table +
+
+ +
+
+

📍

+

番禺路390号

+
+
+

+

4.4/5

+
+
+

💰

+

¥136/人

+
+
+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide2_location.html b/work_chinese/PPT04122025/slides_backup/slide2_location.html new file mode 100644 index 0000000..dd83afe --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide2_location.html @@ -0,0 +1,146 @@ + + + + + + +
+
+
+
+ +
+ +
+ Outside +
+ +
+
+

位置

+

番禺路390号

+
+
+

评分

+

4.4★

+
+
+

价格

+

¥136

+
+
+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide3_piadina.html b/work_chinese/PPT04122025/slides_backup/slide3_piadina.html new file mode 100644 index 0000000..93b9b9c --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide3_piadina.html @@ -0,0 +1,163 @@ + + + + + + +
+
+
+
+ +
+ +
+ Piadina +
+ +
+

PIADINA

+

意式皮亚迪纳

+
+

现烤薄饼

+
+
+

新鲜蔬菜

+
+
+

意式火腿

+
+
+ +

¥65-75

+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide4_croquettes.html b/work_chinese/PPT04122025/slides_backup/slide4_croquettes.html new file mode 100644 index 0000000..12bc669 --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide4_croquettes.html @@ -0,0 +1,163 @@ + + + + + + +
+
+
+
+ +
+ +
+ Croquettes +
+ +
+

CROQUETTES

+

意式炸肉丸

+
+

金黄酥脆

+
+
+

肉质鲜嫩

+
+
+

奶油酱汁

+
+
+ +

¥65

+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide5_ambiance.html b/work_chinese/PPT04122025/slides_backup/slide5_ambiance.html new file mode 100644 index 0000000..2faaab0 --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide5_ambiance.html @@ -0,0 +1,164 @@ + + + + + + +
+
+
+
+ +
+ +
+ Inside +
+ +
+ Table +
+ +
+

VALUTAZIONE

+
+

性价比 优秀

+

服务 热情

+

环境 舒适

+
+
+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide5_conclusion.html b/work_chinese/PPT04122025/slides_backup/slide5_conclusion.html new file mode 100644 index 0000000..dcdefb8 --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide5_conclusion.html @@ -0,0 +1,158 @@ + + + + + + +
+
+
+
+ + + +
+
+

值得一试

+ +
+
+

性价比

+

优秀

+
+
+

服务

+

热情

+
+
+

环境

+

舒适

+
+
+
+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide6_menu.html b/work_chinese/PPT04122025/slides_backup/slide6_menu.html new file mode 100644 index 0000000..5f23ef7 --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide6_menu.html @@ -0,0 +1,134 @@ + + + + + + +
+
+
+
+ +
+ + + + + +
+
+ + diff --git a/work_chinese/PPT04122025/slides_backup/slide7_credits.html b/work_chinese/PPT04122025/slides_backup/slide7_credits.html new file mode 100644 index 0000000..27a8a8b --- /dev/null +++ b/work_chinese/PPT04122025/slides_backup/slide7_credits.html @@ -0,0 +1,132 @@ + + + + + + +
+
+
+
+ +
+ +
+

GRAZIE

+

李知珉
闵智铉
亓昊天

+
+ +
+
+
+
+ +