我正在尝试将aspx页面保存为PDF。 它包含QR码(作为图像)和一些文本。我使用iTextSharp和QRCode库作为nuget。 Visual Studio 2012.
我的问题是,当我运行它时,我得到一个错误(当它点击“pdfDoc.Close”时)它说无法找到路径的一部分“C:\ Program Files(x86)\ IIS Express \ Image \ QrCode.jpg。“ 我正在将这个翻译成瑞典语,所以我认为这是正确的。 我将QR图像本地保存在项目中名为Image的文件夹中。但它希望它在IIS Express \ Image中。这是为什么? 正在保存PDF,但仅保存文本。
以下是我用来创建,保存和使用QR-Image的代码。
QRCodeEncoder encoder = new QRCodeEncoder();
Bitmap img = encoder.Encode(objectList[95].ToString());
img.Save(@"C:\Users\My name\Documents\visual studio 2012\Projects\EmptyQR\EmptyQR\Image\QrCode.jpg", ImageFormat.Jpeg);
QRImage.ImageUrl = @"~/Image/QrCode.jpg";
这是我用来保存为PDF的代码。 ( 文件夹“Files”位于我的项目中。)
protected void btnExport_Click(object sender, EventArgs e)
{
FileStream file = new FileStream(Server.MapPath("~/Files/") + "Test.PDF", FileMode.Create, System.IO.FileAccess.Write);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
Panel1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
MemoryStream ms = new MemoryStream();
PdfWriter.GetInstance(pdfDoc, file);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
file.Close();
}
在这里您可以看到HTML代码。
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server">
我必须在这里有这个空间,否则上面的代码就不会显示。
<div id="qr">
<div class="qrImage">
<asp:Image runat="server" ID="QRImage" />
</div>
<div class="information">
<h1>Real Estate</h1>
<p class="productName prodInfo">RL-B7-103</p>
<p class="prodInfo">Brandagsventilator, elektronisk styrd</p>
<p class="prodInfo">BRA 2-B (Mtrl, center, uh, detaljmåleri)</p>
<p class="prodInfo">Takplan</p>
</div>
</div>
</asp:Panel>
<asp:Button ID="btnExport" runat="server" Text="Export"
OnClick="btnExport_Click" />
</form>