たるきちのあれこれ









  Topプログラミングサンプル ▶ PDFファイル作成

sourceforge様作の「itextsharp.dll」を使用させていただきます。
「itextsharp.dll」を実行ファイルと同じフォルダに置き、
「itextsharp.dll」を参照設定に追加し作成します。


PDFファイル作成のサンプルです。

C#

// using iTextSharp.text;
// using iTextSharp.text.pdf;
// using System.IO;

Document doc = new Document(PageSize.A4);
// Document doc = new Document(PageSize.A4.Rotate()); // A4ヨコ
PdfWriter pw = PdfWriter.GetInstance(doc, new FileStream(@"C:\sample.pdf", FileMode.Create));
doc.Open();
PdfContentByte pcb = pw.DirectContent;

// テンプレート挿入
PdfReader pr = new PdfReader(@"C:\template.pdf");
PdfImportedPage pip = pw.GetImportedPage(pr, 1);
pcb.AddTemplate(pip, 0.0f, 0.0f);

// 文字描画
iTextSharp.text.Font fontPDF = new iTextSharp.text.Font(BaseFont.CreateFont(@"C:\Windows\Fonts\msgothic.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED));
pcb.BeginText();
pcb.SetColorFill(iTextSharp.text.BaseColor.BLACK);
pcb.SetFontAndSize(fontPDF.BaseFont, 16.0f);
pcb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "あいう", 50.0f, 100.0f, 270.0f);
pcb.EndText();

// 直線描画
pcb.SetLineWidth(2.0f);
pcb.SetColorStroke(iTextSharp.text.BaseColor.LIGHT_GRAY);
pcb.MoveTo(250.0f, 100.0f);
pcb.LineTo(250.0f, 300.0f);
pcb.LineTo(300.0f, 300.0f);
pcb.Stroke();

// 長方形描画
pcb.SetLineWidth(1.0f);
pcb.SetColorStroke(iTextSharp.text.BaseColor.BLUE);
pcb.Rectangle(100.0f, 50.0f, 80.0f, 80.0f);
pcb.Stroke();

// 楕円描画
pcb.SetLineWidth(0.2f);
pcb.SetColorStroke(iTextSharp.text.BaseColor.RED);
pcb.Ellipse(100.0f, 50.0f, 200.0f, 450.0f); // 対角座標を指定
pcb.Stroke();

// 画像描画(元画像サイズ)
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(new Uri(@"C:\image.png"));
image.ScalePercent(75.0f); // WindowsとPDFのサイズ共通化のため
image.SetAbsolutePosition(100.0f, 400.0f);
pcb.AddImage(image);

// 画像描画(用紙サイズに拡大)
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(new Uri(@"C:\image.png"));
image.ScalePercent((float)(doc.PageSize.Width / image.Width * 100));
image.SetAbsolutePosition(0.0f, 0.0f);
pcb.AddImage(image);

doc.Close();

// (追記)原寸をポイントに変更
// Utilities.MillimetersToPoints(100.0f)

// (追記)QRコード
// iTextSharp.text.pdf.BarcodeQRCode qr = new iTextSharp.text.pdf.BarcodeQRCode("abcdefghijklmn", 60, 60, null);
// iTextSharp.text.Image imageQR = qr.GetImage();
// imageQR.SetAbsolutePosition(100.0f, 200.0f);
// pcb.AddImage(imageQR);