• 如何输出PDF

PowerPDF使用TPRPage作为页面容器,只要简单地将一个生成好的TPRPage输出到TPReport中即可生成PDF文件的一个页面,页面的尺寸由TPRPage的高度宽度决定。

  PReport1.FileName:= 'test.pdf';PReport1.BeginDoc;PReport1.Print(PRPage1);PReport1.EndDoc;  
  • 尺寸和位置的计算

PDF格式的默认DPI是72,PowerPDF也使用这个数据,参见常量定义如下:

  {** PreDefined page size*}PDF_PAGE_WIDTH_A4 = 596;PDF_PAGE_HEIGHT_A4 = 842;{** Dafault page size.*}PDF_DEFAULT_PAGE_WIDTH = PDF_PAGE_WIDTH_A4;PDF_DEFAULT_PAGE_HEIGHT = PDF_PAGE_HEIGHT_A4;

A4页面实际尺寸是219×297mm,程序里常量设置的默认的尺寸是596×842,计算得到dpi是72。确认无误。

  • 设计期网格尺寸的修正

但是,同样的A4页面在设计期页面上的显示出的网格数只有大约15.7×22.3(格),既不是英寸,也不是厘米。
检查PReport单元,发现在网格绘制时使用了一个常量LINE_PITCH: integer = 378;,检查涉及这个常量的代码(摘录)

    // drawing vertical lines.LineCount := 0;LineFlg := true;LinePos := - OffsetX;while LinePos < aWidth dobeginif LinePos > 0 thenbeginMoveTo(LinePos, 0);SetPen(Canvas, LineFlg);LineTo(LinePos, aHeight - 1);end;inc(LineCount);LineFlg := not LineFlg;LinePos := trunc(LineCount * LINE_PITCH / 20) - OffsetX;end;  

    LineCount := 0;LinePos := 0;while LinePos < self.Width dobeginTextOut(LinePos + 1, 1, IntToStr(LineCount));inc(LineCount);LinePos := trunc(LineCount * LINE_PITCH / 10);end;

按设计来说,这个网格应当是作为0.5和1cm的标尺使用的,也就是说,LINE_PITCH应当是代表每厘米像素数的10倍。

1/2.54×DPI=LINE_PITCH/10
10/2.54×DPI=378
2.54/10=DPI/378
DPI=2.54/10×378

求得DPI=96.012,即,网格是按96dpi的分辨率绘制的,而前面提到,尺寸的计算是按72dpi进行,因此导致网格显示不正常。
计算得到新的LINE_PICTH值:283.7,修正并重新编译后,网格显示正常。

  • 高精度图片的使用

72dpi的精度不足以满足大多数场合对于图片输出的需要,因此需要对插入的图片做调整。
在TPRImage里提供了ScaleX和ScaleY两个属性用于将高DPI的图片按比例缩小成对应于72dpi的尺寸输出。
例如,如果需要288dpi的精度输出一个1英寸×1英寸的图片,可以将一个288像素×288像素的图片置入一个设置为72像素×72像素的TPRImage,并设置ScaleX和ScaleY为0.25(4倍dpi,缩放为1/4),同时设置Stretch属性为真(默认值)以在设计界面上缩小显示。

关于Lazarus下PowerPDF控件的使用相关推荐

  1. 刷新后控制TAB键到下一个控件

    页面上的控件能一直TAB下去,这是系统的一个很基本的要求.在网上没有搜索到相关的方法.我觉得一般做法都是使页面无刷新,但是如果遇到页面不得不刷新的情况,如何去控制呢?    思路是很简单的,首先是获取 ...

  2. MFC下列表控件的使用

    MFC下列表控件的使用 2012-11-09 16:46:57|  分类: 程序VC相关 |  标签: |字号大中小 订阅 1.应该加入头文件 #include <Atlbase.h> 2 ...

  3. 自定义可扩展叠加头部的下拉控件

    最近写了个下拉控件,和几个下拉的头部样式,下拉控件可以连续添加叠加几个头部视图 下面是没有添加任何头部尾部的视图下拉效果 一步一步来介绍,先介绍这个下拉效果,在介绍自定义的头部 首先在使用上,和普通的 ...

  4. 【GIS开发】VB6.0下MO控件的安装:安装教程及MO破解教程(MapObjects2.x)

    [GIS开发]VB6.0下MO控件的安装:安装教程及MO破解教程(MapObjects2.x) 基于MO和VB的GIS开发过程中,普遍使用的还是2.0及以上版本,ESRI公司早已不再对MO组件进行更新 ...

  5. ASP.NET控件中回车自动跳转至下指定控件

    登陆框默认按回车不能自动跳转至下一控件,只能跳转至CLICK事件,输入很不舒服,所以做了如下改动: HTML 用户名:<input type="text" id=" ...

  6. html下拉框 multiple,多选下拉控件的使用(select-option)multiple-select

    多选下拉控件的使用(select-option) 1.第一个组件是写bootstrap table的主人公 2.第二个组件 本篇中使用的是第一个控件来实现多选下拉框: 首先引入支持文件 multipl ...

  7. Unity 之 UGUI Dropdown下拉控件展开方向控制

    Unity 之 UGUI Dropdown下拉控件展开方向控制 有个需要控制下拉控件展开方向的需求,不得探索一下这个下拉方向是由那些属性控制的. 其实我们正常使用的时候你可以发现,下拉控件默认向下展开 ...

  8. 具有TreeView下拉控件的ComboBox

    具有TreeView下拉控件的ComboBox 没错,如标题所说的那样,在下拉框中是一个TreeView,但是,为什么我们需要这样的控件?事实上这样的需求我已经遇到很多次了,比如适用于:  当遇到层 ...

  9. iOS自定义控件:简易下拉控件

    最近自由时间有点多,就开始撸控件.这个是我们常用的一个下拉分类控件,看了很多别人写的,都是用TableView或者CollectionView整合在一起的感觉自定义性没有那么强,所以就尝试用把Tabl ...

  10. c语言windows 编程下silder控件,VB6 常用控件 滚动条ScorllBar和Slider控件

    滚动条(ScorllBar)和Slider控件通常用来附在窗体上以协助观察数据或确定位置,也可用来作为数据输入的工具. 滚动条(ScorllBar)和Slider控件都有水平和垂直两种,Slider控 ...

最新文章

  1. bat脚本交互输入_基于winserver操作系统的自动清理Oracle3天前归档日志脚本分享...
  2. InvalidateRect()、UpdateWindow()、RedrawWindow()区别
  3. Permutations CodeForces - 736D (矩阵逆)
  4. 数学建模与科研探索及数学建模竞赛介绍
  5. Cocos2d 利用继承Draw方法制作可显示三维数据(宠物三维等)的三角形显示面板...
  6. PDF区域文本提取工具
  7. jeb 高级教程之动态调试
  8. 前端性能优化gzip压缩
  9. 优秀蓝牙耳机推荐,热销不错的四款蓝牙耳机推荐
  10. csdn怎么搜索收藏夹
  11. 18935 贪吃的小Q
  12. Maple矩阵特征多项式
  13. vue 308 Permanent Redirect (from disk cache)问题
  14. J storm战队成员_DOTA2J.Storm战队介绍-DOTA2PIT深渊联赛预选赛J.Storm战队介绍_牛游戏网攻略...
  15. Python 3.8+numpy查找矩阵中所有鞍点
  16. 此情可待成追忆——九山顶畅游随想曲(九)
  17. 不到 20 行 Python 代码即可制作精美证件照!不需要去图文店了!
  18. 用CodeViser ARM 仿真器广泛用于手机软硬件调试
  19. random: crng init done太慢影响程序运行
  20. 打工人的Html学习之路

热门文章

  1. 运行java SWT例子
  2. 依赖于 !important 标签是个危险的现象。奔驰车如何查4S店的保养记录
  3. 探索社群系统ThinkSNS品牌10周年!
  4. 局域网快速传输数据(大量文件)
  5. msdev.exe 应用程序错误 的解决办法
  6. IntelliJ IDEA设置--类代码模板自定义(注释)
  7. 深入理解Nginx~Nginx配置的通用语法
  8. 苹果cmsv10仿美剧吧自适应好看的免费高端简约模板
  9. Java jdk API 1.8英文版、中文版分享
  10. MyBatis3 注解SQL 的使用方法