使用oracle包进行pdf到文本转换

时间:2014-07-30 01:49:21

标签: sql oracle unix pdf plsql

我发现使用oracle的pdf文本转换有一些奇怪的行为 bellow是一个sql文件的代码。

create or replace directory pdf_dir as '&1';  
create or replace directory l_curr_dir as '&3';  
declare  
ll_clob  CLOB;  
l_bfile BFILE;  
l_filename  VARCHAR2(100) := '&2';  
begin  
begin  
ctx_ddl.drop_policy('test_policy');  
exception  
when others then  
null;  
end;  
ctx_ddl.create_policy('test_policy','ctxsys.auto_filter');  

l_bfile := bfilename('PDF_DIR',l_filename);  
dbms_lob.createtemporary(ll_clob, true);  
ctx_doc.policy_filter(  
      policy_name => 'test_policy'  
     , document => l_bfile  
     , restab => ll_clob  
     , plaintext => true  
     );  
ll_clob := REPLACE(TRIM(ll_clob), chr(13), chr(10));  
ll_clob := REPLACE(ll_clob, chr(10), chr(32) || '<<EOL>>' || chr(10)||'<<BOL>>');  
INSERT into tempclob_op(filename, data) VALUES(l_filename, ll_clob);  
DBMS_XSLPROCESSOR.clob2file (ll_clob,'L_CURR_DIR' , 'plaintext.text');  
dbms_lob.freeTemporary( ll_clob );  

end;  
/  

问题是我已经为10000个文件运行了这个代码,并且几乎所有文件都提供了正确的结果,但是对于将近10个文件,它会破坏plaintext.text文件中的输出。我不知道为什么会这样?此外,当我为单个文件运行此sql代码时,它给我正确的结果。

1 个答案:

答案 0 :(得分:0)

我为每个文件在循环中添加了一些2秒的延迟。并且它似乎奇怪地解决了这个问题..虽然没有具体的答案。