OracleEBS报表打印设置基本原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息技术最佳实践
ORACLE 核心应用技术
E-B USINESS S UITE
报表打印设置基本原理
Author:黄建华
Creation Date:November 1, 2005
Last Updated:October 27, 2016
Document Ref:<Document Reference Number>
Version:DRAFT 1A
Approvals:
<Approver 1>
<Approver 2>
Copy Number_____
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009 Document Control
Change Record
4
Date Author Version Change Reference
1-Nov-05Jianhua.Huang Draft 1a No Previous Document
Reviewers
Name Position
Distribution
Copy Location
1Library Master Project Library
2Project Manager
3
4
Note To Holders:
If you receive an electronic copy of this document and print it out, please write your
name on the equivalent of the cover page, for document control purposes.
If you receive a hard copy of this document, please write your name on the
front cover, for document control purposes.
报表打印设置基本原理Document Control ii File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
最佳实践Doc Ref: <Document Reference Number>
February 19, 2009
Contents
Document Control ..................................................................................................................
ii
1.
Basic ............................................................................................................................
2
1.1.Oracle Reports简要执行过程 (2)
1.2.度量单位 Scale (3)
1.3.纸张大小 Page Size (3)
1.4.打印机与操作系统打印命令 (3)
1.5.Oracle Reports命令行 (4)
1.6.X-Windows
.........................................................................................................
5
1.7.CM 和 Oracle Reports 的关系 (9)
1.8.CM 和实际打印
...................................................................................................
9
2.Oracle Reports类型
.................................................................................................
10
2.1.Bitmap & Character Mode 2059041.6 (10)
2.2.Text (11)
2.3.XML (11)
2.4.HTML (12)
2.5.PDF (12)
2.6.PCL (12)
2.7.Postscript (12)
2.8.
XML Publisher .................................................................................................
14
2.9.其它 (14)
3.Oracle Reports配置基础 (15)
3.1.对 X Display Server的基本要求 (15)
3.2.EBS中关于
DISPLAY的设置 (15)
3.3.Reports 与字体1062590.6/1015280.6 (16)
3.4.Reports 相关设置 (20)
4.System Administrator中关于打印机的设置 (25)
4.1.Printer (25)
4.2.Printer Type (25)
4.3.Print Style (25)
4.4.Printer Driver (26)
4.5.SRW Driver( SQL*ReportWriter)文件 (26)
4.6.关于行、列
........................................................................................................
27
5.PASTA (28)
5.1.IX Library与报表输出(非打印) (28)
5.2.PASTA 概述 (28)
5.3.PASTA 格式转换 (29)
5.4.PASTA 配置文件 (30)
报表打印设置基本原理Document Control iii File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
信息技术最佳实践
报表打印设置基本原理File Ref: 11860736.doc
Doc Ref:<Document Reference Number>
February 19, 2009 5.5.PASTA 打印机设置30
5.6.PASTA 其他功能30
6.配置实例 (31)
6.1.自定义纸张31
6.2.图形化报表(Postscript )打印设置33
6.3.图形化报表(XML Publisher)打印设置35
7.Open and Closed Issues for this Deliverable (38)
Open Issues38
Closed Issues38
Document Control iv (v. DRAFT 1A )
Company Confidential - For internal use only
February 19, 2009 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 ,再调用外部命令处理

调用操作系统打印命令

打印机打印

⋯⋯
报表打印设置基本原理Basic 2 of 41 File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
1.2.度量单位Scale
February 19, 2009
说明
1Centimeter = 1624 / 4125 Inches≈ 0.3937 Inches
1Inch = 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 的设置是有讲究的,后面章节有介绍,现在先别管。

常用的纸张大小:
Page Type Size in Inches Size in Centimeters
Letter8.5 x 1121.59 x 27.94
A48.27 x 11.6921 x 29.7
A311.69 x 16.5429.7 x 42
16K7.25 x 10.2419.68 x 27.3
* Oracle Reports默认的纸张是 Letter 。

1.4.打印机与操作系统打印命令
打印机类型
注意打印机支持的类型:PCL 、 Postscript 。

报表打印设置基本原理Basic 3 of 41 File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
最佳实践Doc Ref: <Document Reference Number>
February 19, 2009
含打印控制符的纯ASCII 文件大部分打印机都是认的。

打印机基本都不支持PDF ,所以 PDF 文件直接用操作系统打印命令来打印是不可行的。

至于用 Adobe Acrobat Reader 打开后之所以能够打印,是因为 Adobe Acrobat Reader 在发
送给打印机之前作了一些转换。

所以如果想请求运行完,直接通过第三方工具做一下转换,比如通过Concurrent Manger
XPDF 转成 PS、通过
打印 PDF 的输出结果,需要通过
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代表字符模式命令。

报表打印设置基本原理Basic 4 of 41 File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009
例子:(注:以下命令要写成一整行)
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 destype=file desformat=sylxzcg-pr1
mode=bitmap report=SCFTEST.rdf 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本身的命令行
rwrun60Reports Runtime
rwbld60Reports Builder
rwcli60Reports Server Client
rwcgi60 or rwservlet Web Reports
Windows
Windows平台字符模式和图形模式用同一个命令:rwrun60.exe。

1.6.X-Windows
说明
EBS11i 的 Bitmap 持;在 Windows 打印需要 X-Windows的支持,实际上也就是X Display Server的支平台上这个不是问题,因为Windows本身就是在图形模式下运行。

在 Unix平台就很难说了,说不定系统连显卡都没有;所以这里讨论的是Unix平台。

总的来说有3种途径可以获

X Display Server。

报表打印设置基本原理Basic 5 of 41 File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009
1. 服务器本身有显卡
这种情况是首选方案,通常可在Root 启动一个 X-Windows Session
,然后通过xhost命
令授权给相应的用户名或者机器名或者机器IP 。

然后在运行需要图形支持的程序前,确保DISPLAY属性指向本机即可。

2. 服务器安装虚拟X Display Server181244.1
1Xvfb 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 会显示一个时钟:
报表打印设置基本原理Basic 6 of 41 File Ref: 11860736.doc(v. DRAFT 1A )
Company Confidential - For internal use only
信息技术最佳实践
报表打印设置基本原理File Ref: 11860736.doc
Doc Ref:<Document Reference Number>
February 19, 2009
查看 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
Basic 7 of 41 (v. DRAFT 1A )
Company Confidential - For internal use only
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009
-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
信息技术最佳实践
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
Doc Ref: <Document Reference Number> February 19,
2009
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 也会调用?
最佳实践Doc Ref: <Document Reference Number>
February 19, 2009
2. Oracle Reports 类型
2.1. Bitmap & Character Mode2059041.6
说明
从 EBS 11i 并发程序定义界面的 Output Format 看, Text 、 XML 属于 Character 方式,其他的
( HTML 、 PCL 、 PDF 、 Postscript )属于 Bitmap 方式。

Character Mode
Character Mode报表是以ASCII字节流输出。

系统默认设置就没有中文问题。

这类报表输出的时候(不管有没有打印)都需要SRW 文件的支持,因为要用它进行针
对特定打印机的报表换页、粗体控制、下划线控制。

不过XML 输出不会加入这些控制
符。

Character Mode 报表输出只能以一种字体、一种大小输出。

所以在设计的时候不需要特意
设字体、大小。

可以跑一下系统报表Active Users,然后研究它的输出:
功能
回车
换页
粗体开始粗体结束下划线开始下划线结束L.prt 定义16进制 ASCII UltraEdit 看out记事本看 out 0D 0A
control(L)0C一条长线
esc "[1m"1B 5B 31 6D[1m
esc "[0m"1B 5B 30 6D[0m
esc "[4m"1B 5B 34 6D[4m
esc "[0m"1B 5B 30 6D[0m
linefeed ?
return ?
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:
1If this is a new report:
n 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
2.2.Text
February 19, 2009 3Under 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).
4Under the Character Mode node:
n 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).
5In the Object Navigator, expand the Data Model node, then the System
Parameters node.
6Double-click the MODE properties icon to display the Property Palette.
7Under the Parameter node, set the Initial Value property to Character.
8In the Object Navigator, double-click (the Layout Model node icon).
9In the Layout Model view, choose FormatLayout OptionsRulers to display
the Ruler Settings dialog box.
10Set Units to Character Cells and Number of Snap Points Per Grid Spacing to 1.
Click OK.
11Click View in the menu bar and make sure that Snap to Grid is checked.
12Choose Tools/Preferences to display the Preferences dialog box.
13On the Preferences page, set Horizontal Interfield to 1 and Vertical Interfield to 0.
Click OK.
14Choose 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.).
说明
文本输出,标准的Character Mode。

2.3.XML
说明
Oracle Reports标准功能。

2.4.HTML 2.5. PDF
2.6.PCL
February 19, 2009
说明
Oracle Reports标准功能。

结果也是文本,不过在运行请求的时候会使用xlib ,而且不
能通过 ar60run 而是要通过ar60runb 生成,所以我把它归为Bitmap 。

说明
Oracle Reports标准功能。

官方说仅支持One Character Latin-1字符,其它多字节的字符都不支持。

当然,有公司配置过能够输出包含正常中文的PDF 。

待研究。

大部分打印机都不认 PDF ,所以如果想运行完请求直接通过Concurrent Manger 打印PDF 的输出结果,需要通过第三方工具做一下转换,比如通过XPDF 转成 PS、通过Ghostscript 转成 PCL 或者 PS。

这个可以在 PASTA 中设置预处理命令。

说明
不过 HP 的很多打印机是 PCL 类型的,所以需要用 Ghostsript 等三方工具把系统的输出结果
转换成 PCL ,然后再送给打印机。

这个也可以在PASTA 中设置预处理命令。

这里提一下华为公司目前的打印方案:并发程序定义输出类型为Text ,但 CM 打印的时候用的是 PASTA ,也就是会在后台转成PS,这个 PS文件传给打印服务器的打印机;这
里的打印服务器的打印机是个Ghostscript虚拟打印机(类似PDF 的虚拟打印机),它
把文件格式转为PCL ,然后再打到真正的HP PCL 打印机!
2.7.Postscript
说明
通常我们讲 Postscript 是一种输出格式(文件格式);实际上它是一种通用的打印机语
言,由Adobe 公司推出,现在成为打印机的实际标准语言了,很多打印机都认识该语言。

当然我们不用关心它的语法。

Postscript文件
用 Postscript 语言输出 / 组织的文件叫Postscript 文件(通常是.ps文件),用文本编辑器
February 19, 2009
%!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文件。

February 19, 2009
2.8.XML Publisher
首先必须配置好图形显示,也就是保证Reports 能正常生成 XML ,其次是打 XML
Publisher 补丁,目前更新较快,已经到了 5.6.2。

说明
11.5.10.2 不用打任何补丁就可以使用。

XML Publisher 配,然后生成
的功能是把请求生成的
PDF 文件。

.out 文件( XML格式)和我们做的模版进行匹
既然结果是PDF ,所以如果要通过CM直接打印,只要配置好PASTA和 XPDF 或者其他
第三方工具即可。

XML Publisher本身的使用很简单,对于开发人员来说关键在于熟练设计模版。

更进一
步,关键在于如何做一个良好的设计,使得数据内容和展现方式真正分离;否则这东
西也不怎么样,用它反而累人。

不过它有丰富的API 可以调用,可以通过程序直接控制
(甚至不通过CM ),产生格式更加多样的结果,可以满足一些特殊需求。

使用
单从报表看,XML 格式的输出不是问题。

关键是模板的制作了,这个要查阅
XML Publisher User's Guide。

Oracle
此外,可以用Template Builder
整格式,可以省去大部分工作。

工具根据XML文件生成初步的模版文件,然后我们再调2.9.其它
说明
Oracle Reports本身还支持Mail 和 RTF 、 Excel 类型,不过 EBS中没有这种 output 类型。

February 19, 2009
3. Oracle Reports 配置基础
3.1.对X Display Server的基本要求
实际上是Oracle Toolkit对 X Display Server的要求,这个基本上都没问题,所以也不是
关键。

Oracle Toolkit是Oracle 6i工具包(Tools 6i
)和安装程序(orainst)的基础部件,它需
要 X Display Server支持下面3个要求。

可以用前面提到的命令xdpyinfo看一下;然后调整X Display Server的设置。

Default visual color class - PseudoColor.
Other settings may cause color rendering problems such as images appearing as
a "black" square.
Dots Per Inch (DPI) - 72x72.
If this exact dpi is not achievable then some generated images may be scaled
accordingly. Severe variance, such as a DPI of 1000x1000, may cause some products
to fail.
Depth - 8 bit color
8-bit color is also referred to as "256 color mode" or 8 bit planes。

3.2. EBS中关于 DISPLAY 的设置
手工设置
很多文件都可设置,不同的Metalink不同的文档说得都不一样!!
下面文件都是在Application Tier,不是DB Tier:
$APPL_TOP/<SID> .env
$APPLCSF/scripts/<SID>_<NODE>/adcmctl.sh
$APPLCSF/scripts/<SID>_<NODE>/adfrmctl.sh
$APPLCSF/scripts/<SID>_<NODE>/adrepctl.sh
$APPLCSF/scripts/<SID>_<NODE>/gsmstart.sh
$IAS_ORACLE_HOME/Apache/Jserv/etc/jserv.properties
$ORACLE_HOME/reports60.csh
$ORACLE_HOME/reports60.sh
$ORACLE_HOME/reports60_server
$FND_TOP/fndenv.env
$ORACLE_HOME/<SID> .env
$FND_TOP/bin/gsmstart.sh
$APPL_TOP/admin/<SID>.xml或者 <SID>_<NODE>.xml
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009
CM
是不是很晕?一般是按照Metalink相关Notes的说明,来看看到底要设置哪些。


而言,我认为最直接的就是用:$APPLCSF/scripts/<SID>_<NODE>/gsmstart.sh
设完重启CM。

自动设置
最好的办法是在Context 文件中改,然后用Autoconfig命令自动写到各个配置文件中。

Context 文件: $APPL_TOP/admin/<SID>.xml或者<SID>_<NODE>.xml
Autoconfig : $APPLCSF/scripts/<SID>_<NODE>/adautocfg.sh
查看环境变量
1. Form 的,注意手工输入DISPLAY,这个不保险
2、系统的(也就是并发管理器的),这个最准
3.3.Reports与字体1062590.6/1015280.6
设计字体
Windows下开发,默认使用
Reports 设计的时候是用开发平台的字体,比如我们在
Courier New字体:
最佳实践Doc Ref: <Document Reference Number>
February 19, 2009
*Oracle 提供的标准报表是Courier 字体。

GUI 显示字体 /象形字
Bitmap 文件或者 GUI 软件在终端显示的时候,并不一定是用文件中指示的字体,而是
用 GUI 环境上的近似字体。

针对 Unix来说, GUI 显示字体,也就是 X Display Server上的字体,称为 X Font 。

X fonts (display fonts) are bitmap display glyphs, which are displayed on an X
terminal by an X Server。

打印字体 /矢量字
文件打印出来的时候使用的是打印机上的字体,并不是我们设计或者打开文件所看到
的字体。

Printer fonts are Postscript fonts (mathematical descriptionsof fonts, not bitmaps)
which inhabit a Postscript printer and are generated by a Postscript Interpreter on
that printer。

通常 Windows 上的打印机只要有适当的内存空间,应用程序就可以动态、实时给打印
机载入需要的字体( the fonts in the printer may be dynamically changed by the
application),当然如果需要频繁的载入字体、删除不用的字体以腾出空间,速度会
慢点。

Unix 上则不同,它基本上不支持打印机字体的动态载入,甚至无法知道当前打印机实
际支持哪些字体,而是通过一个PPD 配置文件来查看打印机的字体!
字体映射 Font Mapping
由上可见,从设计到打印,实际上使用的字体都不同,比如在Windows上设计用的字
体和 Unix报表生成结果的字体基本是不同的(尽管可以通过一些方法把Windows上的
字体装到 Unix 上来用),同样显示的字体和打印的也不同。

then what you see on the
screen will not exactly match what is printed。

a given application may give
different results depending upon the state of the X server。

这就引入字体映射的概念:Reports 设计的字体在 Unix 上到底用什么字体来处理?打印
的时候到底要转成什么字体?
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009
如何确定GUI显示字体
可用前面提到的xlsfonts 来查看当前X Display Server上支持的字体,按照Metalink的说
法, Reports will use only fonts found in the ISO8859-1 font family。

在Unix上,显示
和打印是完全独立的。

另外我们可以给X Display Server
安装新的字体,以X-Win32 为例,可以指定一个字体
目录或者 Font Server :
如何确定打印字体
从 Unix 上看,系统首先根据 uifont.ali 把设计时候的字体映射为 Unix 上可能的现实字体,再
根据 PPD 文件来确定打印机上有哪些字体,而不是直接到打印机上查询;所以正确的 PPD
文件设置就显得很重要了。

而 PPD 文件是和打印机关联的,这个是在
uiprint.txt中定义打印机的时候定义的。

UNIX上,实际上没有我们所理解的打印驱动,程序自己根据PPD 生成打印文件,再由
操作系统传送给打印机。

PPD : Postscript Printer Description,可简单理解为系统看到的打印机就是这样的!
下面先列举要用到的文件:
$ORACLE_HOME/guicommon6/tk60/admin/uifont.ali
$ORACLE_HOME/guicommon6/tk60/admin/uiprint.txt
$ORACLE_HOME/guicommon6/tk60/admin/PPD/default.ppd
$ORACLE_HOME/guicommon6/tk60/admin/PPD/datap462.ppd
$ORACLE_HOME/guicommon6/tk60/admin/AFM/
以上面的 Courier New为例,uifont.ali中有如下映射:
February 19, 2009
正好有这个字体,就可
说明 Courier New 在当前配置下将映射为 courier ,如果 X Server 以如
愿显示了,如果没有则可能用这个文件中定义的默认字体了。

再看一下uiprint.txt:
假定我们用sylpp04-pr4这个打印机,那么PPD 文件是 default.ppd。

可以看到它又包含了datap462.ppd文件,而且告诉我们说,包含文件的位置很重要:If you move this to the end, the included file's info will override the defaults above。

不过这个目前没有问题。

我们再看看datap462.ppd:
February 19, 2009
其中 Courier: Standard "(001.004)" Standard ROM
用什么字体生成打印文件了。

进一步系统会根据这个去找就是我们的目标了,系统最终决定该Courier的AFM文件:
注意 AFM 文件不是字体文件本身,实际的字体文件还是在打印机中!Please note that
the AFM files are NOT font files, they are metrics files which give Oracle information
on how to properly format the character for the printer. If you have an AFM file, but
the font does not live in the printer, then you are out of luck!
上面我们的运气都不错,一路下来都能找到映射关系。

实际情况比较复杂,假如没有
找到完全匹配的,系统会用类似匹配,优先级是:
fontweight > fontwidth。

fontface > fontsize > fontstyle >
AFM和如何使用Windows字体
As the AFM files are NOT fonts themselves, if you wish to have more Postscript
printer fonts available, you will need to:
(1)purchase the fonts and have them installed on the printer
(2)obtain revised AFM and PPD files from the font/printer vendor
(3)obtain matching X Server display fonts (if necessary).
As a work-around, it is possible to transfer MS Windows fonts to a Unix platform
and convert them into the postscript format (e.g .pfa, .pfb, .afm)using freeware such
as ttf2pt1.
Reference:Note 229122.1 How to Use AFM Files to Prevent Misaligned Reports
Output due to Font Mapping
3.4. Reports 相关设置
前提
首先要确保有可用的X Display Server、正确的DISPLAY和PRINTER环境变量设置。

.env .sh
信息技术最佳实践Doc Ref:<Document Reference Number>
February 19, 2009
如:
PRINTER=sylxzcg-pr1;export PRINTER DISPLAY=10.73.136.70:0.0;export DISPLAY ////////PRINTER=noprint;export PRINTER 注:我认为这个不用设注:一定要设
测试命令说明
测试命令1: ar60runb或者rwbld60
测试命令 2: ar60runb userid=apps/appuat1 batch=yes report=SCFTEST.rdf destype=file desformat=sylxzcg-pr1 errfile=SCFTEST.log mode=bitmap
desname=SCFTEST.ps
或者
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 mode=character report=SCFTEST.rdf
destype=file desformat=$FND_TOP/reports/L.prt desname=SCFTEST.out
errfile=SCFTEST.log
配置之前错误:REP-3000 和 core dumped
>测试命令 1
(c)Copyright 1999 Oracle Corporation. All rights reserved.
REP-3000: Internal error starting Oracle Toolkit.
> 测试命令 2之 1
Memory fault - core dumped
> echo $NLS_LANG
AMERICAN_AMERICA.ZHS16CGB231280记下字符集
> 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
-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
-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1
⋯⋯
配置:字体别名
$ORACLE_HOME/guicommon6/tk60/admin/uifont.ali
基本不用动,除非想加入其他映射。

配置:打印机,不然报REP-1800
当然首先要添加一个 UNIX 操作系统的打印机(可以是不存在的打印设备),然后修改
uiprint.txt 。

$ORACLE_HOME/guicommon6/tk60/admin/uiprint.txt
如: ps_printer:PostScript:2: test :default.ppd:
加入实际的打印机,怎么加看该文件中的说明。

PRINTER=注: ps_printer为UNIX操作系统的打印机;还要再设置环境变量
ps_printer到应用用户的环境脚本$APPL_TOP/<SID>.env中。

$ORACLE_HOME/guicommon6/tk60/admin/PPD/default.ppd
一般不用动,当然uiprint.txt中指定的不一定是default.ppd;不过有Metalink文章说Postscript 打印机一定要用 default.ppd 。

$ORACLE_HOME/guicommon6/tk60/admin/PPD/datap462.ppd
一般不用动,除非想自定义纸张大小等。

*很奇怪,系统标准报表用命令行生成 ps ,英文没有问题;我做的报表连英文都是乱
码!系统报表只要我改了字体即使再改回来,英文又乱码了!
Symbol字体!
* 对比生成的ps文件,发现我改过的用

* 把 datap462.ppd文件中的*Font Symbol: Special "(001.001)" Special ROM这句注释掉,居然就没有问题了!
$ORACLE_HOME/guicommon6/tk60/admin/AFM/
一般不用动,除非想加入新的AFM 。

配置: GUI 颜色和字体,不然报REP-3000
$ORACLE_HOME/guicommon6/tk60/admin/Tk2Motif.rgb
注意这里面的*也是统配符,比如
Tk2Motif*fontList:-*-helvetica-bold-r-normal-*-120-*=1可以匹配:
-adobe-helvetica-bold-r-normal--12-120-75-75-p-68-iso8859-1
-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1
具体配置如下:
⋯⋯
Tk2Motif*fontList: -misc-fixed-medium-r-normal--14-130-75-75-*-*-*-*:
⋯⋯
Tk2Motif*fontBaseReg:iso8859-1
⋯⋯
Tk2Motif*fontMapCs: iso8859-1=ZHS16CGB231280
⋯⋯
配置后
>测试命令 1
没有问题,在PC 机这边显示:
>测试命令 2之 1
没有问题!
>vi SCFTEST.ps
%!PS-Adobe-3.0
%%Creator: Oracle Toolkit 2 for Motif 6.0.8.24.0 PRODUCTION
%%Version: 6.0 8
%%CreationDate: (Wed Nov 2 17:40:47 2005)
⋯⋯
>测试命令 2之 2
没有问题!
>vi SCFTEST.pdf
%PDF-1.1
1 0 obj
<<
/Creator (Developer 2000)
/CreatorDate (Wed Nov 02 05:45:09 PM 2005)
/Author (Oracle Reports)
/Producer (Oracle PDF driver)
/Title (FNDSCURS.pdf)
>>
endobj
5 0 obj
<</Length 6 0 R>>
stream
⋯⋯
>测试命令 2之 3
没有问题!呵呵,字符模式本来就没问题,而且本来也没中文问题!
>vi SCFTEST.out
到此为止命令行调试应该成功,不过中文PS还是乱码。

到EBS中提交的结果和这里用命令行产生的结果一样。

相关文档
最新文档