【问题标题】:Determine rendered height in a PDF document for drawing dynamic-sized page footers, on macOS在 macOS 上确定 PDF 文档中的渲染高度以绘制动态大小的页脚
【发布时间】:2020-12-09 17:07:25
【问题描述】:

假设我将少量文本打印到 PDF 文档中,我想知道该文本实际使用了多少页面。

例如,如果我将一个短文本段落渲染到 PDF 文档中,我希望只了解该文本的内容高度,而不是整个 A4(字母)页面的内容高度。

背景

我需要将较长的 HTML 页面呈现为使用较小页面大小的 PDF 文档。结果是内容被渲染成几个 PDF 页面。我目前为此使用NSPrintOperation

挑战在于我还需要在每个页面中呈现页脚页面。为此,我需要动态确定该页脚的高度,以便我可以相应地设置页面的底部边距,从而在呈现主要(正文)HTML 内容时使页脚区域保持空闲。完成后,我可以在单独的步骤中将页脚添加到每个页面(使用CGPDFDocument)。

我希望有一个更简单的方法,但似乎 macOS HTML 渲染器在打印多个页面时无法处理 html 页脚。

【问题讨论】:

    标签: macos printing pdf-generation cgpdfdocument


    【解决方案1】:

    我找到了一个解决方案,虽然这有点难看:

    1. 生成带有页脚内容的 PDF,使其呈现在页面顶部(边距设置为 0)。
    2. 将PDF读入NSPDFImageRepMBS
    3. 创建一个NSImageMBS 并使用addRepresentation: 将imageRep 添加到其中
    4. 现在图像具有原始 PDF 页面的大小,但仅包含页脚内容的可绘制区域 - 图像的其余部分清晰。
    5. 通过从下向上扫描图像的线条,寻找不清晰的线条,可以确定页脚内容的高度。
    6. 已知页脚高度后,我现在可以将主要内容呈现为 PDF,并设置底部边距以保持页脚区域空闲
    7. 最后,我创建了一个新的CGPDFDocument,遍历主要 PDF 的每一页,将这些主要页面连同页脚(偏移到页面的页脚区域)一起绘制到每一页中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多