gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:53:35 25 4
gpt4 key购买 nike

我正在使用下面的代码将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com