Repository navigation
Convert PPTX to localizable positioned HTML - #1
Merged
Merged
Conversation
Adds a converter that turns a .pptx into fixed-canvas HTML with every paragraph, note and alt text in a string table (docs/string-table.md), a browser page to convert, preview and download, standalone single-file output with embedded translations, fit-to-box for longer text, and gates PDF export behind a manual workflow input.
…tions in decks.json
Translate CLI with Copilot CLI provider
ivorb
marked this pull request as ready for review
November 4, 2026 20:07
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A new path from
.pptxto HTML that keeps every word as real, translatable text and does a best-effort job on layout. The existing Markdown importer is untouched.tools/pptx-html.mjs, withxml-lite,pptx-style,pptx-geom): one fixed canvas per slide; shapes placed from the PPTX geometry (layout/master inheritance, group scale/rotate/flip, presets and custom shapes, connectors with arrowheads, gradients, cropped pictures, tables, SmartArt via its stored drawing).docs/string-table.md): every paragraph, speaker note and alt text gets a stable ID instrings.json; slides carrydata-i18n. Code (monospace) paragraphs stay on the slide but are not in the table.convert.html): drop a.pptx, preview it, browse the generated HTML and string table, see what was skipped, download a single HTML file or the deck folder (ZIP). Nothing is uploaded.deck.htmland the standalone file support?lang=<code>(strings are rebuilt from allowed tags only). Longer text shrinks to fit its box (floor 60%);&reviewoutlines boxes that still overflow.build-manifestandbuild-site; standalone files embed each picture once.export_pdfsticked. Code is untouched.node tools/pptx-to-html.mjs deck.pptx --slug my-talk.Checked
Against four real decks (59/55/44/44 slides, groups, connectors, code, tables, notes): all 2,965 text paragraphs in the source appear in the output (whitespace-insensitive check, hidden shapes excluded), and the output was reviewed visually in the browser, including with a pseudo-translation 45% longer than the source.
node --test tests/passes (9 tests). Existing Markdown decks still render.Known limits
s<n>.L./s<n>.M.IDs).import.htmlandconvert.htmlduplicate some UI code.Not in this PR
The translate CLI (
tools/translate.mjs) is being built separately against the same contract.