诀窍是先缩放reportlab的画布,然后再将图像绘制到画布上。它似乎无法正确地从文件中获取DPI信息。在

下面的示例代码对于我的激光打印机非常适用:from PIL import Image, ImageDraw, ImageFont

import reportlab.pdfgen.canvas

from reportlab.lib.units import mm

# Create an image with 300DPI, 150mm by 105mm.

dpi = 300

mmwidth = 150

mmheight = 105

pixwidth = int(mmwidth / 25.4 * dpi)

pixheight = int(mmheight / 25.4 * dpi)

im = Image.new("RGB", (pixwidth, pixheight), "white")

dr = ImageDraw.Draw(im)

dr.rectangle((0, 0, pixwidth-1, pixheight-1), outline="black")

dr.line((0, 0, pixwidth, pixheight), "black")

dr.line((0, pixheight, pixwidth, 0), "black")

dr.text((100, 100), "I should be 150mm x 105mm when printed, \

with a thin black outline, at 300DPI", fill="black")

# A test patch of 300 by 300 individual pixels,

# should be 1 inch by 1 inch when printed,

# to verify that the resolution is indeed 300DPI.

for y in range(400, 400+300):

for x in range(500, 500+300):

if x & 1 and y & 1:

dr.point((x, y), "black")

im.save("safaripdf.png", dpi=(dpi, dpi))

# Create a PDF with a page that just fits the image we've created.

pagesize = (150*mm, 105*mm)

c = reportlab.pdfgen.canvas.Canvas("safaripdf.pdf", pagesize=pagesize)

c.scale(0.24, 0.24) # Scale so that the image exactly fits the canvas.

c.drawImage("safaripdf.png", 0, 0) # , width=pixwidth, height=pixheight)

c.showPage()

c.save()

您可能需要稍微调整一下刻度值,以便尺寸正好适合您的打印机,但是上面的值非常接近。我已经用尺子检查过了;-)

python 生成pdf页面大小_使用具有自定义大小页面和最佳图像分辨率的Reportlab生成PDF...相关推荐

  1. 基于angularjs的单页面实例_基于AngularJs的单页面程序

    基于AngularJs的单页面程序 在Abpzero的后台管理系统是一个AngularJs的单页面程序.当你登陆后,系统会跳转到"ApplicationController",然后 ...

  2. 微信小程序页面栈_微信小程序之页面传值(路由、页面栈、globalData、缓存)

    1. 通过url带参数传递 1.1 固定参数传递 例如,从 list 页面到 detail 页面, 传递一个或多个固定值 list页面传值: 点此进入 detail detail页面取值: onLoa ...

  3. 微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据

    微信小程序中如果从一个页面中进入下一个页面,如果下个页面的数据有删除或者增加再返回上一个页面的时候,就会导致页面不刷新(数据加载函数在onload中),从而造成数据不一致的情况.其实在微信小程序中是可 ...

  4. kindle版java核心_深入理解java 7 核心技术与最佳实践-成富[6寸pdf mobi epub kindle版].pdf...

    深入理解java 7 核心技术与最佳实践-成富[6寸pdf mobi epub kindle版].pdf 还剩 50页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预 ...

  5. python生成中文字符画_在线汉字转为字符字,字符字生成器,在线生成字符字

    待转化的文字: 字体大小: 背景字符: 前景字符: 字体:仿宋 方正姚体 微软黑体 华文行楷 华文新魏 隶书 幼圆 黑体 文字方向:横向 纵向 M中 转换后的文字: ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ...

  6. python中wx是啥_设置wx.框架大小(wxPython wxWidgets)

    我是wxPython新手,在设置框架和窗口(widgets)的给定大小时,我发现了一些问题.我把这个问题隔离到一个最简单的例子中,我试图创建一个250x250像素的帧.在 运行代码我得到一个实际尺寸为 ...

  7. python弹框倒计时自动关闭_倒计时自动关闭/跳转页面

    倒计时自动关闭/跳转页面 //作业: 改成周期性定时器实现 function myClose() {//任务 //取出time中的数,保存在n中 var n = parseInt(time.inner ...

  8. python修改图片大小_批量修改图片大小Python代码

    # -*- coding: utf-8 -*- ''' ''' import os from PIL import Image pic_dir = r"H:\新建文件夹" for ...

  9. bcb image 动态大小_实战|使用CSS Paint API动态创建与分辨率无关的可变背景

    来源:https://medium.com/better-programming,作者:Ferenc Almasi 现代Web应用对图像的需求量很大,它们占据网络下载的大部分字节.通过优化它们,你可以 ...

最新文章

  1. Java项目:潜艇大战项目(java+swing)
  2. flatbuffers 和netty的结合使用
  3. Sharding-JDBC 1.3.0发布——支持读写分离
  4. 将字符串a复制到字符串b
  5. 移动端h5开发总结不断更新中....
  6. 手写自己的MyBatis框架-这个框架需要解决什么问题?
  7. Mysql从库主键卡住_从库宕机引发的主键冲突
  8. java学习(51):上转型对象
  9. 全数字实时仿真平台SkyEye与SystemC集成进行时序仿真
  10. 编写两个函数分别求两个数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个数由键盘输入。 输入输出格式示例: 输入:24 16 输出:zdgys=8,zxgbs=48
  11. mysql执行语句返回主键_mysql语句insert后返回主键
  12. 计算机网络第五版笔记
  13. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容柒哥都给你总结在这儿了...
  14. 6个实用的 Python 自动化脚本,告别加班,你学会了吗?
  15. Jquery Jqprint—借助Jquery Jqprint实现网页打印功能
  16. 2020年中国干旱灾害受灾面积、饮水困难人口数量及造成经济作物损失分析[图]
  17. 问题记录之---nginx temp文件夹
  18. 智能管家(原型)- 语音控制设备
  19. numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching ty
  20. 基于android点餐系统需求分析,基于Android的点餐系统的设计及实现

热门文章

  1. 专家视角 | 小荷的 Oracle Database 18c 新特性快速一瞥
  2. 云小课 | 详解华为云独享型负载均衡如何计费
  3. 利用文字技术帮助选购商品,慧眼“识”物的人都这样做……
  4. 技巧收藏|10个JavaScript常用数组操作方法
  5. 疫情当前,华为云数据库携手WeLink保障企业云上办公数据稳定可靠
  6. 【华为云技术分享】鲲鹏开发套件:让应用软件迁移调优So Easy
  7. 带着canvas去流浪系列之五 绘制K线图
  8. 容器、微服务和互联网架构浅谈
  9. 【华为大咖分享】4.反脆弱,高效能组织的能力构建(后附PPT下载地址)
  10. xtwpro2编程器_xtw100编程器驱动