将html转换为pdf时防止表单元格跨页中断

亚伦·杜尼根·阿特利

使用Google Apps脚本,我填写了一个html模板,然后以pdf格式发送(通过传真和/或电子邮件)。该模板包括一个带有问题/答案的两列表格。

如果有足够的行,则该表会在pdf中的各个页面之间中断,并且该页面中断通常发生在单元格的中间;我想避免这种情况。

我尝试break-inside: avoid;<tr><td>元素中都使用,但没有效果。

这是模板:

<table style="border-collapse: collapse; border: 1px solid black; table-layout: fixed; width: 100%;">
  <tbody>
    <tr>
      <th style="border: 1px solid black; width: 30%; padding: 5px;">Question</th>
      <th style="border: 1px solid black; width: 70%; padding: 5px;">Response</th>
    </tr>
  <? rows.forEach(function(row){ ?>
    <tr style="break-inside: avoid;">
      <td style="break-inside: avoid; border: 1px solid black; padding: 5px; line-height: 1.5rem;"> <?= row.question ?> </td>
      <td style="break-inside: avoid; border: 1px solid black; padding: 5px; line-height: 1.5rem;"> <?!= row.answer ?> </td>
    </tr>
  <? }) ?>
  </tbody>
</table>

这是将其转换为pdf的Apps脚本代码:

var html = '<h3>' + subject + '</h3>'
var tableTemplate = HtmlService.createTemplateFromFile('response-table-template')
tableTemplate.rows = rows;
html += tableTemplate.evaluate().getContent();

var blob = Utilities.newBlob(html, MimeType.HTML, subject).getAs(MimeType.PDF); 

然后将blob其附加到电子邮件/传真。除我的问题外,所有其他方法都工作正常:有没有办法避免破坏页面上的表行?可能是将html转换为pdf的又一种尊重break-inside属性的方法吗?还是将html blob转换为pdf时Apps Script会尊重的html / css解决方案?

亚伦·杜尼根·阿特利

通过实验,我发现Utilities.newBlob(html, MimeType.HTML, subject).getAs(MimeType.PDF) 尊重page-break-inside: avoid;(不是break-inside: avoid;),但只有当它应用于整个表。因此,我不得不将每个表行都视为一个单独的表。此版本的html模板解决了该问题:

<table style="border-collapse: collapse; border: 1px solid black; table-layout: fixed; width: 100%;">
  <tbody>
    <tr>
      <th style="border: 1px solid black; width: 30%; padding: 5px;">Question</th>
      <th style="border: 1px solid black; width: 70%; padding: 5px;">Response</th>
    </tr>
  </tbody>
</table>
<? rows.forEach(function(row){ ?>
  <table style="page-break-inside: avoid; border-collapse: collapse; border: 1px solid black; table-layout: fixed; width: 100%;">
    <tbody>
      <tr>
        <td style="width: 30%; border: 1px solid black; padding: 5px; line-height: 1.5rem;"> <?= row.question ?> </td>
        <td style="width: 70%; avoid; border: 1px solid black; padding: 5px; line-height: 1.5rem;"> <?!= row.answer ?> </td>
      </tr>
    </tbody>  
  </table>
<? }) ?>

作为记录,先转换为Google Doc然后转换为pdf并不能解决问题。看来Google文档还允许表格单元格在页面之间进行拆分。但是,将数据写入Google表格然后以pdf格式下载确实可以防止跨页破坏单元格;表格似乎会自动处理此问题,因此这是另一种解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将单元格转换为矩阵

来自分类Dev

将单元格转换为数字

来自分类Dev

将单元格转换为数组

来自分类Dev

使用Omnipage或Abbyy Finereader将PDF转换为Excel时,是否有办法阻止它拆分单个单元格?

来自分类Dev

Matlab:将单元格的单元格数组转换为单个单元格数组

来自分类Dev

将表单元格数据转换为单独的.js文件中的内部链接

来自分类Dev

从文本文件matlab读取时将单元格转换为双精度值

来自分类Dev

从文本文件matlab读取时将单元格转换为双精度值

来自分类Dev

每当使用VBA选择Excel时,将转换为语音单元格的值

来自分类Dev

如何将Gridview单元格值转换为另一页上相应的文本框值?

来自分类Dev

有什么方法可以将Excel单元格值转换为html格式?

来自分类Dev

如何将Powerpoint表格单元格中的格式化文本转换为HTML

来自分类Dev

如何将Excel单元格转换为HTML文件?

来自分类Dev

将HTML colspan和rowspan转换为“空”单元格

来自分类Dev

Matlab:将单元格转换为可读格式

来自分类Dev

将datagridview单元格强制转换为float

来自分类Dev

将DataGridView单元格值转换为DateTime

来自分类Dev

Matlab:将字符串转换为单元格

来自分类Dev

将空格转换为表格单元格

来自分类Dev

将Matlab结构数组转换为单元格数组

来自分类Dev

用替换将单元格转换为公式

来自分类Dev

如何将单元格对象转换为数组

来自分类Dev

Excel VBA。将单元格列表转换为范围

来自分类Dev

将Excel单元格转换为时间

来自分类Dev

将单元格的每个单词转换为新行

来自分类Dev

将单元格中的多个值转换为列

来自分类Dev

Excel将XML单元格转换为列

来自分类Dev

将列表转换为Excel中的单个单元格

来自分类Dev

将Matlab结构数组转换为单元格数组

Related 相关文章

  1. 1

    将单元格转换为矩阵

  2. 2

    将单元格转换为数字

  3. 3

    将单元格转换为数组

  4. 4

    使用Omnipage或Abbyy Finereader将PDF转换为Excel时,是否有办法阻止它拆分单个单元格?

  5. 5

    Matlab:将单元格的单元格数组转换为单个单元格数组

  6. 6

    将表单元格数据转换为单独的.js文件中的内部链接

  7. 7

    从文本文件matlab读取时将单元格转换为双精度值

  8. 8

    从文本文件matlab读取时将单元格转换为双精度值

  9. 9

    每当使用VBA选择Excel时,将转换为语音单元格的值

  10. 10

    如何将Gridview单元格值转换为另一页上相应的文本框值?

  11. 11

    有什么方法可以将Excel单元格值转换为html格式?

  12. 12

    如何将Powerpoint表格单元格中的格式化文本转换为HTML

  13. 13

    如何将Excel单元格转换为HTML文件?

  14. 14

    将HTML colspan和rowspan转换为“空”单元格

  15. 15

    Matlab:将单元格转换为可读格式

  16. 16

    将datagridview单元格强制转换为float

  17. 17

    将DataGridView单元格值转换为DateTime

  18. 18

    Matlab:将字符串转换为单元格

  19. 19

    将空格转换为表格单元格

  20. 20

    将Matlab结构数组转换为单元格数组

  21. 21

    用替换将单元格转换为公式

  22. 22

    如何将单元格对象转换为数组

  23. 23

    Excel VBA。将单元格列表转换为范围

  24. 24

    将Excel单元格转换为时间

  25. 25

    将单元格的每个单词转换为新行

  26. 26

    将单元格中的多个值转换为列

  27. 27

    Excel将XML单元格转换为列

  28. 28

    将列表转换为Excel中的单个单元格

  29. 29

    将Matlab结构数组转换为单元格数组

热门标签

归档