2015-08-27 7 views
4

У меня есть документы PowerPoint, которые я контролирую версиями с git. Я хочу знать, какие различия между версиями файла. Текст наиболее важен, изображения и форматирование не так много (по крайней мере, на данный момент).Возможно ли установить версию PowerPoint с контролем git?

ответ

4

Я написал это для использования с мерзавцем в командной строке (требуется Python и библиотеки Python-PPTX):

""" 
Setup -- Add these lines to the following files: 
--- .gitattributes 
*.pptx diff=pptx 

--- .gitconfig (or repo\.git\config or your_user_home\.gitconfig) (change the path to point to your local copy of the script) 
[diff "pptx"] 
    binary = true 
    textconv = python C:/Python27/Scripts/git-pptx-textconv.py 

usage: 
git diff your_powerpoint.pptx 


Thanks to the python-pptx docs and this snippet: 
http://python-pptx.readthedocs.org/en/latest/user/quickstart.html#extract-all-text-from-slides-in-presentation 
""" 

import sys 
from pptx import Presentation 


if __name__ == '__main__': 
    if len(sys.argv) != 2: 
     print "Usage: git-pptx-textconv file.xslx" 

    path_to_presentation = sys.argv[1] 

    prs = Presentation(path_to_presentation) 

    for slide in prs.slides: 
     for shape in slide.shapes: 
      if not shape.has_text_frame: 
       continue 
      for paragraph in shape.text_frame.paragraphs: 
       par_text = '' 
       for run in paragraph.runs: 
        s = run.text 
        s = s.replace(r"\\", "\\\\") 
        s = s.replace(r"\n", " ") 
        s = s.replace(r"\r", " ") 
        s = s.replace(r"\t", " ") 
        s = s.rstrip('\r\n') 

        # Convert left and right-hand quotes from Unicode to ASCII 
        # found http://stackoverflow.com/questions/816285/where-is-pythons-best-ascii-for-this-unicode-database 
        # go here if more power is needed http://code.activestate.com/recipes/251871/ 
        # or here       https://pypi.python.org/pypi/Unidecode/0.04.1 
        punctuation = { 0x2018:0x27, 0x2019:0x27, 0x201C:0x22, 0x201D:0x22 } 
        s.translate(punctuation).encode('ascii', 'ignore') 
        s = s.encode('utf-8') 
        if s: 
         par_text += s 
       print par_text 
0

Не совсем. Файл PowerPoint по существу является архивом (zip) из папки, полной файлов. Git будет рассматривать его как двоичный файл (потому что это так).

Возможно, для этого есть стороннее расширение, но я никогда не слышал об этом.

3

я не смог установить python-pptx, как это было предложено принято отвечать, поэтому я искал решение node.js (которое также может работать для нескольких других форматов файлов, которые он может обрабатывать).

Установить https://github.com/dbashford/textract (npm install --global textract).

Определить, как diff "textract" в вашем .git config. Для моей машины Windows,

[diff "textract"] 
    binary = true 
    textconv=textract.cmd 

Определить в файле .gitattributes, что *.pptx следует использовать diff "textract"

*.pptx diff=textract 

git diff счастливо.

0

Я не могу говорить напрямую с git, поскольку мы используем Visual Studio + TFS на работе. Однако некоторые исследования показывают, что это должно сработать. То, что я делаю на VS, - это интегрировать WinMerge и его плагин, который поддерживает текстовое сравнение файлов MS Office и PDF. Это позволяет мне делать различия между файлами pptx, docx, pdf и т. Д., Опубликованными для контроля версий.

Для мерзавца, так оно и должно работать это:

1) Получить WinMerge с xdocdiff плагин: http://freemind.s57.xrea.com/xdocdiffPlugin/en/index.html 2) Интегрировать WinMerge с мерзавцем: https://coderwall.com/p/76wmzq/winmerge-as-git-difftool-on-windows

Надеемся, что это позволит вам увидеть текст для вашего PowerPoint.

Смежные вопросы