iTextSharp hinzufügen ( css oder eine css-Datei) und pdf-Datei herunterladen

Schließlich habe es funktioniert

var inputString = @"<html>
<body>
<table  class='table-bordered'>
    <thead>
        <tr>
            <th>Customer Name</th>
            <th>Customer's Address</th>
        </tr>
    </thead>
<tbody>
    <tr>
        <td> XYZ </td>
        <td> Bhubaneswar </td>
    </tr>
    <tr>
        <td> MNP </td>
        <td> Cuttack </td>
    </tr>
</tbody>
</table>
</body>
</html>";


List<string> cssFiles = new List<string>();
cssFiles.Add(@"/Content/bootstrap.css");

var output = new MemoryStream();

var input = new MemoryStream(Encoding.UTF8.GetBytes(inputString));

var document = new Document();
var writer = PdfWriter.GetInstance(document, output);
writer.CloseStream = false;

document.Open();
var htmlContext = new HtmlPipelineContext(null);
htmlContext.SetTagFactory(iTextSharp.tool.xml.html.Tags.GetHtmlTagProcessorFactory());

ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
cssFiles.ForEach(i => cssResolver.AddCssFile(System.Web.HttpContext.Current.Server.MapPath(i), true));

var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));
var worker = new XMLWorker(pipeline, true);
var p = new XMLParser(worker);
p.Parse(input);
document.Close();
output.Position = 0;


Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=myfile.pdf");
Response.BinaryWrite(output.ToArray());
//myMemoryStream.WriteTo(Response.OutputStream); //works too
Response.Flush();
Response.Close();
Response.End();
  • Ich möchte verringern Sie die Schriftgröße der Tabelle drin.
  • HTMLWorker zu Gunsten von XML-Arbeiter. HTMLWorker keine Unterstützung für CSS (und wird nie Unterstützung von CSS als seine Verwendung wurde eingestellt). Lesen Sie mehr über XML Worker auf der offiziellen iText Website.
  • Ich habe über diese Frage schon. Konnte es nicht lösen, mein Problem.
  • Sie verwenden können :- statische Font FontSubHeading = FontFactory.GetFont("gothic", 10, Font.NORMAL, wird der neue BaseColor(System.Zeichnung.ColorTranslator.FromHtml("#404041").ToArgb())); Absatz DearName = new Paragraph("test", FontSubHeading); Dokument.Add(DearName);
  • Sie sind nicht zeigen Ihre HTML + CSS, so dass es unmöglich ist, Ihre Frage zu beantworten. Siehe zum Beispiel gewusst Wie: konvertieren einer HTML-Tabelle in PDF?, wo Sie die HTML -, CSS-und der resultierenden PDF-Datei. Zu sagen "es funktioniert nicht" oder "lösen Konnte nicht mein Problem", ohne zu erklären, was nicht funktioniert oder was das Problem ist, in der Regel macht es unmöglich für die Menschen zu helfen.
  • Außerdem: wenn du wirklich gelesen hättest, die Antwort auf die doppelte Frage, wäre Sie nicht mit HTMLWorker. Sie würde die Verwendung von XML-Arbeiter statt.
  • der html-Inhalt, der nur einen Tisch drinnen, nur eine Methode, um fügen Sie alle css lösen würde mein Problem.
  • Gut, zeigen uns die HTML-und die CSS. Es sind viele funktionierende Beispiele auf web site. Jedoch, mit HTMLWorker wie dies in Ihrer Frage wird nicht funktionieren. Ändern Sie Ihre Frage, damit ich sehen kann, dass Ihr mithilfe der XML-Worker und ich könnte die Stimme zu öffnen. Jedoch, in seinem gegenwärtigen Zustand, die Antwort auf Ihre Frage ist: was wollen Sie nicht mit HTMLWorker verwenden Sie XML-Arbeiter statt. (Erfordert eine zusätzliche DLL neben der iTextSharp-DLL.)
  • Ich arbeite auf hinzufügen XmlWorker Methode, wenn Sie mit einem einfachen Update, das gemacht werden kann, zu arbeiten. es löst
  • Ich nicht sehen, Sie arbeiten mit XML-Arbeiter. Aktualisieren Sie Ihre Frage, zeigen Sie Ihre XML-Worker-Codes und auch zeigen Sie Ihre HTML-und CSS-Dateien.
  • Sie können bitte werfen Sie einen Blick auf diese.
  • Die Eingabe ist kein gültiges HTML.
  • Hat funktioniert, danke.
  • OK, ich wieder die Frage (obwohl es keine Frage mehr jetzt) und ich stellte den code, den ich schrieb, um zu testen die HTML.

Schreibe einen Kommentar