1

ITextSharp を使用して aspx ページを pdf に正常にレンダリングしました。今、PDFファイルの背景に透かしロゴを追加したいのですが、私はこれにこだわっています。

以下は、pdfにエクスポートするための私のコードです

private void ShowPdf(string s)
    {
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "inline;filename=" + s);
        Response.ContentType = "application/pdf";
        Response.WriteFile(s);
        Response.Flush();
        Response.Clear();
    }
    public void PrepareControlForPDF()
    {
        MemoryStream mem = new MemoryStream();
        StreamWriter twr = new StreamWriter(mem);
        HtmlTextWriter myWriter = new HtmlTextWriter(twr);
        divApplicantDetails.RenderControl(myWriter);
        myWriter.Flush();
        //  myWriter.Dispose();
        StreamReader strmRdr = new StreamReader(mem);       
        strmRdr.BaseStream.Position = 0;
        string pageContent = strmRdr.ReadToEnd();
        //CreatePDFDocument(strmRdr);
        //strmRdr.Dispose();
        ///mem.Dispose();
        CreatePDFDocument(pageContent);
        //writer.Write(pageContent);
    
    }
    public void CreatePDFDocument(string strHtml)
    {
        string filename =  ""+System.DateTime.Now.Day+"AppLetter.pdf";
        //          if (System.IO.File.Exists(Server.MapPath("../Pdf") + "/" + filename))
        //          {
        //              System.IO.File.Delete(Server.MapPath("../Pdf") + "/" + filename);
        //          }
        string strFileName = Server.MapPath("../Pdf") + "/" + filename;

        Document document = new Document();
        try
        {
            PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create));
            StringReader se = new StringReader(strHtml);
            MemoryStream ms = new MemoryStream();
            ms.Write(System.Text.Encoding.ASCII.GetBytes(strHtml), 0, System.Text.Encoding.ASCII.GetBytes(strHtml).Length);
            //ms.Position = 0;
            StreamReader sr = new StreamReader(new MemoryStream(new System.Text.ASCIIEncoding().GetBytes(strHtml)));
            sr.BaseStream.Position = 0;
            HTMLWorker obj = new HTMLWorker(document);
        
            document.Open();

            obj.Parse(se);
        }
        finally
        {
            document.Close();
        }
    }
4

1 に答える 1