2011-02-24 17 views
9

का उपयोग कर पीडीएफ फ़ाइल में एक रेखा खींचने में समस्या I amttsharp का उपयोग कर एएसपीनेट सी # में एक पीडीएफ फ़ाइल उत्पन्न कर रहा हूं। मैं एक क्षैतिज रेखा/लंबवत रेखा/बिंदीदार रेखा खींचने में सक्षम नहीं हूँ।itextsharp

मैं निम्नलिखित कोड का उपयोग कर, मैं कोई त्रुटि हो रही है एक रेखा खींच करने की कोशिश की लेकिन लाइन भी pdf फ़ाइल

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(); 

में प्रदर्शित होने का नहीं है क्या code.Is इसकी वजह में समस्या है एक्सई समन्वय की स्थिति का? मैंने पीडीएफ में अनुमानित स्थिति जानने के लिए किसी न किसी बिंदु का उपयोग किया था, लेकिन लाइन पीडीएफ फ़ाइल में कभी भी नहीं है।

आउटपुट जो मैं देख रहा हूं वह नीचे दी गई छवि में दिखाया गया है। enter image description here

+3

शायद ज़रुरत पड़े: आप एक PDF में लाइनों लिखने के लिए जानकारी संशोधित की कोशिश नहीं कर रहे हैं? आपको वास्तव में लाइनों के नीचे टेक्स्ट सामग्री को हटाना होगा अन्यथा लोग इसे पीडीएफ से अभी भी निकाल सकते हैं। – Rup

उत्तर

5

तुम हमेशा आपरेशन कि आप प्रदर्शन कर रहे हैं के लिए रंग सेट करने के लिए सुनिश्चित करना चाहिए, अन्यथा आप को पता नहीं होगा कि तुम क्या मिलेगा (इसमें से जो कुछ भी पिछले ऑपरेशन किया गया था हो जाएगा)। Cb.setStrokeColor (255, 0, 0) (शुद्ध लाल) करने का प्रयास करें जब तक कि आप अपनी लाइन प्राप्त न करें जहां आप इसे चाहते हैं।

+0

मेरे लिए काम करता है। आपने मुझे इसमें हरा दिया। –

+0

त्रुटि: विधि 'SetColorStroke' के लिए कोई अधिभार '3' तर्क – Ishan

+2

संस्करण 5.3.2.0 के रूप में, आप cb.SetColorStroke (नया बेसकॉलर (255,0,0)) का उपयोग कर सकते हैं; – Maciej

0

आप जानते हैं कि iTextsharp में, समन्वय प्रणाली नीचे बाएं कोने से ऊपर काम करती है - क्या आप सुनिश्चित हैं कि आपकी लाइन पृष्ठ के नीचे आगे नहीं आ रही है?

+0

हां मुझे पता है कि iTextsharp में, समन्वय प्रणाली नीचे बाएं कोने से ऊपर काम करती है और हां मैंने पूरे पृष्ठ की जांच की है। – Ishan

3

क्या आप सुनिश्चित हैं कि pdfDocument.Top एक मूल्य लौटा रहा है? मैं इस्तेमाल किया PageSize.Width and PageSize.Height

iTextSharp.text.Document myDocument = new Document(PageSize.A4); 
PdfContentByte contentByte = writer.DirectContent; 
contentByte.SetLineWidth(1); 
contentByte.MoveTo(0, 14); 
contentByte.LineTo(myDocument.PageSize.Width,14); 
contentByte.Stroke(); 
5

iTextSharp ड्रॉ द लाइन: -

Dim line1 As New iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.Black, Element.ALIGN_LEFT, 1) 
pdfDoc.Add(New Chunk(line1)) 
0

मैं ऊपर से lessly के साथ कुर्सी द्वारा प्रदान की जवाब के संयोजन का उपयोग समाप्त हो गया। स्ट्रिंगबिल्डर फ़ंक्शंस का उपयोग करके, आप चीजों को अवरुद्ध कर सकते हैं और फिर मैन्युअल रूप से एक रेखा खींच सकते हैं जब तक कि आपके पास कोई टेबल सेल न हो जो एक शब्द के साथ टीडी टैग की सभी चौड़ाई लेता है।

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(); 
13
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); 
-2
Dim line1 As New iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.Black, Element.ALIGN_LEFT, 1) 
pdfDoc.Add(New Chunk(line1)) 
+2

मेरा डाउनवोट नहीं था, लेकिन यह [कम जवाब का] [http://stackoverflow.com/a/15223633) जैसा नहीं है? यह बेहतर क्यों है? – Rup