由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 问一个关于pdf的问题
相关主题
java可以直接去读txt file里指定的一行吗?怎麼得到字符串中的raw bytes?
如何避免java web start读取资源文件读了多次How to parse the bytes[]
problem about a web access请教:parse CSV文件
关于java执行SQL之后的内存问题?hibernate高手求助
Web Seminar hosted by CINAOUG on 2011/06/13 (转载)怎样在JAVA里把浮点型变量转化成字符串?
问个很简单的问题?怎样替换字符串中/n 到
help about bitstream writerJTable column sorting problem.
怎样吧byte[]变成java.security.Key?Re: GridLayout一问
相关话题的讨论汇总
话题: pdf话题: ole话题: access话题: sql话题: server
进入Java版参与讨论
1 (共1页)
d**k
发帖数: 1223
1
现在做一个project, 主要是把一个Access 弄成web application. 现在的问题是,在
access里的一个table中,有一个column是以ole object形式存的pdf文件。我用SSIS
把这个table转到了sql server上,这个ole object的column到了sql server 的table
后,给转化成了image的type (觉着也算靠谱儿)
然后我在程序里把这个image 读到一个byte[]里,试图render 到web page:
byte[] pdf = pdfServcie.getPdfByte();
ServletOutputStream out = response.getOutputStream();
response.setContentType("application/pdf");
out.write(pdf);
out.flush();
.....
然后browser给了个错误:File does not begin with '%PDF-'
看了看database, 所有的pdf image data 都类
m******t
发帖数: 2416
2
pdf files are supposed to begin with "%PDF-".
So after this line:
byte[] pdf = pdfServcie.getPdfByte();
If you write the byte array to a local file, can you
open it in acrobat reader?

table

【在 d**k 的大作中提到】
: 现在做一个project, 主要是把一个Access 弄成web application. 现在的问题是,在
: access里的一个table中,有一个column是以ole object形式存的pdf文件。我用SSIS
: 把这个table转到了sql server上,这个ole object的column到了sql server 的table
: 后,给转化成了image的type (觉着也算靠谱儿)
: 然后我在程序里把这个image 读到一个byte[]里,试图render 到web page:
: byte[] pdf = pdfServcie.getPdfByte();
: ServletOutputStream out = response.getOutputStream();
: response.setContentType("application/pdf");
: out.write(pdf);
: out.flush();

d**k
发帖数: 1223
3
日!这下完犊子了! 存成文件也打不开,adobe说什么文件类型不支持什么的。我做了个
测试,找了个pdf文件,然后给读成binary,存到数据库里,发现数据都是
0x25:50:44:46:2d........, 跟从access里来的就不一样。
从数据库里把binary code 的开头儿一部分放到一个hex converter 里,再转化成
ascii, 结果就是%PDF-。
用同样的办法把access里来的binary 放进去一看,狗屁都不是。
我估摸着这个binary code可能只有access 自己用个什么内置的东西读出来吧?换个地
方就不灵了。有什么办法能转化一下吗?谢谢了


【在 m******t 的大作中提到】
: pdf files are supposed to begin with "%PDF-".
: So after this line:
: byte[] pdf = pdfServcie.getPdfByte();
: If you write the byte array to a local file, can you
: open it in acrobat reader?
:
: table

m******t
发帖数: 2416
4
What's the column type in your sql server? Either that's wrong, or your code
actually saved the data as hex strings, instead of raw bytes.

【在 d**k 的大作中提到】
: 日!这下完犊子了! 存成文件也打不开,adobe说什么文件类型不支持什么的。我做了个
: 测试,找了个pdf文件,然后给读成binary,存到数据库里,发现数据都是
: 0x25:50:44:46:2d........, 跟从access里来的就不一样。
: 从数据库里把binary code 的开头儿一部分放到一个hex converter 里,再转化成
: ascii, 结果就是%PDF-。
: 用同样的办法把access里来的binary 放进去一看,狗屁都不是。
: 我估摸着这个binary code可能只有access 自己用个什么内置的东西读出来吧?换个地
: 方就不灵了。有什么办法能转化一下吗?谢谢了
:

d**k
发帖数: 1223
5
column type 是 image,我觉得数据应该算是raw bytes了。感觉上是access 在存文件
的时候做了decode, 然后只有他自己能读。看来只有回头让用户自己upload了。

code

【在 m******t 的大作中提到】
: What's the column type in your sql server? Either that's wrong, or your code
: actually saved the data as hex strings, instead of raw bytes.

F****n
发帖数: 3271
6
Did you remove the OLE header?

【在 d**k 的大作中提到】
: column type 是 image,我觉得数据应该算是raw bytes了。感觉上是access 在存文件
: 的时候做了decode, 然后只有他自己能读。看来只有回头让用户自己upload了。
:
: code

d**k
发帖数: 1223
7
ehhhh, I have no idea about OLE header, so I guess the answer should be nope
. do I need to remove it from access or database?

【在 F****n 的大作中提到】
: Did you remove the OLE header?
T*****e
发帖数: 361
8
I guess you need to either do it from SQL Server side or from your servlet
code serving the PDF files. If you need to keep updating your SQL Server
database from Access, the latter may be a better approach.
From SQL Server side, simply read out the PDF field and write back the
portion with OLE header stripped.
From the servlet side, you may check the first four bytes. If the PDF
header presents, write the whole field to output stream. Otherwise, write
everything after the OLE header. This me
1 (共1页)
进入Java版参与讨论
相关主题
Re: GridLayout一问Web Seminar hosted by CINAOUG on 2011/06/13 (转载)
由一个Java Bug谈起问个很简单的问题?
Core Java2 Notes (6)help about bitstream writer
[转载] Actually let me rephrase my question怎样吧byte[]变成java.security.Key?
java可以直接去读txt file里指定的一行吗?怎麼得到字符串中的raw bytes?
如何避免java web start读取资源文件读了多次How to parse the bytes[]
problem about a web access请教:parse CSV文件
关于java执行SQL之后的内存问题?hibernate高手求助
相关话题的讨论汇总
话题: pdf话题: ole话题: access话题: sql话题: server