ASPで作成したPDFバイナリデータをOracleにBLOB型で格納して、Perlからoo4oで参照する処理を作成しております。
PerlからBLOBデータを取得することはできたのですが、ところどころコードが変わっており、PDFデータとして認識されません。
格納したPDFデータをASPでは正常に参照できているため、格納されているデータに問題はないと思っております。
なんとか情報を集めて下記コードを作成しましたが、ご指摘などありましたら、宜しくお願いいたします。また、別の方法などありましたら教えてください。
[Perlソース(主要部分抜き出し)]
#セッション作成
$objSs=Win32::OLE->new('OracleInProcServer.XOraSession');
#DB接続
$objDb=$objSs->OpenDatabase($strOraSid,$strOraIdPwd,0);
#PDFデータ取得SQL作成
$strSQL="SELECT PDF_DATA FROM PDF_DATA_WRK WHERE SID = '$strID'";
#ダイナセット取得
$objDs=$objDb->CreateDynaset($strSQL,0);
#GetChunkでPDFデータ取得
my $chunkSize=50000;
my $sPos=0;
my $wk_buf="";
my $getSize=0;
my $buf_pdf="";
do{
$wk_buf = $objDs->{Fields}->Item('PDF_DATA')->GetChunk($sPos,$chunkSize);
$getSize = length($wk_buf);
$buf_pdf .= $wk_buf;
$sPos += $getSize;
} until ($getSize < $chunkSize);
$objDs->Close();
[ここまで]
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
はずしてるかもしれませんが、
binmode(STDOUT);
が抜けているとか?
この回答への補足
取得したデータを出力するときは「binmode(STDOUT);」で
行っています。
念のため、プログラムの最初に「binmode(STDOUT);」を
入れてみましたが、結果は同じでした。
なお、バイナリエディタで確認したところ、
コードが変換されてしまう一部の例は下記になります。
・「0x86」→「0x3F」
・「0x98 0x28」→「0x3F」
・「0xE9 0x0F」→「0x3F」
「0x3F」はアスキーコードで「?」なので、文字コードが
認識できていないということだと思うのですが、
オラクルからデータを取得するときに、文字コード絡みの
設定が必要なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF aiデータをpdfに変換するとサイズが変わりますか? 逆にpdfデータをaiで開くとサイズが変わりま 4 2022/11/02 01:21
- PDF ハイパーリンク先の一括変更について 2 2022/03/23 08:13
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- PDF パワポ及びPDFのデータ量について 3 2023/07/20 10:24
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- C言語・C++・C# C言語のバイナリファイルに関する質問 8 2022/06/24 07:20
- PDF いきなりPDFで文書の切り取り 3 2022/10/29 13:25
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 確定申告 住宅ローン控除 e-taxソフトでの申請について 2 2023/01/21 20:05
- その他(Microsoft Office) ExcelデータをPDFにして保存するとWordデータに変換されるようになった 10 2023/06/20 09:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】値を変更しながら...
-
【VB.NET】Excelの最終行までの...
-
XMLでデータとして画像を指定す...
-
VBAコンボボックスの内容が反映...
-
富士通(汎用機)のAIMについて
-
【C#】textBoxの指定行のデータ...
-
C# DataTableに最後に追加した...
-
DataGridの全行編集状態での行追加
-
VBAでアクセスDBからデータの取...
-
Excel VBAでフォルダ内の全テキ...
-
java / jsp selectedについて
-
エクセルのセル最終行取得
-
VB2010で、選択した系列を最前...
-
エクセルのCSV読み込みについて
-
非同期のプロセス間通信(パイプ...
-
「Nullの使い方が不正です」の...
-
access vba 『○○件づつ表示』を...
-
AdvancedFilterの状態把握
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】値を変更しながら...
-
「Nullの使い方が不正です」の...
-
【C#】textBoxの指定行のデータ...
-
VBAでアクセスDBからデータの取...
-
XMLでデータとして画像を指定す...
-
【VB.NET】Excelの最終行までの...
-
C# DataTableに最後に追加した...
-
Excel VBAでフォルダ内の全テキ...
-
VBAコンボボックスの内容が反映...
-
COBOL数値転記の仕様
-
エクセルのセル最終行取得
-
エクセルデータをVBで検索でき...
-
アクセスでウェブ上のデータを...
-
batでレジストリキーから読み取...
-
富士通(汎用機)のAIMについて
-
非同期のプロセス間通信(パイプ...
-
エクセルのCSV読み込みについて
-
MSFlexGrid 行選択状態
-
java / jsp selectedについて
-
Excel VBA で日付を4ケタの数値...
おすすめ情報