2016-05-26 21 views
2

iTextSharpを使用して画像とテキストをpdfに追加しました。しかし、pdfの特定の位置に画像とテキストを配置したいと思います。どうすればいいのですか?itextsharp(C#/ asp.net)を使用してPDF内のテキストまたは画像の位置を設定します

は、これまでのところ私は、

img.SetAbsolutePosition(10000f,10000f); 

を試みたが、それが機能していません。ここ あなたがimg.SetAbsolutePosition(10000f,10000f);をしようとした場合

private void generatepdf(byte[] byteImage) 
    { 


    //byte[] imageBytes = Convert.FromBase64String(base64); 

    string text1= "Some Text"; 
    iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(byteImage); 
    image.ScalePercent(0.3f * 100); 
    string logopath = Server.MapPath("~/images/img1.png"); 
    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(logopath); 
    img.SetAbsolutePosition(1000f,1000f); 
    img.ScaleAbsolute(1500f, 0f); 
    img.ScalePercent(0.5f*100); 
    Paragraph ShopName = new Paragraph(text1); 
    Paragraph id = "Some Text"; 

    using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream()) 
    { 
     Document document = new Document(PageSize.A4, 188f, 88f, 5f, 10f); 
     PdfWriter writer = PdfWriter.GetInstance(document, memoryStream); 
     document.Open(); 
     document.Add(img); 
     document.Add(ShopName); 
     document.Add(image); 
     document.Add(id); 
     document.Close(); 
     byte[] bytes = memoryStream.ToArray(); 
     memoryStream.Close(); 

     Response.Clear(); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("Content-Disposition", "attachment; filename=QRCode.pdf"); 
     Response.ContentType = "application/pdf"; 
     Response.Buffer = true; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.BinaryWrite(bytes); 
     Response.End(); 
    } 

} 

答えて

6

は、あなたのイメージは、PDFの表示領域のうちの方法です、PDFを生成するための私の完全なコードです。あなたは、このようなあなたのDocumentを作成している:これは、ページのサイズは595 X 842ユーザー単位であることを意味し

Document document = new Document(PageSize.A4, 188f, 88f, 5f, 10f); 

img.SetAbsolutePosition(0,0); 

あなたがこれらの座標を使用する場合は、画像の左下隅には小文字と一致します:x = 10000y = 10000を使用すると、してみてください595 X 842

の矩形内に収まりませんページの左隅にあります。

iTextの公式ドキュメントを参照してcoordinate systemを検索してください。例えば参照:

をこれは、あなたがSetAbsolutePosition()方法の座標を定義する方法を見つけましょう。

更新:

ます。また、絶対位置にテキストを追加する方法について尋ねています。ここでは、1行のテキストと1ブロックのテキストを区別しなければなりません。公式ウェブサイトのセクションAbsolute positioning of textも参照してください。

テキストの一行:

は、例えばHow to position text relative to page?を参照してください、あなたはshowTextAligned()方法を見つけることができます:

ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, 
    new Phrase("Some text"), 100, 100, 0); 

あなたは何を発見するように、あなたが他の例を読むことを確認してくださいcanvasオブジェクトは約です。

テキストのブロック:

How to add text inside a rectangle?

ColumnText ct = new ColumnText(cb); 
ct.SetSimpleColumn(rect); 
ct.AddElement(new Paragraph("This is the text added in the rectangle")); 
ct.Go(); 

を見てみましょうについて何であるかcbrect見つけるために完全な例を見てみてください。

+0

ありがとうございました。画像にはうまくいきました。テキストについてはどうですか?テキストで同じことをするにはどうすればいいですか? –

+0

私はiTextの説明を読んだ後、この回答がうまくいかず、自分のコードにColumnText.showTextAlignedを使用しました。 –

関連する問題