Excelドキュメントのデータを使用してITextSharpを使用し、.pdfドキュメント内にテーブルを正常に作成しました。.pdfテーブルの列幅をExcelドキュメントと同じになるように設定しました。
ただし、.pdfドキュメントを表示すると、レイアウトがExcelドキュメントのレイアウトと一致しません。
問題は、テーブルの作成時に使用されているフォントのスタイル/サイズにあると思います。.pdfで作成されているテーブルのデフォルトのフォントスタイル/サイズを変更する方法をオンラインで検索しましたが、それがどのように行われるのか完全にはわかりません(フォントを使用したことはありません)。
これが私が持っているものです。
private void WritePDFTable(ExcelWorksheet sheet, Document doc)
{
var start = sheet.Dimension.Start;
var end = sheet.Dimension.End;
float[] ColumnWidths = new float[end.Column];
float TotalWidth = 0f;
int row;
int column;
if (sheet.Dimension != null) // make sure the sheet isn't empty
{
if (end.Column > 0) // create a table to hold the columns in the passed worksheet
{
for (column = start.Column; column <= end.Column; column++)
{
ColumnWidths[column - 1] = (float)(sheet.Column(column).Width);
TotalWidth = TotalWidth + (float)(sheet.Column(column).Width);
}
// creat a pdf table with the same # of columns as were found in the workbook
PdfPTable PdfPTable = new PdfPTable(end.Column);
// set absolute width of the columns
PdfPTable.SetWidths(ColumnWidths);
PdfPTable.SpacingBefore = 20f;
PdfPTable.SpacingAfter = 30f;
for (row = start.Row; row <= end.Row;row++) {
for (column = start.Column; column <= end.Column; column++) {
PdfPTable.AddCell(sheet.Cells[row, column].Text);
}
}
doc.Add(PdfPTable);
}
}
}
をFont font
目的のfontSize
値で定義する場合、たとえば次のように
Font font = new Font(Font.FontFamily.HELVETICA, fontSize);
またはこれ
Font font = FontFactory.GetFont("Arial", fontSize, Font.NORMAL, BaseColor.BLACK);
(Font
Windows APIFont
クラスではなくiTextSharpクラスを使用)、単に置き換える
PdfPTable.AddCell(sheet.Cells[row, column].Text);
沿って
PdfPTable.AddCell(new Phrase(sheet.Cells[row, column].Text, font));
目的のサイズのテキストを含むセルを取得します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加