Je génère un fichier PDF dans ASP.NET C # à l'aide d'ITEXTSTHARP. Je ne suis pas en mesure de dessiner une ligne horizontale / verticale ligne / une ligne pointillée.
J'ai essayé de dessiner une ligne à l'aide du code suivant, je n'ai aucune erreur, mais la ligne ne s'affiche pas non plus dans le fichier PDF P >
PdfContentByte cb = wri.DirectContent; cb.SetLineWidth(2.0f); // Make a bit thicker than 1.0 default cb.MoveTo(20, pdfDocument.Top - 40f); cb.LineTo(400, pdfDocument.Top - 40f); cb.Stroke();
7 Réponses :
Vous savez que dans ItextShaarp, le système de coordonnées fonctionne à partir du coin inférieur gauche vers le haut - êtes-vous sûr que votre ligne ne vous a pas prélevé sur la page? P>
YA Je sais que dans ItextShaRP, le système de coordonnées fonctionne à partir du coin inférieur gauche vers le haut et oui, j'ai vérifié la page entière.
Êtes-vous sûr que pdfdocument.top retourne une valeur?
J'ai utilisé pagesize.width and pagesize.height code>
Vous devez toujours vous assurer de définir la couleur de l'opération que vous effectuez, sinon vous ne saurez pas ce que vous obtiendrez (il s'agira d'une opération précédente). Essayez de faire cb.setstrokecolor (255, 0, 0) (rouge pur) jusqu'à ce que vous obteniez votre ligne où vous le souhaitez. P>
Travaille pour moi. Tu m'as battus à ça.
Erreur: Aucune surcharge pour la méthode 'SetColorstroke' prend des arguments '3'
À la version 5.3.2.0, vous pouvez utiliser CB.SeColorstroke (New Basecolor (255,0,0));
iTextSharap Line Draw: -
J'ai fini par utiliser une combinaison de la réponse fournie par le socle avec moins d'en haut. Utilisation des fonctions StressBuilder, vous pouvez bloquer les choses éteintes, puis dessiner manuellement une ligne, sauf si vous avez une cellule de table qui occupe toute la largeur de la balise TD avec un mot.
StringBuilder chistHeader = new StringBuilder(); StringBuilder chistCourses = new StringBuilder(); HttpContext.Current.Response.ContentType = "application/pdf"; HttpContext.Current.Response.AddHeader("content-disposition", "inline;filename=CourseHistory.pdf"); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); Document pdfDoc = new Document(); PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream); pdfDoc.Open(); chistHeader = CourseHistoryHeader(Convert.ToInt32(hdUserID.Value), hdSystemPath.Value, "CourseHistory"); chistCourses = CourseHistoryCourses(Convert.ToInt32(hdUserID.Value), hdSystemPath.Value, "CourseHistory"); //write header for the pdf foreach (IElement element in HTMLWorker.ParseToList(new StringReader(chistHeader.ToString()), new StyleSheet())) { pdfDoc.Add(element); } //have to manually draw a line this way as ItextSharp doesn't allow a <hr> tag.... iTextSharp.text.pdf.draw.LineSeparator line1 = new iTextSharp.text.pdf.draw.LineSeparator(1f, 100f, BaseColor.BLACK, Element.ALIGN_LEFT, 1); pdfDoc.Add(new Chunk(line1)); //write out the list of courses foreach (IElement element in HTMLWorker.ParseToList(new StringReader(chistCourses.ToString()), new StyleSheet())) { pdfDoc.Add(element); } pdfDoc.Close(); HttpContext.Current.Response.Write(pdfDoc); HttpContext.Current.Response.End();
Paragraph p = new Paragraph(new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK, Element.ALIGN_LEFT, 1))); document.Add(p);
Dim line1 As New iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.Black, Element.ALIGN_LEFT, 1) pdfDoc.Add(New Chunk(line1))
N'était-ce pas mon bowvote, mais n'est-ce pas identique à La réponse de Bullement ? Pourquoi est-ce mieux?
Juste au cas où: vous n'essayez pas d'écrire des lignes dans un PDF pour rédiger des informations? Vous auriez besoin de supprimer le contenu du texte sous les lignes d'autre, sinon les gens pouvaient toujours l'extraire du fichier PDF.