leastbit-docx
npx skills add https://smithery.ai
Agent 安装分布
Skill 文档
DOCX å建ãç¼è¾ååæ
æ¦è¿°
ç¨æ·å¯è½ä¼è¦æ±æ¨å建ãç¼è¾æåæ .docx æä»¶çå 容ã.docx æä»¶æ¬è´¨ä¸æ¯ä¸ä¸ªå å« XML æä»¶åå ¶ä»èµæºç ZIP å缩å ï¼æ¨å¯ä»¥è¯»åæç¼è¾è¿äºå 容ãé对ä¸åä»»å¡ï¼æ¨æä¸åçå·¥å ·å工使µç¨å¯ç¨ã
工使µç¨å³çæ
读å/åæå 容
使ç¨ä¸æ¹ç”ææ¬æå”æ”åå§ XML è®¿é®”ç« è
åå»ºæ°ææ¡£
使稔åå»ºæ° Word ææ¡£”工使µç¨
ç¼è¾ç°æææ¡£
-
æ¨èªå·±çææ¡£ + ç®åä¿®æ¹ ä½¿ç¨”åºç¡ OOXML ç¼è¾”工使µç¨
-
ä»äººçææ¡£ ä½¿ç¨ “çº¢çº¿æ¹æ³¨å·¥ä½æµç¨”ï¼æ¨èé»è®¤ï¼
-
æ³å¾ã妿¯ãå䏿æ¿åºææ¡£ ä½¿ç¨ “çº¢çº¿æ¹æ³¨å·¥ä½æµç¨”ï¼å¿ é¡»ï¼
读åååæå 容
ææ¬æå
妿æ¨åªéè¦è¯»åææ¡£çææ¬å 容ï¼åºä½¿ç¨ pandoc å°ææ¡£è½¬æ¢ä¸º markdownãPandoc è½å¤å¾å¥½å°ä¿çææ¡£ç»æï¼å¹¶è½æ¾ç¤ºä¿®è®¢è¿½è¸ªï¼
# å°ææ¡£è½¬æ¢ä¸º markdown å¹¶ä¿ç修订追踪
pandoc --track-changes=all path-to-file.docx -o output.md
# é项ï¼--track-changes=accept/reject/all
åå§ XML 访é®
以ä¸åè½éè¦åå§ XML 访é®ï¼æ¹æ³¨ãå¤ææ ¼å¼ãææ¡£ç»æãåµå ¥å¼åªä½åå æ°æ®ã对äºè¿äºåè½ï¼æ¨éè¦è§£å ææ¡£å¹¶è¯»åå ¶åå§ XML å 容ã
è§£å æä»¶
python ooxml/scripts/unpack.py <office_file> <output_directory>
å ³é®æä»¶ç»æ
word/document.xml– ä¸»ææ¡£å 容word/comments.xml– document.xml ä¸å¼ç¨çæ¹æ³¨word/media/– åµå ¥çå¾çååªä½æä»¶- 修订追踪使ç¨
<w:ins>ï¼æå ¥ï¼å<w:del>ï¼å é¤ï¼æ ç¾
åå»ºæ° Word ææ¡£
ä»å¤´åå»ºæ° Word ææ¡£æ¶ï¼ä½¿ç¨ docx-jsï¼å®å 许æ¨ä½¿ç¨ JavaScript/TypeScript å建 Word ææ¡£ã
工使µç¨
- å¿
é¡» – 宿´é
读æä»¶ï¼ä»å¤´å°å°¾å®æ´é
读
docx-js.mdï¼çº¦ 500 è¡ï¼ãè¯»åæ¤æä»¶æ¶åå¿è®¾ç½®ä»»ä½èå´éå¶ã å¨å¼å§åå»ºææ¡£ä¹åï¼å®æ´é 读æä»¶å 容以äºè§£è¯¦ç»è¯æ³ãå ³é®æ ¼å¼è§ååæä½³å®è·µã - ä½¿ç¨ DocumentãParagraphãTextRun ç»ä»¶å建 JavaScript/TypeScript æä»¶ï¼æ¨å¯ä»¥å设ææä¾èµé¡¹å·²å®è£ ï¼å¦ææ²¡æï¼è¯·åé 䏿¹çä¾èµé¡¹ç« èï¼
- ä½¿ç¨ Packer.toBuffer() 导åºä¸º .docx
ç¼è¾ç°æ Word ææ¡£
ç¼è¾ç°æ Word ææ¡£æ¶ï¼ä½¿ç¨ Document åºï¼ç¨äº OOXML æä½ç Python åºï¼ã该åºèªå¨å¤çåºç¡è®¾æ½è®¾ç½®ï¼å¹¶æä¾ææ¡£æä½æ¹æ³ã对äºå¤æåºæ¯ï¼æ¨å¯ä»¥éè¿è¯¥åºç´æ¥è®¿é®åºå± DOMã
工使µç¨
- å¿
é¡» – 宿´é
读æä»¶ï¼ä»å¤´å°å°¾å®æ´é
读
ooxml.mdï¼çº¦ 600 è¡ï¼ãè¯»åæ¤æä»¶æ¶åå¿è®¾ç½®ä»»ä½èå´éå¶ã 宿´é 读æä»¶å 容以äºè§£ Document åº API åç´æ¥ç¼è¾ææ¡£æä»¶ç XML 模å¼ã - è§£å
ææ¡£ï¼
python ooxml/scripts/unpack.py <office_file> <output_directory> - ä½¿ç¨ Document åºå建并è¿è¡ Python èæ¬ï¼åè§ ooxml.md ä¸ç”Document åº”ç« èï¼
- æå
æç»ææ¡£ï¼
python ooxml/scripts/pack.py <input_directory> <office_file>
Document åºæä¾ç¨äºå¸¸è§æä½çé«çº§æ¹æ³åç¨äºå¤æåºæ¯çç´æ¥ DOM 访é®ã
ææ¡£å®¡é ççº¢çº¿æ¹æ³¨å·¥ä½æµç¨
æ¤å·¥ä½æµç¨å 许æ¨å¨ä½¿ç¨ markdown è§åå ¨é¢ç修订追踪åï¼å¨ OOXML ä¸å®ç°è¿äºä¿®æ¹ãå ³é®ï¼è¦å®ç°å®æ´çä¿®è®¢è¿½è¸ªï¼æ¨å¿ 须系ç»å°å®ç°ææä¿®æ¹ã
æ¹å¤ççç¥ï¼å°ç¸å ³ä¿®æ¹åç»ä¸º 3-10 个修æ¹ä¸æ¹ãè¿ä½¿è°è¯æ´æç®¡çï¼åæ¶ä¿ææçãå¨è¿å ¥ä¸ä¸æ¹ä¹åæµè¯æ¯ä¸æ¹ã
ååï¼æå°åã精确çç¼è¾
å®ç°ä¿®è®¢è¿½è¸ªæ¶ï¼åªæ è®°å®é
æ´æ¹çææ¬ãé夿ªæ´æ¹çææ¬ä¼ä½¿ç¼è¾æ´é¾å®¡é
ï¼çèµ·æ¥ä¹ä¸ä¸ä¸ãå°æ¿æ¢å解为ï¼[æªæ´æ¹ææ¬] + [å é¤] + [æå
¥] + [æªæ´æ¹ææ¬]ãéè¿æååå§ç <w:r> å
ç´ å¹¶éç¨å®ï¼ä¿çæªæ´æ¹ææ¬çåå§ RSIDã
ç¤ºä¾ – å°å¥åä¸ç”30 days”æ¹ä¸º”60 days”ï¼
# é误 - æ¿æ¢æ´ä¸ªå¥å
'<w:del><w:r><w:delText>The term is 30 days.</w:delText></w:r></w:del><w:ins><w:r><w:t>The term is 60 days.</w:t></w:r></w:ins>'
# æ£ç¡® - åªæ è®°æ´æ¹çé¨åï¼ä¿çåå§ <w:r> çæªæ´æ¹ææ¬
'<w:r w:rsidR="00AB12CD"><w:t>The term is </w:t></w:r><w:del><w:r><w:delText>30</w:delText></w:r></w:del><w:ins><w:r><w:t>60</w:t></w:r></w:ins><w:r w:rsidR="00AB12CD"><w:t> days.</w:t></w:r>'
ä¿®è®¢è¿½è¸ªå·¥ä½æµç¨
-
è·å markdown 表示ï¼å°ææ¡£è½¬æ¢ä¸ºä¿ç修订追踪ç markdownï¼
pandoc --track-changes=all path-to-file.docx -o current.md -
è¯å«ååç»ä¿®æ¹ï¼å®¡é ææ¡£å¹¶è¯å«ææéè¦çä¿®æ¹ï¼å°å®ä»¬ç»ç»æé»è¾æ¹æ¬¡ï¼
å®ä½æ¹æ³ï¼ç¨äºå¨ XML 䏿¥æ¾ä¿®æ¹ï¼ï¼
- ç« è/æ é¢ç¼å·ï¼ä¾å¦”Section 3.2″ã”Article IV”ï¼
- æ®µè½æ è¯ç¬¦ï¼å¦ææç¼å·ï¼
- 使ç¨å¯ä¸å¨å´ææ¬ç Grep 模å¼
- ææ¡£ç»æï¼ä¾å¦”ç¬¬ä¸æ®µ”ã”ç¾ååºå”ï¼
- ä¸è¦ä½¿ç¨ markdown è¡å· – å®ä»¬ä¸å¯¹åº XML ç»æ
æ¹æ¬¡ç»ç»ï¼æ¯æ¹åç» 3-10 个ç¸å ³ä¿®æ¹ï¼ï¼
- æç« èï¼”æ¹æ¬¡ 1ï¼ç¬¬ 2 è修订”ã”æ¹æ¬¡ 2ï¼ç¬¬ 5 èæ´æ°”
- æç±»åï¼”æ¹æ¬¡ 1ï¼æ¥ææ´æ£”ã”æ¹æ¬¡ 2ï¼å½äºäººåç§°æ´æ¹”
- æå¤æåº¦ï¼ä»ç®åçææ¬æ¿æ¢å¼å§ï¼ç¶åå¤ç夿çç»ææ§æ´æ¹
- æé¡ºåºï¼”æ¹æ¬¡ 1ï¼ç¬¬ 1-3 页”ã”æ¹æ¬¡ 2ï¼ç¬¬ 4-6 页”
-
é è¯»ææ¡£å¹¶è§£å ï¼
- å¿
é¡» – 宿´é
读æä»¶ï¼ä»å¤´å°å°¾å®æ´é
读
ooxml.mdï¼çº¦ 600 è¡ï¼ãè¯»åæ¤æä»¶æ¶åå¿è®¾ç½®ä»»ä½èå´éå¶ã ç¹å«æ³¨æ”Document 应å”ä¿®è®¢è¿½è¸ªæ¨¡å¼”ç« èã - è§£å
ææ¡£ï¼
python ooxml/scripts/unpack.py <file.docx> <dir> - 注æå»ºè®®ç RSIDï¼è§£å èæ¬ä¼å»ºè®®ä¸ä¸ªç¨äºä¿®è®¢è¿½è¸ªç RSIDãå¤å¶æ¤ RSID ç¨äºæ¥éª¤ 4bã
- å¿
é¡» – 宿´é
读æä»¶ï¼ä»å¤´å°å°¾å®æ´é
读
-
æ¹éå®ç°ä¿®æ¹ï¼æé»è¾åç»ä¿®æ¹ï¼æç« èãæç±»åææç¸è¿ä½ç½®ï¼ï¼å¹¶å¨åä¸ªèæ¬ä¸ä¸èµ·å®ç°å®ä»¬ãè¿ç§æ¹æ³ï¼
- 使è°è¯æ´å®¹æï¼è¾å°çæ¹æ¬¡ = æ´å®¹æé离é误ï¼
- å 许æ¸è¿å¼è¿å±
- ä¿ææçï¼3-10 个修æ¹çæ¹æ¬¡å¤§å°ææè¯å¥½ï¼
å»ºè®®çæ¹æ¬¡åç»ï¼
- æææ¡£ç« èï¼ä¾å¦”第 3 è修湔ã”å®ä¹”ã”ç»æ¢æ¡æ¬¾”ï¼
- æä¿®æ¹ç±»åï¼ä¾å¦”æ¥æä¿®æ¹”ã”å½äºäººåç§°æ´æ°”ã”æ³å¾æ¯è¯æ¿æ¢”ï¼
- æç¸è¿ä½ç½®ï¼ä¾å¦”第 1-3 页çä¿®æ¹”ã”ææ¡£ååé¨åç修湔ï¼
å¯¹äºæ¯æ¹ç¸å ³ä¿®æ¹ï¼
a. å°ææ¬æ å°å° XMLï¼å¨
word/document.xmlä¸ä½¿ç¨ Grep éªè¯ææ¬å¦ä½è·¨<w:r>å ç´ åå²ãb. å建并è¿è¡èæ¬ï¼ä½¿ç¨
get_nodeæ¥æ¾èç¹ï¼å®ç°ä¿®æ¹ï¼ç¶ådoc.save()ãåè§ ooxml.md ä¸ç “Document 应 ç« èçæ¨¡å¼ã注æï¼å¨ç¼åèæ¬ä¹åï¼å§ç»ç«å³ grep
word/document.xml以è·åå½åè¡å·å¹¶éªè¯ææ¬å å®¹ãæ¯æ¬¡èæ¬è¿è¡åè¡å·é½ä¼æ¹åã -
æå ææ¡£ï¼æææ¹æ¬¡å®æåï¼å°è§£å çç®å½è½¬æ¢å .docxï¼
python ooxml/scripts/pack.py unpacked reviewed-document.docx -
æç»éªè¯ï¼å¯¹å®æ´ææ¡£è¿è¡å ¨é¢æ£æ¥ï¼
- å°æç»ææ¡£è½¬æ¢ä¸º markdownï¼
pandoc --track-changes=all reviewed-document.docx -o verification.md - éªè¯ææä¿®æ¹å·²æ£ç¡®åºç¨ï¼
grep "original phrase" verification.md # åºè¯¥æ¾ä¸å° grep "replacement phrase" verification.md # åºè¯¥æ¾å° - æ£æ¥æ¯å¦å¼å ¥äºæå¤çä¿®æ¹
- å°æç»ææ¡£è½¬æ¢ä¸º markdownï¼
å°ææ¡£è½¬æ¢ä¸ºå¾ç
è¦å¯è§ååæ Word ææ¡£ï¼ä½¿ç¨ä¸¤æ¥è¿ç¨å°å ¶è½¬æ¢ä¸ºå¾çï¼
-
å° DOCX 转æ¢ä¸º PDFï¼
soffice --headless --convert-to pdf document.docx -
å° PDF 页é¢è½¬æ¢ä¸º JPEG å¾çï¼
pdftoppm -jpeg -r 150 document.pdf pageè¿å°å建
page-1.jpgãpage-2.jpgçæä»¶ã
é项ï¼
-r 150ï¼è®¾ç½®å辨ç为 150 DPIï¼æ ¹æ®è´¨é/大å°å¹³è¡¡è°æ´ï¼-jpegï¼è¾åº JPEG æ ¼å¼ï¼å¦æé¦é PNG å使ç¨-pngï¼-f Nï¼è¦è½¬æ¢ç第ä¸é¡µï¼ä¾å¦-f 2ä»ç¬¬ 2 页å¼å§ï¼-l Nï¼è¦è½¬æ¢çæåä¸é¡µï¼ä¾å¦-l 5å¨ç¬¬ 5 页忢ï¼pageï¼è¾åºæä»¶çåç¼
æå®èå´ç示ä¾ï¼
pdftoppm -jpeg -r 150 -f 2 -l 5 document.pdf page # åªè½¬æ¢ç¬¬ 2-5 页
代ç 飿 ¼æå
éè¦ï¼çæ DOCX æä½ä»£ç æ¶ï¼
- ç¼åç®æ´ç代ç
- é¿å åé¿çåéååå使ä½
- é¿å ä¸å¿ è¦ç print è¯å¥
ä¾èµé¡¹
å¿ éçä¾èµé¡¹ï¼å¦æä¸å¯ç¨åå®è£ ï¼ï¼
- pandocï¼
sudo apt-get install pandocï¼ç¨äºææ¬æåï¼ - docxï¼
npm install -g docxï¼ç¨äºåå»ºæ°ææ¡£ï¼ - LibreOfficeï¼
sudo apt-get install libreofficeï¼ç¨äº PDF 转æ¢ï¼ - Popplerï¼
sudo apt-get install poppler-utilsï¼ç¨äº pdftoppm å° PDF 转æ¢ä¸ºå¾çï¼ - defusedxmlï¼
pip install defusedxmlï¼ç¨äºå®å ¨ç XML è§£æï¼