QNo. |
Q.質問 |
日付 |
A.回答 |
19
|
Q.ABCpdfを使用してフィールドを削除すると、Acrobatに「フィールドの形がおかしい」と表示されます。なぜですか? |
2006/03/14
|
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.AddImageUrlを使用してブラウザにPDF結果をストリームするとページがキャッシュされるのはなぜですか? |
2006/03/14
|
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のどちらかで何かが起きているか、あるいはプロキシサーバ/クライアントで何かが起こっているかを確認する必要があります。 |
17
|
Q.AddImageHtmlを使用した場合、スタイルとイメージが反映されないのは? |
2006/03/14
|
A.HTMLがファイル内に存在しないので位置がありません。
外部のスタイルシートやイメージは、しばしば相対URLで参照されます。そのHTMLの位置がないので、これらの相対参照を解決することができません。
したがって、スタイルシートとイメージのリンクを絶対参照として用意する必要があります。または、HTML
BASEエレメントを使用して適切なベース位置を指定できます。もしくは、HTMLを適切な位置のファイルに保存してAddImageUrlを使用できます。 |
16
|
Q.「ABCpdfで使用されるGDI+のバージョンに関する致命的なセキュリティ問題があります」と表示されます。どうすればよいですか? |
2006/03/14
|
A.ABCpdfのバージョン4.0.2.8とそれ以降のバージョンは、GDI+問題の影響を受けません。
ABCpdfは、OSにインストールされているGDI+のバージョンを使用します。典型としては、これはwindows/system32のシステムバージョンです。
しかし、ABCpdfは(Microsoftで忠告されているように)アプリケーションの定義フォルダに独自のバックアップバージョンをインストールします。これは、システムバージョンがない場合に使用され、影響を受けるかもしれないDLLです。
この問題の影響に関する詳細は、マイクロソフトのサポート技術情報「[MS04-028] JPEG 処理 (GDI+) のバッファ
オーバーランにより、コードが実行される」(文書番号: 833987)を参照してください。
ABCpdfのこの問題に関する危険性は、他の多くのアプリケーションに比べるとかなり少ないです。それには次のような4つの理由があります。
典型としてABCpdfは縮小されたアカウント許可のサーバで実行されるので、バッファオーバーランを行える数に限りがあります。
ABCpdfで使用されるJPEGはユーザではなく開発者によって提供される傾向があるので、特別に作られたファイルを生産パイプラインに挿入するための制限範囲があります。
ABCpdfは、独自のJPEGコードを多数使用します。(XImageオブジェクトを経由せずに)JPEGを直接挿入している場合、ABCpdfは決してGDI+に達しません。
ABCpdfは、OSレベルのバージョンを検索できなかった場合、GDI+のバックアップバージョンのみを使用します。 .NET
Frameworkは、GDI+をOSレベルにインストールします。したがって、提供された.NETは安全で、サーバも安全です。 |
15
|
Q.PDFをインターネットエクスプローラ(IE)で表示する際に問題が生じます。何が原因なのでしょうか? |
2006/03/14
|
A.IEとAcrobatとの使用で常に問題がないわけではありません(特にhttpsまたはIEの旧式バージョンを使用している場合)。OS、IE、Acrobatの相互運用があるので、どこに問題があるのか正確に判断するのは困難で、これらのどれもが問題になり得ます。IE
5.5は特に厄介です。
IEは、時々特定のコンテント型で引っかかり、PDFをHTMLとして表示しようとします。この場合、%PDFで始まるランダムなテキストを目にします。これは、前にHTMLを表示していたウィンドウにPDFデータを送信した場合に起こることがよくあります。
サーバ側のデバッグは、時々余分なデータがコンテントストリームに挿入されている場合があります。これは、HTMLにとっては問題ありませんが、PDFのようなバイナリドキュメントを破壊します。
コードは、時々余分なデータを無意識にコンテントストリームに挿入する場合があります。これもPDFを破壊します。
テスト目的で、内容の配置を「インライン」から「アタッチメント」に変更したい場合があります。これは、データをブラウザに表示するのではなく、データをダウンロードできます。そして、Acrobatまたはヘキサエディタ(16進法エディタ)を使用してダウンロードしたドキュメントを確認できます。すべてのPDFは、"%PDF"で始まり、"%%EOF"で終わるはずです。
別の方法として、PDFがキャッシュされるような場合、Web
Siteプロパティの「コンテントの有効期限を有効にする」というチェックボックスを確認してください。
次の2つを行ってみてください。
まず、原因としてABCpdfを排除してください。PDFをクライアントに送るのと同時にディスクにも保存してください。そうすることで、PDFは無事です。更に、ディスクからPDFデータを読み取って、クライアントに直接ストリームすることもできます。
サンプルサイトは、クライアントに直接PDFをストリームします。
検証を続ける場合、サンプルサイで新しい仮想ディレクトリを作成して、そのサンプルサイトでも同じ問題が起きるかどうか確認してください。問題がない場合は、原因がわかるまでカレントのコードベースとサンプルサイトのコードベースを互いに移動することです。 |
14
|
Q.ABCpdfを使用してPDFをJPEG/TIFF/GIFに変換できますか? |
2006/03/14
|
A.はい。ヘルプのDoc.Renderingプロパティを参照してください。PDFのレンダリングには、ABCpdfのプロフェッショナルライセンスが必要です。
コードを次のように記述するだけです(これはASPのコードですが、.NETのコードもとても似ています)。
Set doc = CreateObject("ABCpdf5.Doc")
doc.Read "c:\myfile.pdf"
doc.PageNumber = 2
doc.Rendering.Save "c:\mypreview.jpg", "" |
13
|
Q.PDFドキュメントの印刷結果が期待しているものと異なります。解決方法はありますか? |
2006/03/14
|
A.これはABCpdfのPDF出力の問題ではなく、AcrobatとWindowsの印刷方法の問題です。
通常、このような問題はPDFを調節し、Acrobatの印刷オプションが正しいことを確認すると解消できます。
印刷ダイアログを確認してください。「拡大ページを用紙サイズに縮小する」、「縮小ページを用紙サイズに拡大する」、または「自動回転およびセンターページ」のオプションにチェックが付けられていないことを確認してください。
PostScriptプリンタで印刷していますか?そうでない場合、正確な出力が得られません。
AddGridを使用してイメージに背景グリッドを追加してみてください。これは、画面から用紙に移動する際、PDFがどのように変更されているかを見ることができます。
ドキュメントにCropBoxを指定すると便利です(これは、Acrobatのページの印刷方法に影響する場合があります)。カレントのページにCropBoxを挿入するには、下記コードを使用してください。
theDoc.SetInfo(theDoc.Page, "/CropBox:Rect", "30 30 562 732")
' 30ポイントづつ差し込まれる標準のメディアボックス
' 多分、この矩形を調整する必要があります。 |
12
|
Q.PDFのページの大きさを変更するには? |
2006/03/14
|
A.詳細は、ヘルプのDoc.MediaBoxプロパティを参照してください。 |
11
|
Q.PDFドキュメントにバーコードを挿入するには? |
2006/03/14
|
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から開始することをお薦めします。 |
10
|
Q.フォントが使えない場合は? |
2006/03/14
|
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に組み込まれたフォントを使用しない)を引き起こしかねません。しかしこの種の問題は比較的まれで、バーコードフォントなどで起こるようです。 |
9
|
Q.URL/HTMLのレンダリングコードが、「HTMLを作成できません」、「ファイルを読み取ることができません」というエラーを出したり白紙が出力されます。どうしてですか? |
2006/03/14
|
A.ファイアウォールやプロキシサーバは、ある種のログオンを要求する場合があるので、URLレンダリングに関する特定の問題が発生する場合があります。おそらく、お客様のIISユーザはログオン権限を持っていないためではないかと思われます。
Windowsのユーザ識別は、お客様のIISユーザが正確に応答できないと警告することがあります。
Windows 2003
Serverはデフォルトでは、HTMLのレンダリングができないインターネットエクスプローラ(IE)のセキュリティポリシーになっています。作成したいページにアクセスするには、そのポリシーを変更するか無効にしなければならない場合があります。
セキュリティコンポーネントを削除したい場合、コントロールパネルの「プログラムの追加と削除」の「Windowsコンポーネント」を使用して削除できます。
したがって、Administratorとしてログオン中に、IEを使用して適切な位置に表示できることを確認してください。
localhostにURLを作成している場合、IISユーザがこの位置へのアクセスを読み込んだことを確認してください。
windows\tempディレクトリへのアクセスができないことがよくこの種の問題の原因になります。お客様のIISユーザ(特にASPNETまたはIUSR_MACHINENAME)が読取/書込許可を持っているか、(お客様のセキュリティポリシーに適合する場合)フォルダを作成することができるかを確認してください。また、ASPNETが独自の選択(デフォルトでは、C:\Documents
and Settings\コンピュータ名\ASPNET)へのアクセスを拒否されているかどうかもわかります。 |
8
|
Q.私が作成したプログラムは開発用サーバでは動作しますが、運用サーバに配備すると失敗します。どうしてですか? |
2006/03/14
|
A.構成問題の大部分はセキュリティと許可に関連しています。開発用サーバは、運用サーバよりも緩和されたセキュリティポリシーで動作するので、この種の問題は運用時にのみ起こることが多いものです。
運用サーバ上で、Administratorとしてログオンして、ABCpdfをインタラクティブに実行してください。これでこの問題の原因が「許可」かどうか確認することができます。
たとえば、以下が実行できれば、「許可」の問題の可能性があると判断できます。
ASPで実行している場合は、同様な効果を得るためにVBスクリプトで作成します。次のテキストをテキストファイルにコピーして、mytest.vbsという名前で保存し、ダブルクリックして実行してください。
Set d = CreateObject("ABCpdf5.Doc")
d.FontSize = 96
d.AddText "Hello World!"
d.Save "mydoc.pdf"
MsgBox "Finished"
.NETで実行している場合、同じようなことを行うにはVBまたはC#アプリケーションを作成してコンパイルする必要があります。 |
7
|
Q.AddImageでGIFイメージを使用できないのはなぜですか? |
2006/03/14
|
A.JPEG、TIFF、またはEMFファイルのパスにAddImageを渡すことができます。これは、圧縮された生データをPDFドキュメントに挿入します。その他のイメージ形式(例:GIF)を直接挿入することはできません。これらのイメージをImageオブジェクトに描画することにより、そのImageオブジェクトをPDFドキュメントに追加することができます。ABCpdfのヘルプにサンプルがいくつかありますので、そちらを参照ください。 |
6
|
Q.既存のPDFドキュメントをインポートして、編集できますか? |
2006/03/14
|
A.ABCpdfは、PDFドキュメントを開いたり、変更したり、保存することができます。
ABCpdfは、PDFドキュメント上に描画したり、またはページの追加/削除、あるいはドキュメントデータの変更を行うこともできます。書き込めるスペースがある場合はそこに描画できます。既存のドキュメントに白いボックスを描画し、そこに描画できます。
しかし、PDFドキュメントの構成上の理由から、「既存のドキュメント」そのものを編集することはできません。既にPDFにあるテキストを編集したり、書き足すことはできません。 |
5
|
Q.WordのdocやExcelのxls形式をPDFに保存できますか? |
2006/03/14
|
A.docやxls形式に対応していないため、そのままではPDFに保存できません。一度、WordやExcelでdocやxlsをHTML形式で保存し、そのHTMLをPDFに保存してください。 |
4
|
Q.外字には対応していますか? |
2006/03/14
|
A.はい、対応しています。
サンプルプロジェクトの「外字の使用」フォルダを参照ください。 |
3
|
Q.フィールドIDを持つPDFファイルから複数ページのPDFファイルを正しく作成するにはどうすればいいですか? |
2006/03/14
|
A.単にAppendメソッドを実行するだけでは、同じフィールドIDが複数のページに渡って作成されます。そのため、ページ毎に別のデータを設定しても正しく反映されません。これを回避するにはページ毎にユニークなフィールドIDを設定する必要があります。 |
2
|
Q.PDFのバージョンを指定してファイルに保存できますか? |
2006/03/14
|
A.PDFのバージョンは追加するオブジェクトによって決まるため、ファイル保存時にバージョンを指定することはできません。 |
1
|
Q.対応しているPDFのバージョンはいくつですか? |
2006/03/14 |
A.Acrobat 7(PDFバージョン1.6)です。 |