0

iTextSharpを使用してPDFを生成しています。HTMlページがあり、HTMLページを読み取ってからPDFを生成しています。しかし、問題は、ページの半分がPDFであり、ページの残りの半分がPDFでページを使い果たしていることです。 .iは、ページの半分がPDFで表示されることを意味します。一方、ページの半分はPDFで切り取られます。

私のコードは、LoadEventでは次のようになっています。

    string fileContents;
    string FilePath = Server.MapPath("print-withoutlogin.html");
    StreamReader mstrFileStreamReader = new StreamReader(FilePath);
    try
    {
        fileContents = mstrFileStreamReader.ReadToEnd();
        byte[] result = createPDF(fileContents.ToString()).GetBuffer();

        Response.Clear();
        Response.AddHeader("Content-Length", result.Length.ToString());
        Response.ContentType = "application/pdf";
        Response.AddHeader("Accept-Ranges", "bytes");
        Response.Buffer = true;
        Response.AddHeader("Expires", "0");
        Response.AddHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
        Response.AddHeader("Pragma", "public");
        Response.AddHeader("content-Transfer-Encoding", "binary");
        Response.AddHeader("Content-Disposition", "attachment; filename=kartik.pdf");
        Response.BinaryWrite(result);
        Response.Flush();
        Response.End();
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        mstrFileStreamReader.Close();
    }

 private MemoryStream createPDF(string html)
 {
    MemoryStream msOutput = new MemoryStream();
    TextReader reader = new StringReader(html);

    Document document = new Document(PageSize.A4, 0, 0, 50, 50);

    PdfWriter writer = PdfWriter.GetInstance(document, msOutput);
    HTMLWorker worker = new HTMLWorker(document);
    //worker.SetStyleSheet(styles);


    // step 4: we open document and start the worker on the document 
    document.Open();
    worker.StartDocument();
    // step 5: parse the html into the document      
    worker.Parse(reader);
    // step 6: close the document and the worker     
    worker.EndDocument();
    worker.Close();
    document.Close();

    return msOutput;
 }
4

1 に答える 1

0

Crystal Reports の使用を検討したことはありますか? 私はそれがはるかに簡単だと思います、そしてあなたは使うことができます

pdfStream = (MemoryStream)report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
于 2012-12-04T11:01:41.923 に答える