Curl Global Community
PDFが正常に表示されないことをハンドリングするには - Printable Version

+- Curl Global Community (
+-- Forum: Discussions (
+--- Forum: General Curl questions (
+--- Thread: PDFが正常に表示されないことをハンドリングするには (/showthread.php?tid=1044)

PDFが正常に表示されないことをハンドリングするには - umemura - 02-28-2014

Curl で EmbeddedBrowserGraphic を利用して、


RE: PDFが正常に表示されないことをハンドリングするには - umemura - 02-28-2014

EmbeddedBrowserEvent というイベントでハンドリングできるみたい。

{define-proc public {proc-test
    {type-switch e
    case error:BrowseErrorEvent do
        {popup-message "正しくPDFが表示されてないので閉じる"}
    case finish:BrowseFinishEvent do
        {if finish.location-url.extension != ".pdf" then
            {popup-message "正しくPDFが表示されてないので閉じる"}
    case doc-nfinish:DocumentFinishEvent do
        {if doc-nfinish.location-url.extension != ".pdf" then
            {popup-message "正しくPDFが表示されてないので閉じる"}
{def eb =
            {on e:EmbeddedBrowserEvent at ebg:EmbeddedBrowserGraphic do
                {proc-test e, ebg}
    catch ex:Exception do
{VBox    eb,
        label = "pdfを表示",
        {on Action do
            def u = ""
                {parse-url u}

RE: PDFが正常に表示されないことをハンドリングするには - wbardwell - 02-28-2014

EmbeddedBrowserGraphic is hosting the ActiveX control that is pretty much the same as Internet Explorer (It hosts "Shell.Explorer"). I would expect PDFs to display if they work in Internet Explorer on the same machine. But that means that a PDF displaying ActiveX must be installed. If your applet can run privileged, you could directly host a PDF displaying ActiveX using ActiveXGraphic.

RE: PDFが正常に表示されないことをハンドリングするには - umemura - 02-28-2014

Hi, wbardwell

I could not look up ClsId or PrgId of Adobe Reader. :'-(
Please tell me if you know those.

RE: PDFが正常に表示されないことをハンドリングするには - wbardwell - 03-04-2014

Any recent version can use AcroPDF.PDF or AcroPDF.PDF.1 as the ProgID for the PDF viewer.


But if that is installed, EmbeddedBrowserGraphic should also work.

RE: PDFが正常に表示されないことをハンドリングするには - umemura - 03-06-2014

「PDF をブラウザに表示しない」という設定をすると、
Acrobat Reader がインストールされていても、
ActiveX オブジェクトの生成に失敗するようですね。


wbardwell さんに教えてもらったページのほかのプログラムIDも

Thank you for your infomation!

There is a propery which Acorbat Reader inhibit Browser from showing PDF in itself.
Initialize of ActiveXobject of "AcroPDF.PDF" is failed
if the option is false.

error is forrows

アプレット [9-412] - 'AcroPDF.PDF' から ActiveX オブジェクトを初期化することが出来ませんでした。CoCreateInstance() は失敗しました: 0x80040154 クラスが登録されていません
Win32XObj.xobj-connect - <デバッグ情報がありません>
Win32XObj.from-prog-id (constructor) - <デバッグ情報がありません>
Win32XObj.create (factory) - <デバッグ情報がありません>
ActiveXObject.default (factory) - <デバッグ情報がありません>
PDF表示.curl - [evaluator for <unnamed>][行番号: 199]
EvalTopLevelEnv.finish-and-run-aux - <デバッグ情報がありません>
EvalTopLevelEnv.finish-and-run - <デバッグ情報がありません>
IncrementalEvaluatorFile.evaluate-next - <デバッグ情報がありません>
IncrementalEvaluator.evaluate-next - <デバッグ情報がありません>
Applet.load-next-aux - <デバッグ情報がありません>
Applet.load-next - <デバッグ情報がありません>
[{proc} inside Applet.load-start] - <デバッグ情報がありません>
closure_raw_handler - <デバッグ情報がありません>
AlarmQueue.dispatch-alarms - <デバッグ情報がありません>
EventQueue.dispatch-events - <デバッグ情報がありません>
dispatch-events - <デバッグ情報がありません>
run-applet - <デバッグ情報がありません> - <デバッグ情報がありません>

RE: PDFが正常に表示されないことをハンドリングするには - wbardwell - 03-17-2014

That error means that it couldn't find something with that class id, maybe you only have the 64-bit version installed, and the Curl RTE is 32bit. You could check what you find in regedit for that name.