phton pdf制作中reportlab.canvas参数

reportlab.canvas有这六个主要参数

1、pagesize:设置纸张大小 #from reportlab.lib.pagesizes import letter, A4 导入常见的页面大小库

#

2、bottomup:确定(0,0)点是不是在左下角

3、pageCompression:页面是否压缩

4、verbosity : 是否打印日志 0:否 1:是

5、encrypt:是否加密

i`mport io #添加文字用
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A3,letter
from reportlab.lib.pagesizes import letter, landscape
from reportlab.pdfbase import pdfmetrics #可以写入中文
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.units import cm,inch
pdfmetrics.registerFont(TTFont(‘song’, ‘simfang.ttf’)) #注册字体TTFont ('s

        packet = io.BytesIO()
        # 使用Reportlab创建一个新的PDF
        # 
        # print(landscape(A3)) #宽高(841.8897637795277, 1190.5511811023623)
        can = canvas.Canvas(packet, pagesize=landscape(A3))
        can.setFont('song',16)
        can.setFillColor('#008000')
        can.drawString(39.8*cm, 28.5*cm, str(nonums[num]))
        samepic=1
        for same in range(0,len(nonums)):
            if same==num:
                pass
            else:
                if file_path2[same]==file_path2[num]:
                    can.drawString(39.8*cm, (28.5-samepic*0.6)*cm, str(nonums[same]))
                    samepic+=1

        can.save()
        #buffer从偏移0开始
        packet.seek(0)
        new_pdf = PdfFileReader(packet)
        #读取已有的PDF
        existing_pdf = PdfFileReader(open(filelist, "rb"))
        output_temp = PdfFileWriter()
        # 
        ttpage=existing_pdf.getNumPages()
        for page_no in range(ttpage):
            page = existing_pdf.getPage(page_no)
            # print(page)
            # print(dir(page.__sizeof__))
            # print('{}page,{}height*width{}'.format(page_no,page.height,page.width))
            # print(1*cm,type(1*cm))
            if page.get('/Rotate', 0) in [90, 270]:
                print('转90-270')
                height,width= page['/MediaBox'][2]-page['/MediaBox'][0], page['/MediaBox'][3]-page['/MediaBox'][1]
            else:
                height,width=page['/MediaBox'][3]-page['/MediaBox'][1], page['/MediaBox'][2]-page['/MediaBox'][0]
            print("{}文件的高{:.2f}cm  ** 宽{:.2f} cm".format(filelist,float(height)/(1*cm),float(width)/(1*cm)))
            page.mergePage(new_pdf.getPage(0))
            output_temp.addPage(page)
            # print(dir(output_temp))
            # exit()
        outputStream = open("temp_dest"+str(num)+".pdf", "wb")
        output_temp.write(outputStream)
        outputStream.close()`
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值