2017-09-04 6 views
1

PDF의 특정 위치에 텍스트를 어떻게 배치합니까? 나는 약간의 검색을했지만 너무 좋은 것을 찾지 못했습니다. 나는 document.Add(new Paragraph("Date:" + DateTime.Now));을 가지고 있으며 나는 pdf 파일의 특정 영역에 그 파일을 배치하려고합니다.iTextSharp를 사용하여 특정 위치에 단락을 배치하는 방법

내 코드 :

private void savePDF_Click(object sender, EventArgs e) 
    { 
     FileStream fileStream = new FileStream(nameTxtB.Text + "Repair.pdf", FileMode.Create, FileAccess.Write, FileShare.None); 
     Document document = new Document(); 
     document.Open(); 
     iTextSharp.text.Rectangle rectangle = new iTextSharp.text.Rectangle(PageSize.LETTER); 
     PdfWriter pdfWriter = PdfWriter.GetInstance(document, fileStream); 

     iTextSharp.text.Image r3tsLogo = iTextSharp.text.Image.GetInstance("rt3slogo.PNG"); //creates r3ts logo 
     iTextSharp.text.Image r3Info = iTextSharp.text.Image.GetInstance("R3 Information.PNG"); //creates r3 information text below r3ts logo 

     r3tsLogo.SetAbsolutePosition(document.PageSize.Width - 375 - 0f, document.PageSize.Height - 130 - 0f); 
     r3Info.SetAbsolutePosition(document.PageSize.Width - 365 - 0f, document.PageSize.Height - 170 - 0f); //higher the number in height the lower the place of text on paper 
            //less number will result in text more to right in width 

     //increase size of picture 
     r3tsLogo.ScalePercent(120); 
     r3Info.ScalePercent(65); 

//---------------adds all images to pdf file --------------------------------- 
     document.Add(r3tsLogo); 
     document.Add(r3Info); 
     document.Add(new Paragraph("Date:" + DateTime.Now)); 




     document.Close(); 
    } 

답변

2

당신이 절대 위치에 이미지를 추가하는 방법을 알고 있다고 가정은 (요리스 '대답을 참조)하지만,보고 텍스트를 추가하는 방법에 대한 질문에 대한 대답은 ColumnText입니다. 코드, x이 줄을

ColumnText.showTextAligned(writer.DirectContent, 
    Element.ALIGN_CENTER, new Phrase("single line"), x, y, rotation); 

y는 대한 좌표 : 당신은 단지 포장 할 필요가없는 한 줄을 추가해야하는 경우

, 당신은 ShowTextAligned() 방법을 사용할 수 있습니다 텍스트 중간 (다른 정렬 값은 ALIGN_LEFTALIGN_RIGHT입니다). rotation 매개 변수는도 단위의 회전을 정의합니다. 텍스트 "single line"은 랩핑되지 않습니다. 추가하는 텍스트가 너무 길면 "페이지에서 떨어지는"텍스트를이 방법으로 추가 할 수 있습니다. 특정 사각형 안에 텍스트를 추가하려면

는, 당신은 Rectangle 개체를 사용하여 열을 정의해야합니다 : 당신이 사각형을 맞는 것보다 더 많은 텍스트를 제공하는 경우

ColumnText ct = new ColumnText(writer.DirectContent); 
ct.setSimpleColumn(new Rectangle(0, 0, 523, 50)); 
ct.addElement(new Paragraph("This could be a very long sentence that needs to be wrapped")); 
ct.go(); 

, 즉 텍스트가 렌더링되지 않습니다 . 그러나 다른 위치에 남아있는 텍스트를 추가 할 수 있도록 ct 개체에서 계속 사용할 수 있습니다.

이 모든

질문과 전에 답했습니다

한 줄 :

여러 줄 :

내가 이러한 예는 긴 검색 할 수 있었나요? 아니, 공식 웹 사이트 Absolute Positioning of text에서 찾았습니다.+ DateTime.Now)`절대 위치 :

지혜는

1

이 개념을 충분히 책 '행동이 iText'에 설명되어 있습니다. 어떤 웹 사이트에서 찾을 수 있습니다.

http://developers.itextpdf.com/examples/itext-action-second-edition/chapter-3

짧은 코드 샘플 (다른 예에 대한 사이트를 확인) :

// step 1 
Document document = new Document(PageSize.POSTCARD, 30, 30, 30, 30); 

// step 2 
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT)); 

// step 3 
document.open(); 

// step 4 
// Create and add a Paragraph 
Paragraph p = new Paragraph("Foobar Film Festival", new Font(FontFamily.HELVETICA, 22)); 
p.setAlignment(Element.ALIGN_CENTER); 
document.add(p); 

// Create and add an Image 
Image img = Image.getInstance(RESOURCE); 
img.setAbsolutePosition(
     (PageSize.POSTCARD.getWidth() - img.getScaledWidth())/2, 
     (PageSize.POSTCARD.getHeight() - img.getScaledHeight())/2); 
document.add(img); 
+0

나는 문제가 이미지를 배치 아니라고 생각하지만, 위치' "날짜"... 검색하는 사람들을 위해 존재한다. 물론 이것은 이전에 여러 번 답변 된 질문이기도합니다. –

관련 문제