html - iOS 在多列中将 HTML 绘制为 PDF

标签 html ios pdf

我正在使用下面的代码将 HTML 绘制成 PDF。当 HTML 呈现到设备时,我使用 css 列将 HTML 布局为两列,但当它呈现为 PDF 时,它仅在一列中。有没有办法可以将多列中的 HTML 呈现为 PDF?我猜 UIPrintPageRenderer 不支持列,但找不到任何东西来证实这一点。

我使用 css 列的原因是内容的长度可变,我希望它动态地溢出到下一列。

这是我的代码。 content 是一个包含 HTML 的 String。我将完全相同的字符串发送到 UIWebView.loadHTMLString(_:baseURL:),它呈现在两列中。

    let renderer = UIPrintPageRenderer()
    renderer.headerHeight = 36
    renderer.footerHeight = 36

    let htmlFormatter = UIMarkupTextPrintFormatter(markupText: content)
    htmlFormatter.startPage = 0
    htmlFormatter.contentInsets = UIEdgeInsetsMake(0, 36, 0, 36)
    renderer.addPrintFormatter(htmlFormatter, startingAtPageAtIndex: 0)

    let paperRect = CGRectMake(0, 0, 612, 792)
    let printableRect = CGRectInset(paperRect, 0, 0)
    renderer.setValue(NSValue.init(CGRect: paperRect), forKey: "paperRect")
    renderer.setValue(NSValue.init(CGRect: printableRect), forKey: "printableRect")

    let pdfData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, metadata)

    for i in 0 ..< renderer.numberOfPages() {
        UIGraphicsBeginPDFPage()
        let bounds = UIGraphicsGetPDFContextBounds()
        renderer.drawPageAtIndex(i, inRect: bounds)
    }
    UIGraphicsEndPDFContext()

在列中呈现的 CSS 适用于 UIWebView.loadHTMLString(_:baseURL:) 但不适用于 PDF,如下所示。我有 @media 位只显示在较小屏幕上的单个列中。但是我已经尝试删除它并添加 @media print 部分无济于事:它仍然只打印为 PDF 的单列。

    .content {
        -webkit-columns: auto 2; /* Chrome, Safari, Opera */
        -moz-columns: auto 2; /* Firefox */
        columns: auto 2;
    }
    @media screen and (max-width: 736px) {
        .content {
            width: 100%;
            -webkit-columns: auto 1; /* Chrome, Safari, Opera */
            -moz-columns: auto 1; /* Firefox */
            columns: auto 1;
        }
    }

最佳答案

尝试这样做而不是 css 列尝试使用 html 列并使用 css 设置列的样式。我认为 UIGraphics 只会抓取 HTML 结构。

<table>
  <tr>
     <td>YourStuffHere</td>
     <td>YourStuffHere</td>
  </tr>
 </table>

关于html - iOS 在多列中将 HTML 绘制为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979506/

相关文章:

html - 如何删除html中文本的第一行缩进

ios - SKProductsRequest 在 iOS 11 模拟器中不起作用

python - 在python中将png图像转换为一个pdf

ios - 为什么我的 Xcode 插件(如 clang 格式)在更新到新版本的 Xcode 后不再工作?

go - golang 中的类型不一致,不能使用 <Type> 作为 *Type

php - 给生成的 PDF 一个自定义标题

javascript - 触发 JQuery 事件后不会触发代码隐藏 OnClick 事件

HTML5 输入类型范围显示范围值

HTML/CSS 如何将图像图标添加到输入类型 ="button"?

ios - react native : Removing the bottom border from NavigatorIOS