【问题标题】:Printing (Cocoa) WebView contents results in cut images打印 (Cocoa) WebView 内容会导致剪切图像
【发布时间】:2011-06-09 18:51:45
【问题描述】:

有什么方法可以避免WebView 中渲染的 HTML 元素在打印时被剪切?

这是我试图避免的示例:

我正在使用以下代码打印到 PDF:

// Copy the NSPrintInfo's sharedPrintInfo dictionary to start off with sensible defaults
NSDictionary* defaultValues = [[NSPrintInfo sharedPrintInfo] dictionary];
NSMutableDictionary* printInfoDictionary = [NSMutableDictionary dictionaryWithDictionary:defaultValues];

// Set the target destination for the file
[printInfoDictionary setObject:[savePanel URL] forKey:NSPrintJobSavingURL];

// Create the print NSPrintInfo instance and change a couple of values
NSPrintInfo* printInfo = [[[NSPrintInfo alloc] initWithDictionary: printInfoDictionary] autorelease];
[printInfo setJobDisposition:NSPrintSaveJob];
[printInfo setRightMargin:30.0];
[printInfo setLeftMargin:30.0];
[printInfo setTopMargin:70.0];
[printInfo setBottomMargin:70.0];
[printInfo setHorizontalPagination: NSFitPagination];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setVerticallyCentered:NO];
[printInfo setHorizontallyCentered:NO];

// Create the print operation and fire it up, hiding both print and progress panels
NSPrintOperation* printOperation = [NSPrintOperation printOperationWithView:view printInfo:printInfo];
[printOperation setShowsPrintPanel:NO];
[printOperation setShowsProgressPanel:NO];
[printOperation runOperation];

【问题讨论】:

  • 我记得你可以在 CSS 中做一些事情(至少在理论上,如果它在相关版本的 WebKit 中实现)会影响渲染器解决这个问题,但我不记得了足以写出完整的答案。对不起。
  • page-break-beforepage-break-insidepage-break-after,但遗憾的是,只有 Opera 支持 -inside,而 Safari 确实支持 -before-after,但它不支持值 @ 987654330@ 给他们。

标签: html cocoa image webview


【解决方案1】:

很可能是您用于呈现 webview 的 CSS 存在问题。只要确保您没有使用任何带有“位置:固定”的容器 div。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多