У меня есть проблема при экспорте в pdf файл один GridView в C# asp net с iTextSharp Library.Экспорт гиперссылки в pdf-файл из библиотеки iTextSharp в C#
В последнем столбце я ожидал гиперссылку, но в выходном pdf у меня есть усеченная ссылка и несуществующее соединение, которое отвечает ошибкой «страница не найдена».
Пожалуйста, проверьте изображение вложения и код C#.
Кто-нибудь знает, как я могу это решить?
Заранее спасибо.
<asp:TemplateField HeaderText="hlKvm" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:HyperLink ID="hlKvm" runat="server" NavigateUrl='<%# Eval("Kvm").ToString() %>'
ImageUrl='<%#(String.IsNullOrEmpty(Eval("Kvm").ToString()) ? "/mac/Images/TRKO8.png" : "/Images/download.gif")%>'
ToolTip='<%#(String.IsNullOrEmpty(Eval("Kvm").ToString()) ? "" : "")%>'
Target="_blank" BorderStyle="None" ForeColor="Transparent">
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
cellText = (gvProducts.Rows[rowIndex].Cells[16].FindControl("hlKvm") as HyperLink).NavigateUrl;
Редактировать # 1
Это код для метода Anchor, пожалуйста, проверьте прикрепленное изображение и код ниже.
cellText = (gvProducts.Rows[rowIndex].Cells[16].FindControl("hlKvm") as HyperLink).NavigateUrl;
string imagePath = Server.MapPath((gvProducts.Rows[rowIndex].Cells[16].FindControl("hlKvm") as HyperLink).ImageUrl);
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagePath);
Chunk cImage = new Chunk(image, 0, 0, false);
Anchor anchor = new Anchor(cImage);
anchor.Reference = cellText.ToString();
table.AddCell(anchor);
Edit # 2
Если попробовать ваш Вариант 1 выход:
Если попробовать ваш Вариант 2 выход:
Invalid URI: The URI is empty.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UriFormatException: Invalid URI: The URI is empty.
Source Error:
Line 772: iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagePath);
Line 773: Chunk cImage = new Chunk(image, 0, 0, false);
Line 774: cImage.SetAction(new PdfAction(new Uri(cellText.ToString())));
Line 775: table.AddCell(new Phrase(cImage));
Line 776:
Если попробовать ваш Вариант 2 с проверяемой Текст_ячейки равна нулю выход:
Но образ не совпадает с GridView .. .
Если вы хотите добавить гиперссылку, вам нужно создать 'Anchor' или ссылку' PdfAnnotation'. Меня это удивило бы, если бы кто-нибудь был удивлен поведением, которое вы описываете. Очень нормально, что ссылка сломана, потому что (1) вы не предоставляете ссылку, (2) в вашем случае вы можете щелкнуть ссылку, потому что средство просмотра преобразует текст, который начинается с http: // в ссылку: (а) не каждый зритель сделает это, (б) вы только предоставляете часть URL-адреса, следовательно, ссылка не работает. –
@BrunoLowagie привет, спасибо за ответ, я пробовал с изображением Anchor, но выход потерял выравнивание. У вас есть пример для PdfAnnotation? –
(1.) 'Anchor' работает, поэтому, пожалуйста, покажите нам, что вы пробовали. Возможно, вы делаете это неправильно. (2.) Проверьте [эти примеры] (http://tinyurl.com/itextsharpIIA2C07). Пример LinkActions использует 'Chunk.SetAnchor()', примеры MoviePosters1 используют 'Annotation', в примере TimeTableAnnotations2 используется' PdfAnnotation'. На самом деле, как только вы начнете читать документацию (или я должен сказать * если * вы начнете читать документацию), вы можете найти довольно некоторые примеры ... –