ITPUB论坛 » ERP二次开发 » XML Publisher如何打印圖片,例如員工照片
新一届的微软MVP评选已经开始,欢迎各位推荐!
2007-7-6 16:50 Arrayarsenefang
XML Publisher如何打印圖片,例如員工照片

XML Publisher如何打印圖片,例如員工照片

請問在HR模組員工基本資料中有一個照片功能,它是使用BLOB型式保存,在XML Publisher制作的報表中如何將它取出打印?! Thanks.:o

2007-7-6 19:34 jerry_li1
这个没用过,搂主如果解决了把方法贴出来阿

2007-7-7 12:30 Jovi li
关注。。。

2007-7-7 13:49 moonsoft
应该可以

XML 里面的图标不是图片么

2007-7-7 14:59 arsenefang
俺是要打印TABLE裡面某個BLOB裡存放的圖片。是要按每筆記錄顯示不同的圖片。

2007-7-7 19:04 zeeno.xie
用HTML是可以的,不过得是firefox浏览器。图片数据用base64编码,然后<img src="data:image/png;base64,abcd....">

用xml publisher倒没试过。[url=http://forums.oracle.com/forums/thread.jspa?threadID=347223]这篇帖子[/url]说可以将xml中的图片的base64编码进行解码输出,base64编码倒可以实现,但这个输出我还不知道用什么办法好。

2007-7-10 13:42 arsenefang
自問自答一下,在Metalink上查到下列方案,還沒時間測試驗證。

Solution
1. Insert a dummy image in your template.

2. In the Format Picture dialog box select the Web tab.

3. Enter the following syntax in the Alternative Text region to reference the OA_MEDIA directory:

Syntax: url:{concat('$[OA_MEDIA]/',.//CF_IMAGE)}

At run time the image will be inserted.                                 


Note OA_MEDIA is an Apache variable. OA_MEDIA on the Apache node must be used to store the
images. CF_IMAGE is a data element in the XML data that dynamically points to the image file name.

2007-7-11 08:41 zeeno.xie
这样只是链接个URL,但首先要解决从lob取图片数据的问题。
不过,我想可以同时把图片数据生成到utl_file_dir,然后引用这个URL :)


[QUOTE][i]最初由 arsenefang 发布[/i]
[B]自問自答一下,在Metalink上查到下列方案,還沒時間測試驗證。

Solution
1. Insert a dummy image in your template.

2. In the Format Picture dialog box select the Web tab.

3. Enter the following syntax in the Alternative Text region to reference the OA_MEDIA directory:

Syntax: url:{concat('$[OA_MEDIA]/',.//CF_IMAGE)}

At run time the image will be inserted.                                 


Note OA_MEDIA is an Apache variable. OA_MEDIA on the Apache node must be used to store the
images. CF_IMAGE is a data element in the XML data that dynamically points to the image file name. [/B][/QUOTE]

2007-7-13 19:48 arsenefang
BLOB數據可以還原為 jpg 嗎?! :-O

2007-7-18 22:19 realakuma
值得研究的问题啊。我喜欢,

2007-7-19 11:54 chirsdong
刚有个方法,可以看一下:

[url]http://www.itpub.net/showthread.php?s=&postid=8089757#post8089757[/url]

2007-7-19 12:07 Harry_shan
[QUOTE][i]最初由 chirsdong 发布[/i]
[B]刚有个方法,可以看一下:

[url]http://www.itpub.net/showthread.php?s=&postid=8089757#post8089757[/url] [/B][/QUOTE]

arsenefang ,这个例子有试过吗?可行吗?

:)

2007-7-19 16:05 arsenefang
[QUOTE][i]最初由 Harry_shan 发布[/i]
[B]

arsenefang ,这个例子有试过吗?可行吗?

:) [/B][/QUOTE]

今天抽了點時間作了測試,

提交請求後,狀態Completed,Warning。
沒有Output產生,檢查Log File內容如下:
+-----------------------------
| Starting concurrent program execution...
+-----------------------------


APPLLCSP Environment Variable set to :

XML_REPORTS_XENVIRONMENT is :
/d01/DEV/devora/8.0.6/guicommon6/tk60/admin/Tk2Motif_UTF8.rgb

XENVIRONMENT is set to  /d01/DEV/devora/8.0.6/guicommon6/tk60/admin/Tk2Motif_UTF8.rgb


Current NLS_LANG and NLS_NUMERIC_CHARACTERS Environment Variables are :
American_America.UTF8

'.,'

Spawned Process 30233
REP-3000: Internal error starting Oracle Toolkit.


看來錯誤原因是REP-3000: Internal error starting Oracle Toolkit.

不知道該如何解決 :(

測試環境R11i.10.2

2007-7-19 16:10 arsenefang
Log File下還有一些訊息:
+------------- 1) PUBLISH -------------+
Beginning post-processing of request 264095 on node SSZ-ORACLE at 19-JUL-2007 16:05:12.
Post-processing of request 264095 failed at 19-JUL-2007 16:05:13 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.
+--------------------------------------+
提示要去檢查 OPP 的Log

OPP 的Log:
[7/19/07 4:05:45 PM] [1816:RT264096] Executing post-processing actions for request 264096.
[7/19/07 4:05:46 PM] [1816:RT264096] Starting XML Publisher post-processing action.
[7/19/07 4:05:46 PM] [1816:RT264096]
Template code: SHRHREMP
Template app:  SHR
Language:      en
Territory:     CN
Output type:   PDF
[7/19/07 4:05:46 PM] [UNEXPECTED] [1816:RT264096] java.lang.ArrayIndexOutOfBoundsException: 0
        at oracle.apps.xdo.common.image.ImageReader.checkFormat(ImageReader.java:107)
        at oracle.apps.xdo.common.image.ImageReader.analyze(ImageReader.java:144)
        at oracle.apps.xdo.common.image.ImageReader.load(ImageReader.java:310)
        at oracle.apps.xdo.generator.pdf.PDFGenerator.createPDFImageReference(PDFGenerator.java:1760)
        at oracle.apps.xdo.generator.pdf.PDFGenerator.getImage(PDFGenerator.java:1848)
        at oracle.apps.xdo.template.fo.area.AreaTree.getImage(AreaTree.java:507)
        at oracle.apps.xdo.template.fo.area.InstreamForeignObjectArea.<init>(InstreamForeignObjectArea.java:40)
        at oracle.apps.xdo.template.fo.elements.FOInstreamForeignObject.doLayout(FOInstreamForeignObject.java:80)
        at oracle.apps.xdo.template.fo.elements.FOInline.doLayout(FOInline.java:103)
        at oracle.apps.xdo.template.fo.elements.FOInline.doLayout(FOInline.java:61)
        at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:180)
        at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:142)
        at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:180)
        at oracle.apps.xdo.template.fo.elements.table.FOTableCell.doLayout(FOTableCell.java:77)
        at oracle.apps.xdo.template.fo.elements.table.FOTableRow.doLayout(FOTableRow.java:139)
        at oracle.apps.xdo.template.fo.elements.table.FOTableBody.doLayout(FOTableBody.java:99)
        at oracle.apps.xdo.template.fo.elements.table.FOTableBody.doLayout(FOTableBody.java:76)
        at oracle.apps.xdo.template.fo.elements.table.FOTable.doLayout(FOTable.java:165)
        at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:180)
        at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:142)
        at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:76)
        at oracle.apps.xdo.template.fo.elements.FOFlow.doLayout(FOFlow.java:76)
        at oracle.apps.xdo.template.fo.elements.FormattingEngine.startLayout(FormattingEngine.java:148)
        at oracle.apps.xdo.template.fo.elements.FormattingEngine.run(FormattingEngine.java:95)
        at oracle.apps.xdo.template.fo.FOHandler.endElement(FOHandler.java:238)
        at oracle.xml.parser.v2.XMLContentHandler.endElement(XMLContentHandler.java:196)
        at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1212)
        at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:301)
        at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:268)
        at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:149)
        at oracle.apps.xdo.template.fo.FOProcessingEngine.process(FOProcessingEngine.java:266)
        at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:959)
        at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:1766)
        at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:1277)
        at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:229)
        at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:153)

[7/19/07 4:05:46 PM] [1816:RT264096] Completed post-processing actions for request 264096.

=.=" 看不懂..........

2007-7-20 00:43 adian
晕,我没有碰到这些问题。


根据日至文件提示,查看了Oracle处理图像的Java类ImageReader.java中:
a.  先调用load方法将图像载入到一个数组mBytes
b.  然后调用analyze
c. 在analyze方法中,调用mFormat = checkFormat(mBytes);。问题就在这个方法中出错。最后的Java提示为:java.lang.ArrayIndexOutOfBoundsException: 0,所以可能是数组abyte0中没有数据。


1)检查一下图片格式? 格式jpg,gif,png,如果bmp可能会有问题。 大小?这种方法好像有64K大小的限制,Oracle自带的处理方法没有这个限制,还没有试验出来。blob字段中是否有图片数据?

刚才我插入一个纪录,没有插入图片,错误提示和你的不一样:(


日志提示出错的语句,这个方法根据图像数据的标志位判断图像的格式:
[PHP]
public static int checkFormat(byte abyte0[])
    {
        if(unsigned(abyte0[0]) == 255 && unsigned(abyte0[1]) == 216)
            return 0;
        if(unsigned(abyte0[0]) == 71 && unsigned(abyte0[1]) == 73 && unsigned(abyte0[2]) == 70)
            return 1;
        if(unsigned(abyte0[0]) == 137 && unsigned(abyte0[1]) == 80 && unsigned(abyte0[2]) == 78 && unsigned(abyte0[3]) == 71)
            return 2;
        if(unsigned(abyte0[0]) == 66 && unsigned(abyte0[1]) == 77)
            return 3;
        return unsigned(abyte0[0]) != 40 || unsigned(abyte0[1]) != 0 ? -1 : 4;
    }
[/PHP]


2) 原来的文档中,漏掉了在建立模板文件的时候,需要编辑图像对应的field,
<fo:instream-foreign-object content-type="image/gif"><xsl:value-of select="MOB_GETBASE64STRING_IMAGE_BLOB"/>
</fo:instream-foreign-object>,已经在新的文档中添加了。


这个问题我也不太清楚......

如果你解决了这个问题,更新一下你的解决方法啥:)






[QUOTE][i]最初由 arsenefang 发布[/i]
[B]Log File下還有一些訊息:
+------------- 1) PUBLISH -------------+
Beginning post-processing of request 264095 on node SSZ-ORACLE at 19-JUL-2007 16:05:12.
Post-processing of request 264095 failed at 19-JUL-2007 16:05:13 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.
+--------------------------------------+
提示要去檢查 OPP 的Log

OPP 的Log:
[7/19/07 4:05:45 PM] [1816:RT264096] Executing post-processing actions for request 264096.
[7/19/07 4:05:46 PM] [1816:RT264096] Starting XML Publisher post-processing action.
[7/19/07 4:05:46 PM] [1816:RT264096]
Template code: SHRHREMP
Template app:  SHR
Language:      en
Territory:     CN
Output type:   PDF
[7/19/07 4:05:46 PM] [UNEXPECTED] [1816:RT264096] java.lang.ArrayIndexOutOfBoundsException: 0
        at oracle.apps.xdo.common.image.ImageReader.checkFormat(ImageReader.java:107)
        at oracle.apps.xdo.common.image.ImageReader.analyze(ImageReader.java:144)
        at oracle.apps.xdo.common.image.ImageReader.load(ImageReader.java:310)
=.=" 看不懂.......... [/B][/QUOTE][PHP]

2007-7-20 12:53 goodluck_gu
没玩过,进来学习一下

2007-7-23 11:33 chirsdong
[QUOTE][i]最初由 adian 发布[/i]
[B]晕,我没有碰到这些问题。


根据日至文件提示,查看了Oracle处理图像的Java类ImageReader.java中:
a.  先调用load方法将图像载入到一个数组mBytes
b.  然后调用analyze
c. 在analyze方法中,调用mFormat = checkFormat(mBytes);。问题就在这个方法中出错。最后的Java提示为:java.lang.ArrayIndexOutOfBoundsException: 0,所以可能是数组abyte0中没有数据。
[/B][/QUOTE]


好筒子。。。

Harry,建议把他的那个帖子受精。。:soldier:

2007-7-23 15:10 Harry_shan
[QUOTE][i]最初由 chirsdong 发布[/i]
[B]


好筒子。。。

Harry,建议把他的那个帖子受精。。:soldier: [/B][/QUOTE]

是的,应该很有帮助。

2007-7-26 13:41 arsenefang
>1)检查一下图片格式? 格式jpg,gif,png,如果bmp可能会有问

jpg,換用你的個人頭像也不行。

>2) 原来的文档中,漏掉了在建立模板文件的时候,需要编辑图像对应的field,

確定加上了。

>根据日至文件提示,查看了Oracle处理图像的Java类ImageReader.java中:

請問如何查看 Java 類裡的代碼?!

2007-7-26 22:47 adian
使用下在一个“Java源代码反编译专家”,对目录
C:\Program Files\Oracle\XML Publisher Desktop\Template Builder for Word\jlib\xdocore.jar的类库进行反编译,就可以看到对应的原文件。找到oracle\apps\xdo\common\image\ImageReader.java,用文本文件打开就可以看到了。

另外,你再次运行之后,日志的错误信息还是一样的?


[QUOTE][i]最初由 arsenefang 发布[/i]
[B]>1)检查一下图片格式? 格式jpg,gif,png,如果bmp可能会有问

jpg,換用你的個人頭像也不行。

>2) 原来的文档中,漏掉了在建立模板文件的时候,需要编辑图像对应的field,

確定加上了。

>根据日至文件提示,查看了Oracle处理图像的Java类ImageReader.java中:

請問如何查看 Java 類裡的代碼?! [/B][/QUOTE]

页: [1] 2 3


Powered by ITPUB论坛