まず、次の 2 点です。
- 同様の質問がたくさんありますが、どれも私の問題の解決策を見つけるのに役立ちませんでした
- 私は初心者です - プログラミングのあらゆる面で...
問題: Web サービスからバイト配列を受け取ったので、Internet Explorer 9 で PDF を表示する必要があります。次のコードは Chrome で動作していますが、IE9 では、PDF が表示されるダーク グレーのパネルしか表示されません。
Ext.define('Ext.ux.form.DocumentFrame', {
extend: 'Ext.container.Container',
alias: 'widget.documentframe',
layout: 'hbox',
initComponent: function () {
var me = this;
var binaryData = me.value.DocumentData;
var source = 'data:application/pdf;base64,' + (binaryData);
Ext.applyIf(me, {
items: [
{
xtype: 'box',
itemId: 'panel-document-frame',
width: 600,
height: 600,
autoEl: {
tag: 'object',
width: '100%',
height: '100%',
type: 'application/pdf',
data: source
}
}
]
});
me.callParent(arguments);
}
});
- MIME タイプに問題がありますか?
- バイト配列をエンコードまたはデコードする必要がありますか?
- IE9 で PDF のデータ URIを使用しようとして間違っていますか?
これが他のブラウザでは機能する理由がわかりませんが、IE9では機能しません。特に、保存されたPDFファイルへのパスを指定しても問題なく機能します(IE9でも)。これを行うには、次のように autoEl のデータ パラメータを設定します。
data: 'content/files/Designer.pdf'
注: IE9 でこれを行うと、「このページの Active X コントロールは、このページの他の部分と対話するには安全でない可能性があります」というメッセージ ボックスが表示されます。現時点では、私はこれを気にしません。
バイト配列からPDFを表示しようとするのは間違っていますか? 私は本当にこれにこだわっています。どんな助けでも大歓迎です!
前もって感謝します!
-編集-
binaryData は、変数の間違った名前または刺激的な名前である可能性があります。私の知る限り、これは次のようなバイト配列です。
JVBERi0xLjQNCiXi48/TDQolDQold1BERjMgYnkgV1BDdWJlZCBHbWJIIFYzLjY1WzQwMjY1MzIxNl0gMzJiaXQgIHVuaWMgDQolDQolDQoxIDAgb2JqDTw8L1R5cGUvTWV0YWRhdGEvU3VidHlwZS9YTUwvTGVuZ3RoIDE0OTIgPj4NCnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu
... ... ...
GQ5N2VlYjczYmVkZjczZWM5Pl0NCi9JbmZvIDIgMCBSDQo+Pg0Kc3RhcnR4cmVmDQo1NTgyDQolJUVPRg0K
結局、これは変数の完全な値ですsource
:
http://pastie.org/private/upqwjrkfwgmz1hxrx9vha
-編集2-
- Adobe Reader バージョン 11.0.3 (11.0.03.37) を使用しています。
- IE9 で AdobePDF プラグインを無効化/有効化しても効果はありません - 問題は同じままです