ここで複雑な問題が発生しています。
コンテキスト: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はレンダリングされません。なんで?
ありがとう、