Это мой первый вопрос о переполнении стека, и я не могу найти решение в них, когда просматриваю ту же проблему.Я работаю над страницей, где она может быть преобразована в PDF-документ.Я попытался использовать Select.HtmlToPdf.dll
, но страница в формате PDF развернута только на 5-6 страницах.Я попытался использовать itextsharp.dll
, но выдает ошибку 'Невозможно привести объект типа iTextSharp.text.html.simpleparser.IncTable
к типу iTextSharp.text.ITextElementArray
.при нажатии на значок PDF.
вот скриншот ошибки:
ниже - aspx.page
:
<div class="col-md-12 text-right">
<table width="100%">
<tr>
<td align="right">
<asp:ImageButton ID="imgbtnExport" runat="server" AlternateText="Results in PDF Format" ToolTip="Results in PDF Format" Visible="true"
ImageUrl="~/Images/pdf.png" Width="40px" Height="40px" CausesValidation="false" OnClick="imgbtnExportPDF_Click" />
</td>
</tr>
</table>
</div>
<div class="row">
<div class="col-md-12">
<asp:Repeater ID="RPTAuditMain" runat="server" OnItemDataBound="RPTAuditMain_ItemDataBound">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table align="center" style="width: 95%; border-spacing: 0;">
<tr style="background-color: #cccccc; text-align: center; border-top: 5px solid #25a7da; border-bottom: 5px solid #25a7da; border-right: 5px solid #25a7da; border-left: 5px solid #25a7da; height: 20px;">
<td align="left" style="padding: 10px;" valign="top">
<b>Litho Code:</b>
<asp:Label ID="lblLitho" Style="font-weight: bold; font-size: medium" runat="server" Text='<%# Eval("LithoNumber") %>'></asp:Label>
<asp:Label ID="lblMainElectionID" Style="font-weight: bold; font-size: medium" runat="server" Text='<%# Eval("MainElectionID") %>' Visible="false"></asp:Label>
<br />
<asp:Repeater ID="RPTAuditChildState" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table align="center" style="width: 95%; border-spacing: 0;">
<tr style="background-color: #cccccc;">
<td align="left" style="padding: 10px;" valign="top">
<asp:Label ID="DivisionName" Style="font-weight: bold; font-size: medium" runat="server" Text='<%# Eval("DivisionName") %>' Visible="true"></asp:Label>
<br />
<asp:Label ID="OfficeTitle" Style="font-weight: bold; font-size: medium" runat="server" Text='<%# Eval("ReviewName") %>' Visible="true"></asp:Label>
<asp:Label ID="OfficeID" Style="font-weight: bold; font-size: medium" runat="server" Text='<%# Eval("OfficeID") %>' Visible="false"></asp:Label>
<asp:Repeater ID="RPTAuditChildState2" runat="server">
<HeaderTemplate>
<table align="center" style="width: 95%; border-spacing: 0;">
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color: #cccccc;">
<td>
<asp:Label ID="CandidateName" Style="font-weight: bold; font-size: medium" runat="server" Text='<%# Eval("Name") %>' Visible="true"></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</td>
</tr>
</br>
</table>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</div>
ниже приведен код для PDF:
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
this.Page.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();