QNo. |
Q.質問 |
日付 |
A.回答 |
21 |
Q.ABCpdf .NET 6Jの32ビット製品(Standard, Professional)を使用して64ビットOSで運用できますか? |
2008/11/14 |
A.はい、32ビットアプリケーションとして運用できます。
ただし、VS2005や2008でアプリケーションを開発される場合はプラットフォームターゲットを「x86」にしてビルドする必要があります(「any CPU」でビルドすると64ビットOSでは動作いたしません)。 |
20 |
Q.Adobe
Designerのフォームをうまく使えないのはなぜですか? Acrobat6よりもAcrobat7のフォームのほうが難しいのは? |
2007/11/13 |
A.Adobe
DesignerはAdobe
Acrobatの一部としてインストールされるかもしれませんが、基本的にはPDFを出力形式として使用している別のアプリケーションです。
ツールメニューの「Advanced
Editing」ツールを使用してフォームを編集するためにAcrobatを使用できます。しかし、フォームメニューまたはツールバーから項目を選択した場合、多分AcrobatではなくAdobe
Designerでフォームを編集することになります。
Adobe
Designerは出力方法としてPDFを使用します。しかし、Designerの処理方法はDesignerで作成されたフォームは基本的にはAcrobatで作成されたフォームとは異なります。
たとえば、Acrobatが作成したフォームは通常背景を含んで次にフィールドセットを含みます。フィールドは背景とは別に処理します。
Adobe
Designerが作成したフォームはこの区別がありません。フィールドを指定するために個別のデータの記憶装置を使用します。PDFのコンテンツはこのフィールドの明細の単なる可視表現です。基本的なフィールドの明細はPDFに組み込まれたXMLのかたまりでできています。
DesignerのドキュメントはPDFドキュメントなので、PDFのコンテンツを追加する標準のABCpdfのメソッドを使用してドキュメントにコンテンツを追加できます。しかし、次にそのコンテンツを開いた場合、Designerが個別のフィールドの明細を使用してPDFの外観を再作成するので、Designerではそのコンテンツは多分削除されてしまいます。
同じく、PDF出力は単なる個別のフィールドの明細の可視表現なので、フィールドや背景は互いに結合されている場合があります。従って、ABCpdfを使用してフィールドを削除して、枠が後ろに残っている場合があります。
フォームを変更する場合、Designerが作成したフォームよりもAcrobatが作成したフォームで変更するのが一番簡単だとお分かりになると思います。 |
19 |
Q.ABCpdfを使用してフィールドを削除すると、Acrobatに「フィールドの形がおかしい」と表示されます。なぜですか? |
2007/11/13 |
A.(Acrobat
7に付属している)Adobe Designerを使用してフォームを作成した場合、Acrobat
6で使用されていなかった新しいフィールド参照をいくつか使用します。
フィールドが削除され、フィールドの参照がそのまま残されると、Acrobatはそのフィールドが無効だと通知する場合があります。
この問題を解決するには、次のように、フィールドを削除した後にAcroFormを削除してください。
theDoc.SetInfo theDoc.Root, "/AcroForm:Del", ""
別の方法としては、フィールドの値を設定しているだけであれば、次のようにXFAエレメントを削除することにより解決できます。
theDoc.SetInfo theDoc.Root, "/AcroForm/XFA:Del", "" |
18 |
Q.WebMatrixからABCpdfを使うには? |
2007/11/13 |
A.特定の開発環境からアセンブリをリンク付ける方法は開発環境に非常に依存しているので、お客様の選んだ環境のヘルプを調べてみてください。
しかし、アセンブリにリンク付けるには次のようにレジスタタグを使用して名前空間をインポートしてみることができます。
<%@ Register TagPrefix="pdf" Namespace="WebSupergoo.ABCpdf6"
Assembly="ABCpdf, Version=6.0.0.5, Culture=neutral,
PublicKeyToken=a7a0b3f5184f2169" %>
明らかに、使用しているアセンブリにあうようにバージョンと多分キーを変更する必要があります。 |
17 |
Q.AddImageUrlを使用してブラウザにPDF結果をストリームするとページがキャッシュされるのはなぜですか? |
2007/11/13 |
A.原因は2つあります。
1つは、URLが何らかの理由でキャッシュされる場合です。ABCpdfのキャッシュを無効にしたからといって、それがどこか別のところにキャッシュされないとは限りません。詳細は、ヘルプのHTML
/ CSS レンダリングを参照してください。
もう1つは、PDF自体がキャッシュされる場合です。一般的には、直接ブラウザにPDFをストリームして、特定のIIS設定(例:有効期限)が無効になっている場合にこのようなことが起こりえます。
まず、問題を突き詰めてください。クライアントにPDFを送るのと同時にPDFをディスクにも保存してください。そうすることでPDF自体がキャッシュされるのか、URLがキャッシュされる(結果として同じPDFが繰り返し作成される)のかを判断できます。
URLがキャッシュされる場合、URLのダミーメソッドを見てみる必要があります。この場合、ABCpdfはキャッシュではない何か別のことを行っていて、それを回避する必要があります。
PDFがキャッシュされる場合、IISの設定を見る必要があります。ABCpdfはキャッシュ(このようにPDFをキャッシュすることはできません)を行っていないので、IIS/ASPのどちらかで何かが起きているか、あるいはプロキシサーバ/クライアントで何かが起こっているかを確認する必要があります。
ほとんどの場合、URLのダミーメソッド(詳細はヘルプを参照)を見てみることが解決への近道です。 |
16 |
Q.共有/ホストサイトにABCpdf
.NETを置くことはできますか? |
2007/11/13 |
A.一般的にはできます。
ヘルプの「手動でのインストール」の手順に従ってください。任意のDLLをbinディレクトリに配置し、ライセンスキー(または体験版ライセンス)をコードに組み込む必要があります。
共有サーバでのABCpdf
.NETの大半のインストールはシームレスですが、サーバではゲストなのでホストが許可をロックしている場合があります。この場合、できることはほとんどありません。
専用サーバでの運用をお勧めするのはこのためです。専用のサーバは思ったより安く、専用サーバの制御レベルは非常に意味のある唯一の利点です。専用サーバでの運用はよい決断です。
不可欠なこととしては早く運用し、どんな問題でも重大な問題になる前に見つけることです。 |
15 |
Q.AddImageHtmlを使用した場合、スタイルとイメージが反映されないのは? |
2007/11/13 |
A.HTMLがファイル内に存在しないので位置がありません。
外部のスタイルシートやイメージは、しばしば相対URLで参照されます。そのHTMLの位置がないので、これらの相対参照を解決することができません。
したがって、スタイルシートとイメージのリンクを絶対参照として用意する必要があります。または、HTML
BASEエレメントを使用して適切なベース位置を指定できます。もしくは、HTMLを適切な位置のファイルに保存してAddImageUrlを使用できます |
14 |
Q.PDFをインターネットエクスプローラ(IE)で表示する際に問題が生じます。何が原因なのでしょうか? |
2007/11/13 |
A.IEとAcrobatとの使用で常に問題がないわけではありません(特にhttpsまたはIEの旧式バージョンを使用している場合)。OS、IE、Acrobatの相互運用があるので、どこに問題があるのか正確に判断するのは困難で、これらのどれもが問題になり得ます。IE
5.5は特に厄介です。
IEは、時々特定のコンテント型で引っかかり、PDFをHTMLとして表示しようとします。この場合、%PDFで始まるランダムなテキストを目にします。これは、前にHTMLを表示していたウィンドウにPDFデータを送信した場合に起こることがよくあります。
サーバ側のデバッグは、時々余分なデータがコンテントストリームに挿入されている場合があります。これは、HTMLにとっては問題ありませんが、PDFのようなバイナリドキュメントを破壊します。
コードは、時々余分なデータを無意識にコンテントストリームに挿入する場合があります。これもPDFを破壊します。
HTMLの圧縮については現在Acrobatが適切ではないと考えている問題です。サーバがIEに圧縮された出力を提供した場合、Acrobatはただ白紙を表示する場合があります。IISの圧縮が有効になっているかどうかを知っておく必要があります(デフォルトでは無効になっています)。確かでない場合は、IEWatchのようなユーティリティを使用して、返されるコンテンツのヘッダーを確認してください。gzipの場合、圧縮されたコンテンツが表示されます。IIS6の圧縮を使用している場合、メタベースでの設定を変更することによりファイル単位で無効にできます。
テスト目的で、内容の配置を「インライン」から「アタッチメント」に変更したい場合があります。これは、データをブラウザに表示するのではなく、データをダウンロードできます。そして、Acrobatまたはヘキサエディタ(16進法エディタ)を使用してダウンロードしたドキュメントを確認できます。すべてのPDFは、"%PDF"で始まり、"%%EOF"で終わるはずです。
別の方法として、PDFがキャッシュされるような場合、Web
Siteプロパティの「コンテントの有効期限を有効にする」というチェックボックスを確認してください。
次の2つを行ってみてください。
まず、原因としてABCpdfを排除してください。PDFをクライアントに送るのと同時にディスクにも保存してください。そうすることで、PDFは無事です。更に、ディスクからPDFデータを読み取って、クライアントに直接ストリームすることもできます。
サンプルサイトは、クライアントに直接PDFをストリームします。
検証を続ける場合、サンプルサイトで新しい仮想ディレクトリを作成して、そのサンプルサイトでも同じ問題が起きるかどうか確認してください。問題がない場合は、原因がわかるまでカレントのコードベースとサンプルサイトのコードベースを互いに移動することです。 |
13 |
Q.ABCpdfを使用してPDFをJPEG/TIFF/GIFに変換できますか? |
2007/11/13 |
A.はい。ユーザガイドのDoc.Renderingプロパティを参照してください。PDFのレンダリングには、ABCpdfのProfessional版が必要です。
コードを次のように記述するだけです(これはASPのコードですが、.NETのコードもとても似ています)。
Set doc = CreateObject("ABCpdf6.Doc")
doc.Read "c:\myfile.pdf"
doc.PageNumber = 2
doc.Rendering.Save "c:\mypreview.jpg", ""
|
12 |
Q.PDFドキュメントの印刷結果が期待しているものと異なります。解決方法はありますか? |
2007/11/13 |
A.これはABCpdfのPDF出力の問題ではなく、AcrobatとWindowsの印刷方法の問題です。
通常、このような問題はPDFを変更し、Acrobatの印刷オプションが正しいことを確認すると解消できます。
印刷ダイアログを確認してください。「拡大ページを用紙サイズに縮小する」、「縮小ページを用紙サイズに拡大する」、または「自動回転およびセンターページ」のオプションにチェックが付けられていないことを確認してください。
PostScriptプリンタで印刷していますか?そうでない場合、正確な出力が得られません。
AddGridを使用してイメージに背景グリッドを追加してみてください。これは、画面から用紙に移動する際、PDFがどのように変更されているかを見ることができます。
ドキュメントにCropBoxを指定すると便利です(これは、Acrobatのページの印刷方法に影響する場合があります)。カレントのページにCropBoxを挿入するには、下記コードを使用してください。
theDoc.SetInfo(theDoc.Page, "/CropBox:Rect", "30 30 562 732")
' 30ポイントづつ差し込まれる標準のメディアボックス
' 多分、この矩形を調整する必要があります。 |
11 |
Q.PDFのページの大きさを変更するには? |
2007/11/13 |
A.詳細は、ユーザガイドのDoc.MediaBoxプロパティを参照してください。 |
10 |
Q.PDFドキュメントにバーコードを追加するには? |
2007/11/13 |
A.迅速で簡単に追加できる、無償で商用のバーコードフォントが多数あります。
ABCpdfは、TrueTypeフォントのバーコードをPDFに挿入し、バーコード出力を行うことができます。バーコードフォントの組み込みと、これを行うための許可があることを確認してください。
code 39、code 93、code 128、DataMatrix、Interleaved 2 of 5 & 2 of 5、OCR-A &
OCR-B、PDF417、Postnet、UPC/EANのバーコードフォントのためにbarcode-1 siteから開始することをお薦めします。
ABCpdfで使用するために、PDFに組み込み可能なTrueTypeフォントを探してください |
9 |
Q.PDFドキュメントを自動的に印刷するには? |
2007/11/13 |
A.ABCpdfを使用してPDFをレンダリングできます。しかし、ABCpdfがラスター化を処理する間、印刷制御を行う必要があります。ABCpdf
.NETのインストールに含まれているサンプル「ABCpdfView」はこの方法を示しており、ABCpdfを使用して印刷するための最初のコードを提供しています。
他には、ドキュメントを印刷するためにAcrobatをスクリプトするには、次の構文を使用してコマンドラインから静的に実行できます。
AcroRd32.exe /t path printer driver port
パスはPDFドキュメントへのパスです。プリンタはプリンタ名です。ドライバは「使用するドライバ」ボックスに表示されるドライバ名です。ポートはプリンタポートです(これにはバックスラッシュを入れられません)。
また、「自動」で印刷するためにAcrobatをスクリプトすることもできます。AVDoc.PrintPages...
suiteを使用してください。詳細はAdobeのウェブサイトをご覧ください。 |
8 |
Q.フォントが使えない場合は? |
2007/11/13 |
A.ABCpdfは、有効なTrueTypeまたはType
1(PostScript)フォントを使用することができます。
ABCpdfは、明らかに許可できないフォントを組み込みません。これは、間違って著作権を侵害しないようにするための適切な制限です。しかしこの動作をオーバーライドして、ABCpdfにこれらのフォントを組み込ませることができます。詳細は、ヘルプのDoc.EmbedFontメソッドとDoc.HtmlOptions.FontProtectionプロパティを参照してください。
ABCpdfは、フォントのキャッシュを保持します。つまり、ABCpdfが新しくインストールしたフォントを読み出すために、ABCpdfを使用しているどんなプロセスも再スタートする必要があるということです。
別の方法として、フォントファイルへのパスをAddFontメソッドまたはEmbedFontメソッドに渡すことができます。これは、フォントファイルを自動的に読み込みます。これを行った後はフォントファイルを移動しないでください。ABCpdfは、適所にあるフォントに依存します。
許可は時々、ASPまたはASP.NETのような制限付きのアカウント許可からのアクセスを制限する、個別のフォントファイルに置かれます。
時々、TrueTypeフォントは常用外または非標準です。これは、ABCpdfまたはAcrobatで問題(ABCpdfでは
TrueTypeフォントを認識しなかったり、
AcrobatではPDFに組み込まれたフォントを使用しない)を引き起こしかねません。しかしこの種の問題は比較的まれで、バーコードフォントなどで起こるようです。 |
7 |
Q."Windowsエラー 193。
%1は有効なWin32アプリケーションではありません。"というエラーが出ます。 |
2007/11/13 |
A.これはMSHTMLオブジェクトの作成に関連した許可問題です。このページの「セキュリティに問題があります」の説明を読んでください。
あらゆる許可を扱う場合、変更には十分注意が必要です。これらの変更が適切ではないと思ったら確実に取り消す方法を知っていることが大切です。自信がない場合は変更しないでください。
コントロールパネルの「コンポーネントサービス」を開いて、一般的なCOM/DCOMの許可を調べるために「マイ
コンピュータ」アイコンを右クリックしてください。「起動」や「アクセス」の許可を確認してください。お客様のIISユーザ(典型的にはASPNETまたはIUSR_MACHINENAME)に「起動」や「アクセス」の許可がない場合、MSHTMLオブジェクトを作成または使用する許可が認められていないのかもしれません。
この問題はお客様のIISユーザに「バッチジョブとしてログオン」許可がないことに関連しているかもしれません。そのユーザに許可を割り当ててみてください。
OSを再起動してもう一度コードを試してみてください。 |
6 |
Q.「HTMLをレンダリングできません」、「ページを読み込むのに時間切れです」「ページを読み込めません」などのエラーが出ます。 |
2007/11/13 |
A.タイムアウトが報告される典型的な理由はページの読込に時間がかかり過ぎているからです。ABCpdfのページの読込は15秒以内と仮定しています。そうでなければタイムアウトとなります。従って、コードにURLを組み込んでください。そうすれば間違いありません。同じURLをIEで開いてください。ページをIEに表示する際の読込時間はどれくらいですか?
15秒以上かかる場合はタイムアウトを変更する必要があるのでHtmlOptions.Timeoutプロパティを参照してください。
タイムアウトを長くしすぎないで現実的な数にしておいてください。HtmlOptions.Timeoutプロパティを10分に設定してHtmlOptions.RetryCountプロパティを5にした場合、ページを取得しようと試みるのに最高1時間までかかってもよいとABCpdfに言っていることになります。これが起こった場合、事実上プロセスは止まったように見えます。
ABCpdfにはページへのアクセス許可がないので、時々タイムアウトが報告されることがありますがこれは稀です。これが起きていると思う場合は、前の章の空白ページのトラブルシューティングの説明をざっと読む必要があります。 |
5 |
Q.「HTMLをレンダリングできません」または「ファイルを読み込めません」というようなエラーを出すか白紙が出力されます。 |
2007/11/13 |
A.ファイアウォールやプロキシサーバは、ある種のログオンを要求する場合があるので、URLのレンダリング特有の問題が生じる場合があります。おそらく、お客様のIISユーザはログオン権限を持っていないためではないかと思われます。
Windowsのユーザ識別は、お客様のIISユーザが正確に応答できないと警告することがあります。
Windows 2003
Serverはデフォルトでは、HTMLのレンダリングができないインターネットエクスプローラ(IE)のセキュリティポリシーになっています。作成したいページにアクセスするには、そのポリシーを変更するか無効にしなければならない場合があります。
セキュリティコンポーネントを削除したい場合、コントロールパネルの「プログラムの追加と削除」の「Windowsコンポーネント」を使用して削除できます。
それでもダメな場合は...
まず、簡単なサニティチェックとこの種の問題の一般的な原因を処理してください。
Administratorとしてログオン中に、IEを使用して適切な位置に表示できることを確認してください。IEがどのブロックも警告も投げないか確認してください。
ABCpdfはそのページまでの明確なルートが必要です。
localhostにURLを作成している場合、IISユーザがこの位置へのアクセスを読み込んだことを確認してください。
windows\tempディレクトリへのアクセスができないことがよくこの種の問題の原因になります。お客様のIISユーザ(特にASPNETまたはIUSR_MACHINENAME)が読取/書込許可を持っているか、(お客様のセキュリティポリシーに適合する場合)フォルダを作成することができるかを確認してください。また、ASPNETが独自の選択(デフォルトでは、C:\Documents
and Settings\コンピュータ名\ASPNET)へのアクセスを拒否されているかどうかもわかります。
弊社の体験から驚くことにWebサーバに共通して、URLを参照できないということがわかりました。つまり、IPアドレスを使用してテストした時はコードは動作しますが、URLを使用してローカルサーバにWebページをレンダリングしようとすると問題が生じる場合があります。
すべてうまく表示されていてもまだ問題がある場合は、プロセスモニタで10分置くことを強くお勧めします。大半は明白な原因を合図します。問題は必ずしも予想していたところにあるとは限らないので、プロセスモニタのフィルタを適用しないことをお勧めします。プロセスモニタの使用法についての詳細はこのページの「セキュリティに関する問題があります」のところをご覧ください。
これでもダメな場合は...
問題の範囲を確定するためにテストケースを定めてください。
ABCpdf .NETを使用している場合は、.NETベースのテストケースをダウンロードしてください。ABCpdf
ASPを使用している場合は、COMベースのテストケースをダウンロードしてください。
アドミニストレータとしてログオンしてください。テストケース内のコードはログオンされたユーザとして実行されるので、ASPで起こりうる任意の許可問題を回避しておきます。
まず、基本的なテストケースをそのまま実行してください。これらのテストケースはファイルベースのURLのレンダリングを単純に行います。問題がある場合は、再起動してやり直してください。それでもエラーが出る場合は、OSが完全にパッチされ最新であるかどうかを確認し、再度やり直してください。それでもエラーが起こる場合は、何を行ったか、どんなエラーが起きているかを正確に弊社まで連絡してください。
基本的なテストケースが動作すると思ったら、次は別のURLを試してみてください。Web(例:http://www.google.com)で1つ試してみてください。でもまずはABCpdfを実行しているのと同じOSでIEを使用してそのURLを参照できるか確認してください。PDFで出力されるのと同じようにIEでも同じ内容が表示されるはずです。
違う場合は、行ったことを正確に説明し、そのURLと不正なPDF出力を弊社まで送ってください。WebベースのURLが動作すると思ったら、次はコードで使用しているURL(レンダリングしたいページ)を試してみてください。どんなものが出力されるか確認してください。
正しく出力された場合、次はまったく同じコードをPSPページにコピーして試してみてください。ASPでのコードの処理とテストケースとの違いは許可問題に依存します。このQ&Aの「許可問題の解決法」を参照してください。
正しく出力されない場合は、そのURLを参照し、IEを使用してそのWebページを保存してください。そして、保存したWebページを同じウェブサイトにコピーし、ABCpdfwp使用してその(静的な)ページをレンダリングしてみてください。静的なページが正しく出力されない場合、動的なページは望み通りに出力されません。静的なページが正しく出力されない場合は、保存したページとPDF出力を弊社までお送りいただき、そのPDFの何が違うのかをご一報ください。
これらの手順を行ってから弊社に連絡してください。何をしたか、結果はどうだったかを教えていただけると迅速に対応できます。 |
4 |
Q.コードは開発サーバでは動作しますが展開すると失敗します。どうしてですか? |
2007/11/13 |
A.構成問題の大部分はセキュリティと許可に関連しています。開発用サーバは、運用サーバよりも緩和されたセキュリティポリシーで動作するので、この種の問題は運用時にのみ起こることが多いものです。
運用サーバ上で、Administratorとしてログオンして、ABCpdfをインタラクティブに実行してください。これでこの問題の原因が「許可」かどうか確認することができます。
たとえば、以下が実行できれば、「許可」の問題の可能性があると判断できます。
ASPで実行している場合は、同様な効果を得るためにVBスクリプトで作成します。次のテキストをテキストファイルにコピーして、mytest.vbsという名前で保存し、ダブルクリックして実行してください。
Set d = CreateObject("ABCpdf6.Doc")
d.FontSize = 96
d.AddText "Hello World!"
d.Save "mydoc.pdf"
MsgBox "Finished"
許可に関する問題のようであれば、このページで詳述したセキュリティのトラブルシューティングのプロシージャを使用して原因を探すことができます。
他には、.NET Enterprise ServicesまたはCOM+のComponent
Packageでコードを実行してセキュリティ問題を完全に回避できます。
これはコードをWebコードとはまったく別のプロセスで実行し、その二つを隔離できます。
これはWebコードのセキュリティに影響を与えることなくコードを実行するユーザが完全に制御できます。管理ツールのコンポーネントサービスを使用してユーザ変更を行うだけです。
WebコードとABCpdfのコードは別々のアドレス領域で処理されるので、各プロセスにもっと空きができます。
使用していない時はコンポーネントパッケージにシャットダウンを通知できます。
ABCpdf .NETを使用している場合、コードの周りに.NETのマネージドコンポーネントラッパーを記述してください。ABCpdf
.NETのメニューアイテムにあるPDFEnterpriseServicesのサンプルプロジェクトはHTMLをPDFに変換するためにこれを行う方法を示しています。ABCpdf
ASPを使用している場合、このプロセスはもっと簡単です。ABCDrawHTML COM+の説明をご覧ください。 |
3 |
Q.AddImageメソッドでGIFイメージを追加できないのはなぜですか? |
2007/11/13 |
A.JPEG、TIFF、またはEMFファイルのパスにAddImageを渡すことができます。これは、非圧縮の生データをPDFドキュメントに挿入します。その他のイメージ形式(例:GIF)を直接挿入することはできません。これらのイメージをImageオブジェクトに描画することにより、そのImageオブジェクトをPDFドキュメントに追加することができます。ABCpdfのヘルプにサンプルがいくつかありますので、そちらを参照ください。 |
2
|
Q.既存のPDFドキュメントをインポートして実行時に処理できますか? |
2007/11/13 |
A.ABCpdfは、PDFドキュメントを開いたり、変更したり、保存することができます。ABCpdfは、PDFドキュメント上に描画したり、またはページの追加/削除、あるいはドキュメントデータの変更を行うこともできます。書き込めるスペースがある場合はそこに描画できます。既存のドキュメントに白いボックスを描画し、そこに描画できます。
しかし、PDFドキュメントの構成上の理由から、「既存のドキュメント」そのものを編集することはできません。既にPDFにあるテキストを編集したり、書き足すことはできません。 |
1 |
Q.ABCpdfはMicrosoft
OfficeドキュメントをPDFに変換できますか? |
2007/11/13 |
A.はい。ABCpdf
.NETのバージョン6で変換できます。 詳細はユーザガイドのDoc.Readメソッドを参照してください。 |