1

私の同僚は .NET 1.1 プロジェクトに取り組んでおり、外部から XML ファイルを取得し、XML データに基づいて PDF コンテンツを生成するよう iTextSharp にプログラムで指示しています。

難しいのは、この XML 内に任意の HTML コンテンツのセグメントがあることです。これらは、ユーザーが Office アプリケーションからコピーして貼り付けた HTML コードです。Web ブラウザーでは問題ないように見えますが、この HTML が iTextSharp の HTMLWorker オブジェクトに渡されて解析され、PDF オブジェクトに変換されると、生成された PDF ドキュメントのいたるところで書式設定と配置が実行されます。例えば

<span id="mceBoundaryType" class="portrait"></span>
<table border="0" cellspacing="0" cellpadding="0" width="636" class="MsoNormalTable"
    style="margin: auto auto auto 4.65pt; width: 477pt; border-collapse: collapse">
    <tbody>
        <tr style="height: 15.75pt">
            <td width="468" valign="bottom" style="padding-right: 5.4pt; padding-left: 5.4pt;
                padding-bottom: 0in; width: 351pt; padding-top: 0in; height: 15.75pt; background-color: transparent;
                border: #ece9d8">
                <p style="margin: 0in 0in 0pt" class="MsoNormal">
                    <font face="Times New Roman">&nbsp;</font></p>
            </td>
            <td colspan="3" width="168" valign="bottom" style="padding-right: 5.4pt; padding-left: 5.4pt;
                padding-bottom: 0in; width: 1.75in; padding-top: 0in; height: 15.75pt; background-color: transparent;
                border: #ece9d8">
                <p style="margin: 0in 0in 0pt; text-align: center" class="MsoNormal" align="center">
                    <u><font face="Times New Roman">Group</font></u></p>
            </td>
        </tr>

タグは Style 属性でいっぱいで、iTextSharp は CSS とその属性の解釈をサポートしていません。他の iTextSharp ユーザーがこれを回避しようとした代替手段、または他の実行可能な HTML から PDF へのコンポーネントは何ですか?

4

2 に答える 2

1

ExpertPDFABCpdfなどの .NET 2.0 ベースのコンポーネントは、CSS スタイルを解釈し、PDF でテーブルを適切に配置するのに非常に優れていることがわかりました。現在、私は同僚に、そのようなコンポーネントを使用できる別の .NET 2.0 Web サービスの使用を提案しています。これは、ASP.NET 1.1 Web アプリケーションによって通知され、本質的にレポートである生成された Web ページをスクレイピングします。 HTML ビューで。

アップデート:

これは、アプリケーション チームに提供される推奨アプローチであるため、答えです。

于 2008-12-18T04:00:34.023 に答える
0

確固たる答えはありませんが、探索するための 2 つの方向性を示します。どちらも以前に使用したことがあります。

1 - HtmlAgilityPackのようなものを使用して HTML をクレンジングします。DOM をトラバースしてスタイルとクラスを削除できます。これにより、明らかにレイアウトがある程度台無しになる可能性があります。このスタイルを保持する必要があるかどうかは、私にはわかりません。次に、iTextSharp または HtmlDoc などの代替プログラム(これも CSS をサポートしていません) を使用して、PDF にレンダリングできます。URL を受け取り、 Htmldocを呼び出して PDF を生成するメソッドを含む単純なラッパーを作成しました。

2 - WebBrowser コントロールを使用して HTML サーバー側をレンダリングし、そこから画像を生成してから、 PDFsharpまたは選択したライブラリを使用して画像を PDF に変換します。これでは、テキストを検索またはコピーできる PDF は明らかに得られません。レンダリングされたページを画像に変換するための非常に優れたサンプル コードがここにあります (注: スクロールせずに表示できるものだけでなく、フルハイトの画像を取得することもできます)。

編集: WebBrowser コントロールは .NET 1.1 では使用できないと思います。

于 2008-12-17T16:43:48.460 に答える