【问题标题】:PDF font sizes are off - HTML to PDF via UI/WKWebView and UIPrintPageRendererPDF 字体大小关闭 - 通过 UI/WKWebView 和 UIPrintPageRenderer 将 HTML 转换为 PDF
【发布时间】:2016-05-31 01:49:18
【问题描述】:

我需要在我的应用程序中创建美观且准确的 PDF。由于各种限制,我选择了 HTML 和自定义 UIPrintPageRenderer。到目前为止效果很好。

然而,由于我认为是缩放/转换问题,PDF 中生成的字体大小相差很大:

#rma {
  font-size: 54pt;
  /*font-size: 67.5px;*/
}
...
<div id="rma">RMA</div>

CSS 中的 54pt 导致 PDF 中的 57.60pt;通过改用 67.5px(想要 pt * 1.25 = px),我只能让它接近 54.40pt - 同时感觉像个畜生。

摆弄十分之一 px(或 em 或其他任何东西),字体大小可能会跳到 53.60pt,但永远不会恰好是 54pt。几乎所有字体大小都会发生这种情况,除了少数例外,例如 10px 导致正好 8pt。

-webkit-text-size-adjust: none;

<meta name="viewport" content="initial-scale=1.0" />

似乎没有任何效果,在 UI-、WKWebView 或 UIMarkupTextPrintFormatter 之间切换也没有。我尝试了其他解决方案,例如 brentnycum/BNHtmlPdfKit,效果相同。

我几乎没有想法。你能帮我吗?谢谢!

【问题讨论】:

    标签: html ios css pdf fonts


    【解决方案1】:

    我一直在努力解决 iOS 应用程序中的这个错误!

    经过实验,我将此作为 webkit 错误提交:https://bugs.webkit.org/show_bug.cgi?id=155789

    从 Safari 和 Chrome 打印时也会出现 PDF 字体大小问题,但 Firefox 不会。我也以与您相同的方式遇到了这个问题,试图找出为什么 iOS 从 UIPrintPageRenderer 制作 PDF 的字体大小很奇怪。

    我可以为您提供的最佳解决方法是明确地将&lt;body&gt; 宽度设置为精确的页面宽度。

    body {width: 595pt;}
    

    这使我能够在 12.01pt 处获得指定为 12pt 的字体大小 - 但它确实会因某些(看似)随机因素而异。祝你好运!

    【讨论】:

    • 看来我们有两个人,那么!感谢您的帮助 - 虽然它不能 100% 修复比例,但它非常接近。我在内部使用 mustache,因此应该仍然可以动态计算这些胡子;我现在使用 (width - 2*insetY),因为我正在计算所有可打印边框的插图。所以现在应该是 (595.2-15*2)pt。在您发表评论之前,我用负边距和相等的正填充来改变缩放因子(我认为这是这里的问题),但这似乎相当随机,并且以不同的比例改变了不同的字体大小。
    【解决方案2】:

    如果你可以使用 php,这应该可以解决问题

    $pdf->SetFont('helvetica', '', 10);

    【讨论】:

    • 恐怕这是不可能的 - 我使用 Mustache 进行预处理,但除此之外 php 在这里没有帮助,但谢谢。
    猜你喜欢
    • 2010-10-31
    • 2015-12-30
    • 2010-09-26
    • 1970-01-01
    • 2012-04-12
    • 2014-09-02
    • 2012-01-14
    • 2010-10-12
    • 2011-02-23
    相关资源
    最近更新 更多