如何让pythondocx处理复杂的脚本?

2024-05-18 15:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个适用于欧洲语言的docx生成器,我正在尝试添加复杂的脚本支持。我发现了另一个问题和一些食谱来尝试:python-docx add_style with CTL (Complex text layout) language

我设法让它工作,使复杂的脚本文本在正确的字体和大小出来,但我不能得到双向(从右到左)文本工作。明显的“x”。字体.rtl=True“不起作用,另一个帖子中的咒语也不起作用(”语言集(qn('w:bidi'),'fa-IR'))。我得把线拔出来rpr.get\或\U add\ sz()“他的配方给我留下了一个不可读的文件,但其他的东西都没有,我不认为这与这个问题有关。你知道吗

以下是在生成的文档中显示的样式样式.xml文件:

<w:style w:styleId="Hebrew" w:type="paragraph" w:customStyle="1">
    <w:name w:val="Hebrew"/>
    <w:basedOn w:val="Normal"/>
    <w:pPr>
        <w:jc w:val="right"/>
    </w:pPr>
    <w:rPr>
        <w:rFonts w:cs="Arial"/>
        <w:rtl/>
        <w:szCs w:val="24"/>
        <w:lang w:bidi="he-IL"/>
    </w:rPr>
</w:style>

有谁能告诉我怎样才能让从右到左的语言段落正常工作?你知道吗


Tags: 文件文本脚本add语言style字体样式
1条回答
网友
1楼 · 发布于 2024-05-18 15:32:57

根据上面的评论,在ROAR的帮助下(谢谢,ROAR!)我把一切都搞定了。你知道吗

罗尔的食谱here运作得很好,除了那一点rpr.get\或\U add\ sz()给了我一个不可读的.docx文件。把它排除在外,一切正常,似乎没有造成任何问题。缺少的关键链接是将以下内容添加到样式中的<;w:pPr>;:

<w:bidi w:val="1">
<w:jc w:val="both"/>

有一个我的_style.get\u或\u add\u pPr()方法获取对样式的<;w:pPr>;部分的引用,然后代码与更新<;w:rPr>;的代码类似:

w_nsmap = '{'+ppr.nsmap['w']+'}'
bidi = None
jc = None
for element in ppr:
  if element.tag == w_nsmap + 'bidi':
    bidi = element
  if element.tag == w_nsmap + 'jc':
    jc = element
if bidi is None:
  bidi = OxmlElement('w:bidi')
if jc is None:
  jc = OxmlElement('w:jc')
bidi.set(qn('w:val'),'1')
jc.set(qn('w:val'),'both')
ppr.append(bidi)
ppr.append(jc)

我需要的最后一件事是处理混合语言文本,我通过将文本分成多段来完成。我正在处理的希伯来文段落被赋予了修改后的样式,rtl=True,但我将所有以字母开头和结尾的ASCII序列分开:

[A-Za-z][\u0020-\u007e]*[A-Aa-z]

以rtl=False进行单独运行。你知道吗

相关问题 更多 >

    热门问题