Oracle+EBS+报表打印设置基本原理
信息技术最佳实践 ORACLE核心应用技术 E-BUSINESS SUITE 报表打印设置基本原理
Author: Creation Date: Last Updated: Document Ref: Version:
Approvals: <Approver 1> <Approver 2>
November 1, 2005 March 31, 2013
<Document Reference Number> DRAFT 1A
Copy Number _____
Oracle+EBS+报表打印设置基本原理
Document Control
Change Record
Reviewers
Distribution
Note To Holders:
name on the equivalent of the cover page, for document control purposes. cover, for document control purposes.
Oracle+EBS+报表打印设置基本原理
Contents
Document Control .................................................................................................................. ii 1.
1.1.
1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. 2.
2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. 2.9. 3.
3.1. 3.2. 3.3. 3.4. 4.
4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 5.
5.1. 5.2. 5.3. 5.4.
Basic ............................................................................................................................ 2
Oracle Reports简要执行过程 ............................................................................ 2 度量单位Scale ..................................................................................................... 3 纸张大小Page Size ............................................................................................. 3 打印机与操作系统打印命令 .............................................................................. 3 Oracle Reports命令行 ........................................................................................ 4 X-Windows ......................................................................................................... 5 CM和Oracle Reports的关系 ............................................................................. 9 CM和实际打印 ................................................................................................... 9 Oracle Reports类型 ................................................................................................. 10
Bitmap & Character Mode 2059041.6 .......................................................... 10 Text .................................................................................................................... 11 XML ................................................................................................................... 11 HTML ................................................................................................................ 12 PDF .................................................................................................................... 12 PCL .................................................................................................................... 12 Postscript .......................................................................................................... 12 XML Publisher ................................................................................................. 14 其它 .................................................................................................................... 14 Oracle Reports配置基础 ......................................................................................... 15
对X Display Server的基本要求....................................................................... 15 EBS中关于DISPLAY的设置 ............................................................................ 15 Reports与字体 1062590.6/1015280.6 ........................................................... 16 Reports相关设置 .............................................................................................. 20 System Administrator中关于打印机的设置 ......................................................... 25
Printer ................................................................................................................ 25
Printer Type ...................................................................................................... 25 Print Style ......................................................................................................... 25 Printer Driver ................................................................................................... 26 SRW Driver(SQL*ReportWriter)文件 ...................................................... 26 关于行、列 ........................................................................................................ 27 PASTA ...................................................................................................................... 28
IX Library与报表输出(非打印) .................................................................. 28 PASTA概述 ....................................................................................................... 28 PASTA格式转换 ............................................................................................... 29 PASTA配置文件 ............................................................................................... 30
Oracle+EBS+报表打印设置基本原理
5.5. 5.6. 6.
6.1. 6.2. 6.3. 7.
PASTA打印机设置 ........................................................................................... 30 PASTA其他功能 ............................................................................................... 30 配置实例 ................................................................................................................... 31
自定义纸张 ........................................................................................................ 31 图形化报表(Postscript)打印设置 ............................................................... 33 图形化报表(XML Publisher)打印设置 ...................................................... 35 Open and Closed Issues for this Deliverable ...................................................... 38
Open Issues ..................................................................................................................... 38 Closed Issues .................................................................................................................. 38
Oracle+EBS+报表打印设置基本原理
1. Basic
Oracle本身的集成性很强、又是跨平台的,这是它的优点。然而Oracle自己并没有提供让EBS11i顺顺利利跑起来的所有工具,很多时候需要第三方工具支持,比如报表打印通常需要Xpdf,又比如在Windows上安装EBS,至少需要MKS和VC;而且Oracle系统体系庞大、运行过程复杂,有时候很难界定问题出在哪个环节,比如一个报表从设计运行到打印机输出,中间步骤繁多,如果不搞清楚,就只能找个设置文档上去乱设一通,碰到问题就不知坏在哪里了。
本文档范围:EBS11i中的Oracle Reports6i相关设置问题,其他类型的并发程序、11i之前的EBS、Reports9i、Reports的使用不在此范围。
本文旨在阐述Reports打印设置的一些来龙去脉,不作为完整的操作手册。打印设置最简要的步骤请直接看6.2节的图形化报表(Postscript)打印设置。
另外UTF8字符集下,还需要做一些额外的设置,不管怎么说,下面的Metalink文章可以做个完整的操作参考:189708.1/239196.1/99495.1/68408.1。
下面用的SCFTEST.rdf是随便做的一个简单报表,用来测试,里面包含中文。
1.1. Oracle Reports简要执行过程
… ↓
Report Builder设计 ↓
在EBS中注册 ↓
用户提交请求,选择Style、Printer,当然还有隐藏的NLS_LANG ↓
CM(Concurrent Manger,下同)调用ar60runb或者ar60runc ↓
ar60runb/c产生结果并格式化,返回.out文件,就是View Output看到的东西 ↓
CM调用由Style、Printer决定的Driver上的命令打印 ↓
1.如果是Command类型,基本上就是操作系统打印命令了 ↓
2.如果是Program类型,如PASTA,调用FNDPSTAX处理 ↓
FNDPSTAX做处理,看是否需要转成PS;如果是PDF,再调用外部命令处理 ↓
调用操作系统打印命令 ↓
打印机打印 ↓ ……
Oracle+EBS+报表打印设置基本原理
Doc Ref: <Document Reference Number>
September 27, 2011
1.2. 度量单位Scale
说明
1 Centimeter = 1624 / 4125 Inches ≈ 0.3937 Inches 1 Inch = 72 Points
I Inch = 4125 / 1624 Centimeters ≈ 2.5400 Centimeters
* Centimeter为公制单位;Inch为英制单位;Points为打印机上使用的单位(12点活字)。
* Oracle Reports默认单位是Inch;如果要改变默认度量单位,可在Tools/Preferences设置,这个只对新建的报表有效;已经建立的报表需要手工在报表的属性上修改。
1.3. 纸张大小Page Size
说明
指纸张的实际物理大小,含边距,不是打印机可打印的范围。当然,在Oracle Reports中是用计算机展现的一个区域来表示:Layout Model里面黑线框起来的区域,这个区域等价一张纸。下面以宽度为例。
看下Oracle Reports Layout的Main Section属性,其Section区域的Width和Height指的就是Page Size。以Width为例,假定现在纸张的单位是Inch,Width是8.5,进入Layout Model看到黑线所限制的宽度就是8.5 Inches。
至于布局上的Ruler,相当于实际生活中的尺子,我们说纸张宽8.5 Inches,但尺子不一定以Inch为刻度,它可以是米尺!所以Oracle Reports的Ruler单位也是单独设置的(Format/Layout Options/Rules上的Units),只不过这里多了一个特殊的单位“字符”。我们可以把Ruler的单位也改为Inches,这下就可以发现黑线所限制的宽度刚好是8.5 Inches。
字符模式的报表,Ruler的设置是有讲究的,后面章节有介绍,现在先别管。 常用的纸张大小:
* Oracle Reports默认的纸张是Letter。
1.4. 打印机与操作系统打印命令
打印机类型
注意打印机支持的类型:PCL、Postscript。
Oracle+EBS+报表打印设置基本原理
含打印控制符的纯ASCII文件大部分打印机都是认的。
打印机基本都不支持PDF,所以PDF文件直接用操作系统打印命令来打印是不可行的。至于用Adobe Acrobat Reader打开后之所以能够打印,是因为Adobe Acrobat Reader在发送给打印机之前作了一些转换。
所以如果想请求运行完,直接通过Concurrent Manger打印PDF的输出结果,需要通过第三方工具做一下转换,比如通过XPDF转成PS、通过Ghostscript转成PCL或者PS。 至于PASTA,其本身并不能处理PDF文件,不过它可以调用上述外部命令来转换。 Windows打印命令
打印命令简单格式:PRINT [/D:device] [[drive:][path]filename[...]] 其中/D:device指定打印机设备。 例子:
print /d:\\huajhua\my_printer c:\1.txt。
比较怪,我测试下来只能用网络打印机;即使是本地打印机也要共享一下然后用网络方式引用,如上例子所述。 Unix打印命令
打印机配置文件:/etc/printcap。 lpstat命令可以查看打印机状态。
打印命令简单格式:lp [-d printer] [-n copies] [-t title] [file...] 例子:
lp –d noprint –n 1 $HOME/1.txt
lp复杂的用法和其他打印相关命令请看Uinx man联机帮助。
1.5. Oracle Reports命令行
前提:PRINTER环境变量和REP-1800: Formatter error
首先用lpstat命令查看可用的打印机,然后设置PRINTER环境变量如:PRINTER=sylxzcg-pr1;export PRINTER
如果报REP-1800: Formatter error,很可能就是PRINTER环境变量问题。 当然EBS中打印,系统会传递请求提交时选择的打印机,不受环境变量限制。 字符模式命令行ar60run
EBS用的命令行在$FND_TOP/fndenv.env里面设置: APPLORC代表字符模式命令。
Oracle+EBS+报表打印设置基本原理
例子:(注:以下命令要写成一整行)
ar60run userid=apps/appuat1 batch=yes mode=character report=SCFTEST.rdf destype=file desformat=$FND_TOP/reports/L.prt desname=SCFTEST.out errfile=SCFTEST.log
注意这里的desformat,可以帮助理解下面章节关于SRW文件作用的描述。 图形模式输出ar60runb,需要X-Window和Printer等配置
EBS用的命令行在$FND_TOP/fndenv.env里面设置: APPLORB代表图形模式命令。 例子:(注:以下命令是一整行)
ar60runb userid=apps/appuat1 batch=yes mode=bitmap report=SCFTEST.rdf destype=file desformat=sylxzcg-pr1 desname=SCFTEST.ps errfile=SCFTEST.log ar60runb userid=apps/appuat1 batch=yes mode=bitmap report=SCFTEST.rdf destype=file desformat=pdf desname=SCFTEST.pdf errfile=SCFTEST.log ar60run userid=apps/appuat1 batch=yes report=SCFTEST.rdf destype=file desformat=html desname=SCFTEST.html errfile=SCFTEST.log 注意这里的desformat,可以帮助理解下面打印机的设置。
另外,这里的打印机可以是物理上不存在的,但在操作系统中一定要有。 如果有问题,说明没有配置好,请继续。 其他Reports本身的命令行 rwrun60 rwbld60 rwcli60
Reports Runtime Reports Builder Reports Server Client Web Reports
rwcgi60 or rwservlet Windows
Windows平台字符模式和图形模式用同一个命令:rwrun60.exe。
1.6. X-Windows
说明
EBS11i的Bitmap打印需要X-Windows的支持,实际上也就是X Display Server的支持;在Windows平台上这个不是问题,因为Windows本身就是在图形模式下运行。 在Unix平台就很难说了,说不定系统连显卡都没有;所以这里讨论的是Unix平台。 总的来说有3种途径可以获得X Display Server。
Oracle+EBS+报表打印设置基本原理
1. 服务器本身有显卡
这种情况是首选方案,通常可在Root启动一个X-Windows Session,然后通过xhost命令授权给相应的用户名或者机器名或者机器IP。
然后在运行需要图形支持的程序前,确保DISPLAY属性指向本机即可。 2. 服务器安装虚拟X Display Server
181244.1
如果1不行,就基本采用这种虚拟方案了,不需要显卡。通常是Xvfb(X Virtual
FrameBuffer)或者VNC(Virtual Network Computing)。不同Unix操作系统的安装文件和配置略有不同,可以看看Metalink181244.1。
可以不需要Root权限,但要有写/tmp/.X11-pipe and /tmp/.X11-unix的权限。 然后在运行需要图形支持的程序前,确保DISPLAY属性指向本机即可。 3. 其他机器如PC机安装X Server
PC机上常用的是X-Reflection或者X Win32或者X-Manager或者eXceed。一般用来做测试,本文就是用X Win32。
然后在运行需要图形支持的程序前,确保DISPLAY属性指向PC机即可。 DISPLAY环境变量
环境变量DISPLAY指明X Display Server来自哪里。 DISPLAY环境变量的一般格式:<X Server Name or IP>:0.0 通常我们运行xclock来测试当前的设置是否支持图形。
>xclock
Error: Can't open display 说明没有设置好DISPLAY属性。 > echo $DISPLAY 没有内容 > DISPLAY=localhost:0.0;export DISPLAY
Xlib: connection to "localhost:0.0" refused by server Xlib: Client is not authorized to connect to Server Error: Can't open display: localhost:0.0 说明没有授权,需要Root用xhost授权 > DISPLAY=10.73.136.70:0.0;export DISPLAY 我们设置到其他机器如PC >xclock
在客户端机器10.73.136.70会显示一个时钟:
Oracle+EBS+报表打印设置基本原理
查看X Display Server支持的字体等配置信息
1.查看字体路径,命令:xset -display <your X DISPLAY> q。 如果DISPLAY环境变量设好了,直接用xset q。 以下是我PC上x-win32的信息
> xset -display 10.73.136.70:0.0 q ……
Font Path: C:/Program Files/StarNet/X-Win32 5.3/Lib/Fonts/misc,C:/Program Files/StarNet/X-Win32 5.3/Lib/Fonts/75dpi,msfonts ……
这个和我直接在X-Win32上看到的一样:
2.查看X Server当前有哪些字体,命令:xlsfonts。 > xlsfonts
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1 -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1 -adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1
Oracle+EBS+报表打印设置基本原理
-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1 -adobe-courier-bold-o-normal--24-240-75-75-m-150-iso8859-1 -adobe-courier-bold-o-normal--8-80-75-75-m-50-iso8859-1 ……
3.查看X Server配置信息,命令:xdpyinfo -display <your X DISPLAY>。 以下是我PC上x-win32的信息
>xdpyinfo -display 10.73.136.70:0.0 name of display: 10.73.136.70:0.0 version number: 11.0
vendor string: StarNet Communications Corp. vendor release number: 5306
maximum request size: 262140 bytes motion buffer size: 256
bitmap unit, bit order, padding: 8, MSBFirst, 16 image byte order: MSBFirst
number of supported pixmap formats: 7 supported pixmap formats:
depth 1, bits_per_pixel 1, scanline_pad 16 depth 4, bits_per_pixel 4, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 122 focus: PointerRoot
number of extensions: 5 GLX LBX
SGI-GLX SHAPE XTEST
default screen number: 0 number of screens: 1 screen #0:
dimensions: 1024x738 pixels (320x230 millimeters) resolution: 81x82 dots per inch depths (3): 1, 24, 8 root window id: 0x24
depth of root window: 24 planes
number of colormaps: minimum 0, maximum 128 default colormap: 0x22
default number of colormap cells: 256
preallocated pixels: black 0, white 16777215 options: backing-store NO, save-unders YES largest cursor: 32x32
current input event mask: 0x580000
SubstructureNotifyMask SubstructureRedirectMask PropertyChangeMask number of visuals: 2 default visual id: 0x20 visual:
visual id: 0x20 class: TrueColor
Oracle+EBS+报表打印设置基本原理
depth: 24 planes
available colormap entries: 256 per subfield red, green, blue masks: 0xff, 0xff00, 0xff0000 significant bits in color specification: 8 bits visual:
visual id: 0x21 class: PseudoColor depth: 8 planes
available colormap entries: 256
red, green, blue masks: 0x0, 0x0, 0x0
significant bits in color specification: 8 bits
1.7. CM和Oracle Reports的关系
运行并发程序的时候用户可以选择打印机、Print Style和Copies。
碰到Oracle Reports类型的报表,CM调用Oracle Reports的命令行来生成结果文件。 Text输出的报表,CM同时把Column和Height信息、SRW中的参数传递给Oracle Reports。
Oracle Reports把运行的结果还给CM,这个就是.out文件。
1.8. CM和实际打印
CM得到Oracle Reports的运行结果之后,调用由Printer Driver上定义的命令;Copies=0的时候,CM也会调用?
Oracle+EBS+报表打印设置基本原理
2. Oracle Reports类型
2.1. Bitmap & Character Mode
说明
2059041.6
从EBS 11i并发程序定义界面的Output Format看,Text、XML属于Character方式,其他的(HTML、PCL、PDF、Postscript)属于Bitmap方式。 Character Mode
Character Mode报表是以ASCII字节流输出。 系统默认设置就没有中文问题。
这类报表输出的时候(不管有没有打印)都需要SRW文件的支持,因为要用它进行针对特定打印机的报表换页、粗体控制、下划线控制。不过XML输出不会加入这些控制符。
Character Mode报表输出只能以一种字体、一种大小输出。所以在设计的时候不需要特意设字体、大小。
可以跑一下系统报表Active Users,然后研究它的输出:
Bitmap Mode
Bitmap可谓所见即所得,设计和输出的样式基本一致。Bitmap模式使用的字体通常都是象形字,都是个图形。当然这些字本身也有内部编码,但不是ASCII。 Character Mode报表设计时的注意事项
我就不说了。看看Report Builder的联机帮助:Setting properties for an ASCII (character-mode) report
To set properties for an ASCII (character-mode) report: 1 n
If this is a new report:
In the Object Navigator, click the Reports node, then click in the toolbar.
2 Double-click (the properties icon) next to the report node to display the Property Palette.
Oracle+EBS+报表打印设置基本原理
3 Under the Report node, set the Width and Height properties as desired (e.g., 11 (or 15) width x 8.5 height for landscape or 8.5 width x 11 (or 15) height for portrait). 4 n
Under the Character Mode node: Set Design In Character Units to Yes.
n Set the Report Width and Report Height to the appropriate character-mode dimensions for the report (e.g., 132 (or 180) width x 66 height for landscape or 102 width x 85 (or 116) height for portrait).
5 In the Object Navigator, expand the Data Model node, then the System Parameters node. 6 7 8
Double-click the MODE properties icon to display the Property Palette. Under the Parameter node, set the Initial Value property to Character. In the Object Navigator, double-click (the Layout Model node icon).
9 In the Layout Model view, choose FormatLayout OptionsRulers to display the Ruler Settings dialog box.
10 Set Units to Character Cells and Number of Snap Points Per Grid Spacing to 1. Click OK.
11 Click View in the menu bar and make sure that Snap to Grid is checked. 12 Choose Tools/Preferences to display the Preferences dialog box.
13 On the Preferences page, set Horizontal Interfield to 1 and Vertical Interfield to 0. Click OK.
14 Choose Format/Font, and select the font, style, and size that most closely approximates the character-mode font (e.g., Courier, Regular, 12 point).
If this is a new report, you are now ready to define your data model and layout; refer to the instructions for the type of report you want to create (e.g., tabular, group left, etc.).
2.2. Text
说明
文本输出,标准的Character Mode。
2.3. XML
说明
Oracle Reports标准功能。
按照布局的层次输出XML树,XML标记号在Data Model组下面的Item属性中设置。
Oracle+EBS+报表打印设置基本原理
Doc Ref: <Document Reference Number>
September 27, 2011
2.4. HTML
说明
Oracle Reports标准功能。结果也是文本,不过在运行请求的时候会使用xlib,而且不能通过ar60run而是要通过ar60runb生成,所以我把它归为Bitmap。
2.5. PDF
说明
Oracle Reports标准功能。
官方说仅支持One Character Latin-1字符,其它多字节的字符都不支持。 当然,有公司配置过能够输出包含正常中文的PDF。待研究。
大部分打印机都不认PDF,所以如果想运行完请求直接通过Concurrent Manger打印PDF的输出结果,需要通过第三方工具做一下转换,比如通过XPDF转成PS、通过Ghostscript转成PCL或者PS。
这个可以在PASTA中设置预处理命令。
2.6. PCL
说明
不过HP的很多打印机是PCL类型的,所以需要用Ghostsript等三方工具把系统的输出结果转换成PCL,然后再送给打印机。 这个也可以在PASTA中设置预处理命令。
这里提一下华为公司目前的打印方案:并发程序定义输出类型为Text,但CM打印的时候用的是PASTA,也就是会在后台转成PS,这个PS文件传给打印服务器的打印机;这里的打印服务器的打印机是个Ghostscript虚拟打印机(类似PDF的虚拟打印机),它把文件格式转为PCL,然后再打到真正的HP PCL打印机!
2.7. Postscript
说明
通常我们讲Postscript是一种输出格式(文件格式);实际上它是一种通用的打印机语言,由Adobe公司推出,现在成为打印机的实际标准语言了,很多打印机都认识该语言。当然我们不用关心它的语法。 Postscript文件
用Postscript语言输出/组织的文件叫Postscript文件(通常是.ps文件),用文本编辑器打开,其开头通常如下(这个是一个文本文件+FNDPSTAX命令生成的):
Oracle+EBS+报表打印设置基本原理
Doc Ref: <Document Reference Number>
September 27, 2011
%!PS-Adobe-3.0
%%Creator: Pasta version 3.0.4.0 %%Pages: (atend) %%EndComments
% Copyright (c) Oracle Corporation 1999-2003. << /PageSize [612 792] /NumCopies 1 /Collate true >> setpagedevice
所以检查ps文件是否正确生成,不能只看扩展名,而是要看看文件的开头;正确的ps文件可以用软件GSView打开。 Postscript打印机
支持Postscript的打印机叫Postscript打印机,可以通过操作系统的打印命令把一个ps文件打印到打印机来测试,如果打印出来的内容和GSView看到的一样则说明是
Postscript打印机。另外可以把一个普通的文件通过打印机打印到文件(端口选文件即可),然后用文本编辑器打开该文件,其开头通常如下(这个是在Windows下一个文本文件+Print命令生成的): %!PS-Adobe-3.0
%%Title: <CEDEB1EACCE2202D20BCC7CAC2B1BE> %%Creator: PScript5.dll Version 5.2 %%CreationDate: 10/28/2005 17:46:11 %%For: hkf5554
%%BoundingBox: (atend) %%Pages: (atend)
晕,是不是和上面用FNDPSTAX命令生成的文件很类似啊?!
实际上,我在Windows平台测试EBS报表的Postscript输出,开始EBS死活没法输出正确的ps文件,虽然文件扩展名是ps。检查设置没发现问题,后来发现是我用的打印机并不支持Postscript,于是装了一台Postscript打印机就可以了。那么是不是EBS的ps输出,需要调用打印机的驱动程序(上面的PScript5.dll)来生成?按我的理解,6i Reports自己就可以生成PS文件。