是否可以使用 git 来区分 PowerPoint 版本控制?

2023-11-25

我有一些 PowerPoint 文档,我使用 git 对其进行版本控制。我想知道文件版本之间有什么差异。文本是最重要的,图像和格式不是那么重要(至少在这一点上不是)。


我编写此代码是为了在命令行上与 git 一起使用(需要 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 git 来区分 PowerPoint 版本控制? 的相关文章

随机推荐

  • 二叉树问题。检查相似形状

    嗨 我被困在这样做 不知道该怎么做 如果我有两个二叉树 我如何检查它们是否具有相同的形状 只要树结构相等 节点中的数据并不重要 关于如何解决这个问题有什么想法吗 您可以通过递归轻松地做到这一点 下面的代码之所以有效 是因为当且仅当两个非空树
  • Scala - 新与对象扩展

    使用 new 运算符定义对象与通过扩展类定义独立对象有什么区别 更具体地说 给定类型class GenericType 有什么区别val a new GenericType and object a extends GenericType
  • 从 Linux shell 中的“ftp”命令获取退出状态代码

    我需要从命令行程序检索退出状态代码 不用担心 我用了 但对于 ftp 即使它没有连接 它也会打开 ftp shell 所以我无法理解连接尚未发生 尝试这段代码来理解 bin sh ftp 1234567 OUT if OUT eq 0 th
  • 在 UI 测试我的 SwiftUI 应用程序时如何访问 VStack

    我有一个VStack代码依赖于 onTapGesture方法 像这样的东西 VStack if imageShow Image image1 else Image image2 onTapGesture imageShow toggle 我
  • FCM 与 AWS SNS

    我在用AWS我的 android 项目的资源 我计划为我的项目添加推送通知服务AWS SNS 没有什么问题让我很困扰 我没有发现任何与这些相关的问题 除了一两个但解释不清楚的问题 1 Does AWS支持FCM SNS与 一起工作GCM 但
  • C# 从数据库中的表填充组合框

    我有一个名为的组合框combobox1 我想用它来填充它id作为价值和Name作为显示名称 我搜索并阅读了一些教程 发现此代码可在表单加载事件中使用 但它不会填充列表 我看到一个空的下拉菜单 对我错在哪里有什么想法吗 在我的数据库类中 我有
  • 使用 angular2 在同一路由器出口中加载多个组件

    我的 angular2 应用程序的根组件有以下模板
  • 如何在 JavaScript 中更改鼠标悬停时字母的颜色

    这是我的代码 document ready function var letters p text for var letter of letters letter wrap span class x span x hover color
  • Flyway 找不到类路径:db/migrations

    我现在刚刚在 Intellij 中启动了一个新项目 使用 Spring Boot 版本 2 1 3 和 Flyway 5 2 4 以及 Java 11 尝试启动我的项目后 我得到 Caused by org springframework
  • LibGDX:过滤缩放的TextureRegion

    我有几个具有不同状态的不同纹理的对象 所以我使用TextureAtlas用TexturePacker制作 并调整大小TextureRegion我需要它的地方 我必须调整大小 因为我不仅要尝试支持 720p 和 1080p 而且我的一些对象是
  • pandas:使用不带引号的文字选项卡编写制表符分隔的数据框

    我必须为遗传学软件重新格式化数据 该软件需要将每一列分成两列 例如0 gt G G 1 gt A G 2 gt A A 输出文件应该以制表符分隔 我正在尝试在 pandas 中做到这一点 import csv import pandas a
  • React.js 每第 n 项添加开始标签或结束标签

    我在这个逻辑上遇到了麻烦 因为 React jsx 不允许将非结束标签添加到数组 子组件中 例如 使用 bootstrap css 我想添加一行every4 列 所以逻辑如下 添加一个起始行例如 div 然后在该行内循环 并且每个循环附加一
  • 应使用什么语义 HTML 标记来创建面包屑?

    应该使用什么有意义的 HTML 标签来创建面包屑 我有一个使用未排序列表创建的菜单栏 因为它是一个列表 ul li li li li ul 现在 我决定在菜单下方放置一个面包屑 问题是 我不知道应该使用什么标签 我想尽可能使用有意义的标签
  • 使用Python从另一个应用程序中提取ListView项目

    我有一个带有 ListView SysListView32 控件的应用程序 我想从中提取数据 该控件有 4 列 仅文本数据 我一直在玩以下几行 在网上某处找到 VALUE LENGTH 256 bufferlength int struct
  • 如何获取网页的字数? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要获取网页上的总字数 我知道关于System Net WebClient班级 但它是DownloadString 方法返回整个 HTML 标记
  • AudioContext.decodeAudioData(...) 不适用于 iPhone,但适用于其他地方

    我有以下非常基本的代码 它是更复杂问题的一部分 我的问题是这个函数 context decodeAudioData arrayBuffer 不工作iPhone 试穿Safari and Chrome nor Mac Safari 但它可以在
  • Python 3.8 中的 MD4 hashlib 支持

    我正在尝试为使用 NTLM 身份验证的服务器实现肥皂客户端 我使用的库 依赖于 ntlm auth 的 requests ntlm2 通过标准库的 hashlib 实现了 NTLM 协议核心的 MD4 算法 虽然hashlib似乎支持MD4
  • Angular http post 请求内容类型从“text/plain”到“application/json”

    我正在尝试使用 POST 请求从服务获取数据 但我无法更改标头 TS 无法编译 或内容类型 我在控制台中收到此错误 状态 415 错误 不支持的媒体类型 异常 org springframework web HttpMediaTypeNot
  • 在 PHP 中解析 CSV 并尝试在字段内容中保留换行符

    我有一个 csv 文件 其中一列有换行符 该列是一个描述字段 因此它存储文本行 项目符号点和最重要的换行符 有时还存储段落之间的两个换行符 让事情变得复杂的是 描述字段还包含引号 我已经尝试了我所知道的一切来将内容 并保持格式 放入变量中
  • 是否可以使用 git 来区分 PowerPoint 版本控制?

    我有一些 PowerPoint 文档 我使用 git 对其进行版本控制 我想知道文件版本之间有什么差异 文本是最重要的 图像和格式不是那么重要 至少在这一点上不是 我编写此代码是为了在命令行上与 git 一起使用 需要 Python 和 p