TableNoSides.cs
//
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Numerics;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Common;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Layout;
using GCTEXT = GrapeCity.Documents.Text;
using GCDRAW = GrapeCity.Documents.Drawing;
namespace DsPdfWeb.Demos
{
// このサンプルでは、GrapeCity.Documents.Drawing.TableRenderer クラスなどを使用して、
// 左右に罫線がないグリッドを持つ単純なテーブルを描画する方法を紹介しています。
public class TableNoSides
{
public int CreatePDF(Stream stream)
{
var doc = new GcPdfDocument();
var g = doc.NewPage().Graphics;
DrawTable(g, g.CanvasSize.Width, g.CanvasSize.Height);
// PDF を保存します。
doc.Save(stream);
return doc.Pages.Count;
}
static void DrawTable(GcGraphics g, float pageWidth, float pageHeight)
{
var host = new LayoutHost();
var view = host.CreateView(pageWidth, pageHeight);
var rt = view.CreateRect();
rt.AnchorTopLeftRight(null, 30, 20, 20);
var ta = new TableRenderer(g,
rt, FixedTableSides.TopLeftRight,
rowCount: 17,
columnCount: 4,
gridLineColor: Color.SlateBlue,
gridLineWidth: 2,
rowMinHeight: 20);
var columns = ta.ColumnRects;
columns[0].SetWidth(40);
columns[1].SetStarWidth(200);
columns[2].SetStarWidth(250);
columns[3].SetStarWidth(150);
ta.SetVerticalGridLineWidth(0, 0);
ta.SetVerticalGridLineWidth(4, 0);
ta.SetHorizontalGridLineWidth(0, 5);
ta.SetHorizontalGridLineWidth(1, 5);
ta.SetHorizontalGridLineWidth(17, 5);
var fmt1 = new TextFormat
{
Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "ipag.ttc")),
FontSize = 16,
FontSizeInGraphicUnits = true
};
var cs = new CellStyle
{
PaddingTop = 2,
PaddingBottom = 5,
PaddingLeftRight = 10,
TextFormat = fmt1,
TextAlignment = TextAlignment.Trailing
};
var csBold = new CellStyle(cs)
{
TextAlignment = TextAlignment.Center,
TextFormat = new TextFormat(fmt1)
{
FontBold = true
}
};
var csText = new CellStyle(cs)
{
TextAlignment = TextAlignment.Leading,
};
ta.AddCell(csBold, 0, 0, "#");
ta.AddCell(csBold, 0, 1, "計算式");
ta.AddCell(csBold, 0, 2, "値");
ta.AddCell(csBold, 0, 3, "コメント");
for (int i = 1; i <= 16; i++)
{
ta.AddCell(cs, i, 0, $"{i}");
ta.AddCell(csText, i, 1, $"Math.Sqrt({i})");
ta.AddCell(cs, i, 2, Math.Sqrt(i).ToString());
ta.AddCell(csText, i, 3, $"{i} の平方根");
}
ta.Render();
}
}
}