1

ここで複雑な問題が発生しています。

コンテキスト:Aspose.PDFを使用してPDF生成機能を追加するために、リクエストごとにXML定義に基づいてコントロールを動的に作成するフォームエンジンプロジェクトを編集しています。簡単に言うと、フォームエンジンは、フォーム(テキストボックス、電話番号、日付コントロールなど)に入力するための基本機能として機能するコントロールのセットであり、各コントロールとそのプロパティはxmlファイルで定義され、xmlに対応します。スキーマ。これで、フォームが完成すると、以前に入力されたページを取得し、Webブラウザーで印刷するためにデータをフォーマットするformRepeaterコントロールがあります。代わりにPDFファイルを生成するためにこれを置き換える必要があります。

私が行ったこと:すべてのFormControlsが実装する必要があるGeneratePdfという新しい抽象メソッドを追加し、コントロールコンテナのPreRenderイベントの各コントロールとサブコントロールに対してこのメ​​ソッドを呼び出します。コントロールによって方法は異なりますが、今のところ基本的な方法は次のとおりです。

    public override void GeneratePdf(Aspose.Pdf.Generator.Pdf file)
    {

        //Add the control HTML in a new section of the PDF File
        var section = file.Sections.Add();
        var sb = new StringBuilder();
        var writer = new HtmlTextWriter(new StringWriter(sb));
        this.RenderControl(writer);
        var html = new Aspose.Pdf.Generator.Text(section, sb.ToString());
        html.IsHtmlTagSupported = true;
        section.Paragraphs.Add(html);
    }

私の問題:Stringbuilderを使用してコントロールのHTMLを正常に取得していますが、コントロールが標準のASP.NETコントロールとして内部にある場合、子コントロールのHTMLはレンダリングされません。なんで?

ありがとう、

4

1 に答える 1

2

RenderControl は子コントロールの HTML を sb stringwriter にレンダリングします。

ただし、http: //www.aspose.com/docs/display/pdfnet/Text+Constructor+Overload_3 Aspose Text は、各サブコントロールのセグメントを自動的に作成しません。渡された文字列は、単一の(および現在の)セグメント用であると想定しています。

コントロールのサブコントロールを追加するには、各サブコントロールを再帰的に呼び出し/生成する必要があります。したがって、上記のコードを再構築する必要があります。

于 2013-02-22T17:31:07.247 に答える