Невозможно привести объект типа 'iTextSharp.text.html.simpleparser.IncTable' к типу 'iTextSharp.text.ITextElementArray' - PullRequest
0 голосов
/ 20 февраля 2019

Это мой первый вопрос о переполнении стека, и я не могу найти решение в них, когда просматриваю ту же проблему.Я работаю над страницей, где она может быть преобразована в PDF-документ.Я попытался использовать Select.HtmlToPdf.dll, но страница в формате PDF развернута только на 5-6 страницах.Я попытался использовать itextsharp.dll, но выдает ошибку 'Невозможно привести объект типа iTextSharp.text.html.simpleparser.IncTable к типу iTextSharp.text.ITextElementArray.при нажатии на значок PDF.

вот скриншот ошибки: error message

ниже - 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();
...