使用python-pptx创建一个新的pptx并设置尺寸

时间:2018-07-15 17:59:32

标签: python-pptx

我想将一系列图像始终如一地嵌入到PowerPoint文档中页面的同一位置。

我可以进行图像导入,但是我需要PowerPoint尺寸由用户指定。

我想我可以使用slide_height和slide_width。我正在尝试这样的代码,以使页面高300毫米,但无法正常工作:

pack = Presentation(pptx=None) pack.slide_height(300) pack.save('test.pptx')

它引发“ TypeError:'Emu'对象不可调用”错误。

我确定这确实很明显,但是我看不出语法应该是什么,并且文档也没有帮助我。谁能纠正我的代码?

非常感谢,

杰夫。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是这个

import UIKit

class ViewController: UIViewController {




    let shapeLayer = CAShapeLayer()
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
           let center = view.center
        let trackLayer = CAShapeLayer()

              let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)

        trackLayer.path = circularPath.cgPath
        trackLayer.strokeColor = UIColor.lightGray.cgColor
        trackLayer.lineWidth = 10

        trackLayer.fillColor = UIColor.clear.cgColor
        trackLayer.lineCap = kCALineCapRound
        view.layer.addSublayer(trackLayer)




        shapeLayer.path = circularPath.cgPath

        shapeLayer.strokeColor = UIColor.red.cgColor
        shapeLayer.lineWidth = 10

        shapeLayer.fillColor = UIColor.clear.cgColor
        shapeLayer.lineCap = kCALineCapRound

        shapeLayer.strokeEnd = 0


        view.layer.addSublayer(shapeLayer)
    }

API documentation for Presentation.slide_height中,您会注意到from pptx import Presentation from pptx.util import Mm prs = Presentation() prs.slide_height = Mm(300) prs.save('test.pptx') 后面没有任何括号(例如,正上方的slide_height与此相反)。这表明save()属性而不是方法,并且可以通过直接访问或分配给它来使用,就像其他任何属性一样。

PowerPoint的本机单位是英制公制单位(EMU),它是1/914400英寸。 in the documentation here对此进行了描述。其中300个的长度确实很短,如果直接将300分配给slide_height,就会得到这个长度。

要让您跳过算术运算,可以使用多种实用程序对象(如上面的slide_height)来指定EMU的通用单位,例如厘米和英寸。 in the documentation here对此进行了说明。