LibreOffice 팔레트의 ptyhon 스크립트 만들기

11113 단어 Python3LibreOffice
개요
MSPowerPoint에서 Libre Office Impress로 옮기려는 시도는 몇 가지 불만이 있습니다.
불만 중 하나는 팔레트 제작이 귀찮다는 것이다.
본고는 팔레트가python 스크립트를 만드는 예를 소개했다.
컨디션
  • Ubuntu 16.04
  • LibreOffice 5.1.6.2
  • Python 3.6 (Anaconda 4.3.14)
  • 사용 방법: 스크립트의 변수에 적당한 값을 입력하십시오.
    그런 다음 팔레트가 가능하므로 LibreOffice에서 호출하여 사용합니다.

    get_color_pallete.py
    import getpass
    import colour # pip install colour 
    
    USERNAME = getpass.getuser() 
    PALLETE_PATH = "/home/"+ USERNAME + "/.config/libreoffice/4/user/config/"
    # 出来上がったカラーパレットの置き場所
    
    ### xmlのフッター・ヘッター ###
    HEADER = """<?xml version="1.0" encoding="UTF-8"?>
        <ooo:color-table xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
            xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            xmlns:svg="http://www.w3.org/2000/svg"
            xmlns:ooo="http://openoffice.org/2004/office"
        >\n"""
    FOOTER = "</ooo:color-table>"
    ### xmlのフッター・ヘッターここまで ###
    
    
    pallete_name = "mytheme" # office側で表示されるパレット名
    
    color_dir = { # 色をここに記載する
        "00_fg_color": "#fefefe",
        "01_bg_color": "#303030",
        "10_main_bright": "#80F2E8",
        "11_main_normal": "#26A69A",
        "12_main_dark": "#1A736B",
        "20_accent_bright": "#f68880",
        "21_accent_normal": "#F44336",
        "22_accent_dark": "#612925",
    }
    
    
    def adjust_hue(c_base): # オリジナルの色から明度を調節して6色作って(パワポみたいに)リストを返す
        c_list = []
        c_luminance = c_base.luminance
        for i in range(3, 0, -1):
            c_new = colour.Color(c_base.hex)
            c_new.luminance = c_luminance + (1. - c_luminance) * (i / 4.)
            c_list.append(colour.Color(c_new.hex).hex_l)
        for i in range(1, 4):
            c_new = colour.Color(c_base.hex)
            c_new.luminance = c_luminance - c_luminance * (i / 4.)
            c_list.append(colour.Color(c_new.hex).hex_l)
        return c_list
    
    def get_color_sequence(c_hex): # オリジナルの色を含む12個分の色のリストを返す
        c_base = colour.Color(c_hex)
        c_list = [c_base.hex_l]
        for i in range(5):
            c_list.append(c_base.hex_l)
        c_list += adjust_hue(c_base)
        return c_list
    
    def pallet_color_setting_in_xml(c_name, c):
        return "<draw:color draw:name=\"" + c_name + "\" draw:color=\"" + c + "\"/>\n"
    
    
    f = open(PALLETE_PATH + pallete_name + ".soc", "w")
    f.write(HEADER)
    for c_name in sorted(color_dir.keys()):
        c_list = get_color_sequence(color_dir[c_name])
        for i, c in enumerate(c_list):
            f.write(pallet_color_setting_in_xml(c_name + str(i), c))
    f.write(FOOTER)
    f.close()
    
    참고 자료
  • GitHub - vaab/colour: Python color representations manipulation library (RGB, HSL, web, ...)
  • LibreOffice Color Palette « Practica Technical
  • LibreOffice 메모 [nofuture.tv]
  • 좋은 웹페이지 즐겨찾기