8

ABCpdf を使用して、画像を含む Web ページを PDF ドキュメントにレンダリングしようとしています。これは、Web アプリケーションから実行されます。

IIS5 の開発マシンでアプリケーションを実行すると、すべて問題ありません。アプリケーションを IIS6 にデプロイすると、画像が PDF に表示されません。

問題を再現するために、単純な Web ページから PDF ファイルをレンダリングする単純な Web アプリケーションを作成しました。ローカルではない画像は、PDF に表示されない画像であることがわかりました。

ABCpdf と対話する関連コードは次のとおりです。

Doc theDoc = new Doc();
theDoc.Rect.Inset(18, 18);
theDoc.HtmlOptions.PageCacheEnabled = false;
theDoc.HtmlOptions.PageCacheClear();
theDoc.HtmlOptions.UseNoCache = true;
theDoc.HtmlOptions.Timeout = 60000;

int theID = theDoc.AddImageUrl(theUrl);

while (true)
{
  if (!theDoc.Chainable(theID)) break;
  theDoc.Page = theDoc.AddPage();
  theID = theDoc.AddImageToChain(theID);
}

for (int i = 1; i <= theDoc.PageCount; i++)
{
  theDoc.PageNumber = i;
  theDoc.Flatten();
}

theDoc.Save(location);
theDoc.Clear();

テストに使用している html ページは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Test page</title></head>

<body>
<p>This is a local image</p>
<img src="http://myserver/test/images/testimage.gif" />

<p>This is a remote image</p>
<img src="http://l.yimg.com/a/i/ww/beta/y3.gif" />

</body>
</html>

だから私は、この URL でページをレンダリングしようとしています: http://myserver/test/testpage.html (上記のコード) を pdf にします。

IIS6 では、2 番目の画像 (サーバーに対してローカルではない) は pdf に表示されません。

アクセス権に問題があるようですが、わかりませんでした。

ありがとうございました。

4

2 に答える 2

3

私はこれが少し遅れていることを知っていますが、うまくいけば他の誰かを助けるでしょう!

非常によく似た問題が発生しています(これが、このページにたどり着いた方法です..)。IIS のバージョンは同じでしたが、別のサーバーで実行されていました。問題は、画像のダウンロードが完了する前に PDF が生成されたことにあるようです。

WebSuperGooに連絡しました。内部的には MSHTML を使用しているとのことで (環境によって異なる可能性が高い)、次のいくつかの提案を試してください。

theDoc.SetInfo(0, "CheckBgImages", "1");

theDoc.SetInfo(0, "RenderDelay", "5000");  // You can change this value, just an initial test.

2 つ目は、PDF のレンダリングを遅らせ、画像をダウンロードする機会を与えます。

于 2011-10-13T13:14:12.560 に答える
2

同様の問題があり、画像ファイルのサイズが大きすぎることが原因であることがわかりました。

于 2011-07-07T21:52:26.780 に答える