Prawn::Errors::CannotFit: Table 的宽度设置得太小,无法容纳其内容
Prawn::Errors::CannotFit: Table's width was set too small to contain its contents
我正在尝试使用以下代码在 Prawn 中创建一个 table,但是列宽不适合我现在的列宽。鉴于我还有一些空闲的 space,我想稍微扩展第二列和最后一列,因此我将它们分别增加到 55.mm
和 20.mm
,但我收到了一个错误
Prawn::Errors::CannotFit: Table's width was set too small to contain its contents (min width 450.70866141732284, requested 442)
。
为什么扩展列宽会引发 Tabe too small
错误?
我计算了列的总宽度:
9.mm + 45.mm + 20.mm + 20.mm + 20.mm + 30.mm + 15.mm + 20.mm #=> 507.40157480314963
我不明白。我做错了什么?
bounding_box [0, 792], width: 612, height: 792 do
bounding_box [30, 792], width: 442, height: 792 do
line_items_table
end
end
def line_items_table
table line_item_rows, table_options do
row(0).background_color = TABLE_BACKGROUND_COLOR
columns(2..-1).align = :right
end
end
def table_options
{
cell_style: { border_width: 0 },
column_widths: TABLE_COLUMN_WIDTHS,
header: true,
# width: 160.mm
}
end
def line_item_rows
[TABLE_HEADERS]
end
TABLE_COLUMN_WIDTHS = { 0 => 9.mm, 1 => 45.mm, 2 => 20.mm, 3 => 20.mm, 4 => 30.mm, 5 => 15.mm, 6 => 15.mm }.freeze
TABLE_HEADERS = [I18n.t('pdf.headers.row_num'), I18n.t('pdf.headers.name'),
I18n.t('pdf.headers.quantity'), I18n.t('pdf.headers.price_net_amount'), I18n.t('pdf.headers.net_amount'),
I18n.t('pdf.headers.vat'), I18n.t('pdf.headers.gross_amount')].freeze
#Table headers above are: 'No', 'Name', 'Qauntity', 'Net Sale', 'Net amount', 'Gross amount', 'VAT'
Table 的宽度设置得太小,无法容纳其内容(最小宽度 450.7,要求 442)
这意味着您的总列宽必须低于 442,而您的总列宽目前为 450.7,
你应该把它改成低于 442
您有设置 442 的线路代码
bounding_box [30, 792], width: 442, height: 792 do
如果你想设置大那么我的建议你应该先改变它
我正在尝试使用以下代码在 Prawn 中创建一个 table,但是列宽不适合我现在的列宽。鉴于我还有一些空闲的 space,我想稍微扩展第二列和最后一列,因此我将它们分别增加到 55.mm
和 20.mm
,但我收到了一个错误
Prawn::Errors::CannotFit: Table's width was set too small to contain its contents (min width 450.70866141732284, requested 442)
。
为什么扩展列宽会引发 Tabe too small
错误?
我计算了列的总宽度:
9.mm + 45.mm + 20.mm + 20.mm + 20.mm + 30.mm + 15.mm + 20.mm #=> 507.40157480314963
我不明白。我做错了什么?
bounding_box [0, 792], width: 612, height: 792 do
bounding_box [30, 792], width: 442, height: 792 do
line_items_table
end
end
def line_items_table
table line_item_rows, table_options do
row(0).background_color = TABLE_BACKGROUND_COLOR
columns(2..-1).align = :right
end
end
def table_options
{
cell_style: { border_width: 0 },
column_widths: TABLE_COLUMN_WIDTHS,
header: true,
# width: 160.mm
}
end
def line_item_rows
[TABLE_HEADERS]
end
TABLE_COLUMN_WIDTHS = { 0 => 9.mm, 1 => 45.mm, 2 => 20.mm, 3 => 20.mm, 4 => 30.mm, 5 => 15.mm, 6 => 15.mm }.freeze
TABLE_HEADERS = [I18n.t('pdf.headers.row_num'), I18n.t('pdf.headers.name'),
I18n.t('pdf.headers.quantity'), I18n.t('pdf.headers.price_net_amount'), I18n.t('pdf.headers.net_amount'),
I18n.t('pdf.headers.vat'), I18n.t('pdf.headers.gross_amount')].freeze
#Table headers above are: 'No', 'Name', 'Qauntity', 'Net Sale', 'Net amount', 'Gross amount', 'VAT'
Table 的宽度设置得太小,无法容纳其内容(最小宽度 450.7,要求 442) 这意味着您的总列宽必须低于 442,而您的总列宽目前为 450.7, 你应该把它改成低于 442
您有设置 442 的线路代码
bounding_box [30, 792], width: 442, height: 792 do
如果你想设置大那么我的建议你应该先改变它