【问题标题】:How can I add margins (not padding) to elements in PHPWord?如何为 PHPWord 中的元素添加边距(而不是填充)?
【发布时间】:2022-12-14 21:50:23
【问题描述】:

我正在对 PHPWord 进行修改以包含将 html 转换为 Word 的功能。
我有使用部分的页边距。

我已经确定具有样式的容器(部分、页眉、页脚、div、p 等)非常限于 Cell 和 TextRun 元素。
如果 div 标签包含定义边框、边距、填充、背景等的样式。我使用具有 1 行和 1 个单元格的表格。
除了边距之外,我的一切都在工作,这将在边界之外。

我尝试了下面的代码,但它把边距放在了边框内,所以我最终用它来填充。
我还尝试使用 spaceBefore 和 spaceAfter 作为顶部和底部边距。它被忽略了。

如何为 Cell 元素添加边距?

$arPadding = self::mapCSSMarginPadding($CSSStyles, 1);
$Style = null;
if($arPadding[0] > 0) $Style["CellMarginTop"] = Converter::pixelToTwip((int)$arPadding[0]);
if($arPadding[1] > 0) $Style["CellMarginRight"] = Converter::pixelToTwip((int)$arPadding[1]);
if($arPadding[2] > 0) $Style["CellMarginBottom"] = Converter::pixelToTwip((int)$arPadding[2]);
if($arPadding[3] > 0) $Style["CellMarginLeft"] = Converter::pixelToTwip((int)$arPadding[3]);

【问题讨论】:

    标签: php phpword


    【解决方案1】:

    缩进影响 Word 段落(PHPWord 文本运行)但不影响表格。
    缩进可用于左右边距,而不是顶部和底部边距。
    缩进:firstLine 在第一行的左侧添加缩进。
    hanging 从第一行减去缩进,从而使页边距缩短 hanging 的值
    firstLine 和 hanging 都不会添加作为 start/left 和 end/right 值的边距
    Word 2016 缩进识别左和右或开始和结束。
    spaceBefore 在段落的顶部添加边距(文本运行)。
    spaceAfter 在段落底部添加边距(文本运行)。

    表格可以在 Table 元素上使用 CellMargin[Top Right Bottom Left] 样式来添加边距到单元格,这样您就可以创建一个带有边距的 1 单元格表。保证金值以缇为单位。
    您可以在边距单元格的样式上放置边框和/或背景。
    如果不需要填充,只需将文本、图像等添加到边距单元格即可。

    要添加填充,您可以将表格添加到边距单元格。
    填充桌子将使用第二个 CellMargin[Top Right Bottom Left] 使用以缇为单位的填充值来设置样式。
    从那里将填充单元格添加到填充表(表 -> 行 -> 单元格)并将文本、图像等添加到单元格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多