0

ユーザーがレポート作成用にテキストのスタイルを設定できるように、ckeditor の太字、斜体などの基本的なスタイルを使用しています。

この文字列が iTextSharp に渡されると、html が削除されます。そうしないと、html が pdf に出力されます。これを削除しています

Regex.Replace(item.DevelopmentPractice.ToString(), @"<[^>]*>|&nbsp;", String.Empty)

太字を保持するが表示しないようにPDFのテキストをフォーマットする方法はありますか

<strong></strong>

アップデート

リクエストに応じて、以下の完全なコードを提供しました。

public FileStreamResult pdf(int id)
{

    // Set up the document and the Memory Stream to write it to and create the PDF writer instance
    MemoryStream workStream = new MemoryStream();
    Document document = new Document(PageSize.A4, 30, 30, 30, 30);
    PdfWriter.GetInstance(document, workStream).CloseStream = false;

    // Open the pdf Document
    document.Open();

    // Set up fonts used in the document
    Font font_body = FontFactory.GetFont(FontFactory.HELVETICA, 10);
    Font font_body_bold = FontFactory.GetFont(FontFactory.HELVETICA, 10, Font.BOLD);

    Chunk cAreasDevelopmentHeading = new Chunk("Areas identified for development of practice", font_body_bold);
    Chunk cAreasDevelopmentComment = new Chunk(item.DevelopmentPractice != null ? Regex.Replace(item.DevelopmentPractice.ToString(), @"<[^>]*>|&nbsp;", String.Empty) : "", font_body);

    Paragraph paraAreasDevelopmentHeading = new Paragraph();
    paraAreasDevelopmentHeading.SpacingBefore = 5f;
    paraAreasDevelopmentHeading.SpacingAfter = 5f;
    paraAreasDevelopmentHeading.Add(cAreasDevelopmentHeading);
    document.Add(paraAreasDevelopmentHeading);

    Paragraph paraAreasDevelopmentComment = new Paragraph();
    paraAreasDevelopmentComment.SpacingBefore = 5f;
    paraAreasDevelopmentComment.SpacingAfter = 15f;
    paraAreasDevelopmentComment.Add(cAreasDevelopmentComment);
    document.Add(paraAreasDevelopmentComment);

    document.Close();

    byte[] byteInfo = workStream.ToArray();
    workStream.Write(byteInfo, 0, byteInfo.Length);
    workStream.Position = 0;

    // Setup to Download
    HttpContext.Response.AddHeader("content-disposition", "attachment; filename=supportform.pdf");
    return File(workStream, "application/pdf");
4

1 に答える 1

0

これは、HTML を PDF に変換するための最善の方法ではありません (iText を使用するか、iText を使用しないか)。別の方法を探してみてください。実際に HTML を PDF に変換するのではなく、スクレイピングしたテキストをチャンクを使用して PDF に挿入しています。

iText HTML2PDF を実行する最も一般的な方法は、HTMLWorkerを使用することのようですが (新しいバージョンでは XMLWorker である可能性があると思います)、人々はそれについても不満を述べています。これを参照してください。HTMLなしで変換されていないiText要素を使用してPDFを構築しているようで、それらの要素内でHTMLを使用したいのですが、それは非常に難しいと思います。

リンクされた HTML ワーカーの例で、プログラムの構造を見てください。彼らは HTML2PDF 変換を行いますが、それが失敗した場合は、Paragraph や Chunk などの他の iText メソッドを使用して PDF を作成します。そこでは、Chunk にもいくつかのスタイリングを設定しました。

受信した HTML を解析し、それを自分でチャンクに分割し、スタイリングを使用して s をチャンクに変換してから、それらを PDF に吐き出す必要があると思います。CKE のようなデータ ソースでこれを行うことを想像してみてください。たとえ非常に厳密な ACF を使用しても、悪夢になるでしょう。誰かがこれ以外の方法を知っているなら、私も知りたいです (私は基本的に生計を立てるために CKE to PDF を行っています)!

独自のエディターを作成したり、他の PDF 技術を使用したりするオプションはありますか? 私は wkhtmltopdf を使用していますが、状況は大きく異なります。PrinceXML を使用しますが、高すぎます。

于 2013-09-13T12:25:08.430 に答える