mcpField
W
working-with-documents

working-with-documents

github.com/mjunaidca文档处理2878 次安装11 周前更新
代码仓库

关于 working-with-documents

working-with-documents 是面向文档处理任务的技能,涵盖 DOCX、PDF 和 PPTX 的读取、创建、编辑与转换。它汇集命令行工具、代码示例及演示文稿设计和验证指引。

主要功能

  1. 01涵盖 DOCX、PDF 和 PPTX
  2. 02提供文档读取与创建方法
  3. 03说明 OOXML 编辑流程
  4. 04包含 PDF 合并与拆分指引
  5. 05介绍格式转换和扫描件 OCR
  6. 06提供演示文稿布局与验证建议

适用场景

  1. 01将 DOCX 内容转换为 Markdown
  2. 02提取 PDF 文本或表格
  3. 03合并、拆分或转换文档
  4. 04创建并检查演示文稿

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mjunaidca/mjs-agent-skills --skill working-with-documents

安装后在 Claude Code 中输入/working-with-documents确认已加载。

附带文件scripts/verify.py

详细介绍

处理文档

快速参考

格式读取创建编辑
DOCXpandoc,python-docxdocx-jsOOXML(解包/编辑/打包)
PDFpdfplumber,pypdfreportlabpypdf(合并/拆分)
PPTXmarkitdownhtml2pptxOOXML(解包/编辑/打包)

Word 文档(.docx)

读取内容
# Convert to markdown (preserves structure)
pandoc document.docx -o output.md

# With tracked changes visible
pandoc --track-changes=all document.docx -o output.md
创建新文档

使用 docx-js(JavaScript):

const { Document, Packer, Paragraph, TextRun } = require('docx');

const doc = new Document({
  sections: [{
    children: [
      new Paragraph({
        children: [
          new TextRun({ text: "Hello World", bold: true }),
        ],
      }),
    ],
  }],
});

Packer.toBuffer(doc).then(buffer => {
  fs.writeFileSync("output.docx", buffer);
});
编辑现有文档(修订)
# 1. Unpack
python ooxml/scripts/unpack.py document.docx unpacked/

# 2. Edit XML files in unpacked/word/document.xml
# Key files:
#   - word/document.xml (main content)
#   - word/comments.xml (comments)
#   - word/media/ (images)

# 3. Pack
python ooxml/scripts/pack.py unpacked/ edited.docx

修订 XML 模式:


<w:del><w:r><w:delText>old text</w:delText></w:r></w:del>


<w:ins><w:r><w:t>new text</w:t></w:r></w:ins>

PDF 文档

读取 PDF
import pdfplumber

# Extract text
with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        print(page.extract_text())

# Extract tables
with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        tables = page.extract_tables()
        for table in tables:
            for row in table:
                print(row)
创建 PDF
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet

doc = SimpleDocTemplate("output.pdf", pagesize=letter)
styles = getSampleStyleSheet()
story = [
    Paragraph("Report Title", styles['Title']),
    Paragraph("Body text goes here.", styles['Normal']),
]
doc.build(story)
合并/拆分 PDF
from pypdf import PdfReader, PdfWriter

# Merge
writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf"]:
    reader = PdfReader(pdf_file)
    for page in reader.pages:
        writer.add_page(page)
writer.write(open("merged.pdf", "wb"))

# Split
reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    writer.write(open(f"page_{i+1}.pdf", "wb"))
命令行工具
# Extract text
pdftotext input.pdf output.txt
pdftotext -layout input.pdf output.txt  # Preserve layout

# Merge with qpdf
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

# Split pages
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf

PowerPoint 演示文稿(.pptx)

读取内容
# Convert to markdown
python -m markitdown presentation.pptx
创建新演示文稿

使用 html2pptx 工作流:

  1. 创建 HTML 幻灯片(16:9,720pt × 405pt)
  2. 使用 html2pptx.js 库进行转换
  3. 使用缩略图网格进行验证
# Create thumbnails for validation
python scripts/thumbnail.py output.pptx --cols 4
编辑现有演示文稿
# 1. Unpack
python ooxml/scripts/unpack.py presentation.pptx unpacked/

# Key files:
#   - ppt/slides/slide1.xml, slide2.xml, etc.
#   - ppt/notesSlides/ (speaker notes)
#   - ppt/media/ (images)

# 2. Edit XML

# 3. Validate
python ooxml/scripts/validate.py unpacked/ --original presentation.pptx

# 4. Pack
python ooxml/scripts/pack.py unpacked/ edited.pptx
重新排列幻灯片
# Duplicate, reorder, delete slides
python scripts/rearrange.py template.pptx output.pptx 0,3,3,5,7
# Creates: slide 0, slide 3 (twice), slide 5, slide 7

在格式之间转换

# DOCX/PPTX to PDF
soffice --headless --convert-to pdf document.docx

# PDF to images
pdftoppm -jpeg -r 150 document.pdf page
# Creates: page-1.jpg, page-2.jpg, etc.

# DOCX to Markdown
pandoc document.docx -o output.md

扫描文档的 OCR

import pytesseract
from pdf2image import convert_from_path

images = convert_from_path('scanned.pdf')
text = ""
for image in images:
    text += pytesseract.image_to_string(image)

设计指南(演示文稿)

配色方案

选择 3-5 种相互协调的颜色:

配色方案颜色
经典蓝海军蓝 #1C2833、石板灰 #2E4053、银色 #AAB7B8
青绿与珊瑚红青绿色 #5EA8A7、珊瑚红 #FE4447、白色 #FFFFFF
黑金金色 #BF9A4A、黑色 #000000、奶油色 #F4F6F6
仅使用 Web 安全字体

Arial、Helvetica、Times New Roman、Georgia、Verdana、Tahoma、Trebuchet MS、Courier New、Impact

布局规则
  • 双栏:仅用于恰好 2 个不同项目
  • 三栏:仅用于恰好 3 个项目
  • 切勿将图表垂直放在文本下方
  • 全幅图片叠加文字的效果很好

依赖项

# Python
pip install pypdf pdfplumber reportlab python-docx openpyxl

# System tools
apt-get install pandoc poppler-utils libreoffice

# Node.js (for docx-js)
npm install docx

验证

运行:python scripts/verify.py

相关技能

  • working-with-spreadsheets - Excel 文件处理
  • building-nextjs-apps - 用于文档上传的前端

评论

支持 Markdown