- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 GitHub repository允许用户将分页 PDF 从一些 HTML 加载到 WebView 并使用 NSPrintOperation
(具体来说,NSPrintSaveJob
和 showsPrintPanel
设置为 false)允许用户使用 save panel 将该 PDF 保存到他们 Mac 上的任何位置类似于默认的 NSSavePanel
。但是,我正在试验代码,我想将创建的 PDF 保存到没有保存面板的特定文件夹 (/Users/owlswipe/Downloads/
)。
我从 WebView(带有保存面板)保存 PDF 的代码目前是这样的:
let printOpts: [String : AnyObject] = [NSPrintJobDisposition:NSPrintSaveJob as AnyObject]
let printInfo: NSPrintInfo = NSPrintInfo(dictionary: printOpts)
printInfo.paperSize = NSMakeSize(595.22, 841.85)
let printOp: NSPrintOperation = NSPrintOperation(view: webView.mainFrame.frameView.documentView, printInfo: printInfo)
printOp.showsPrintPanel = false
printOp.showsProgressPanel = false
printOp.run()
我如何调整该代码以将 PDF 保存到预设文件夹而不是用户从保存面板选择的文件夹?
最佳答案
这段代码在 Swift 4/Cocoa 中为我工作以完成您想要的,但是其中还有更多代码,因为它将 WKWebView 的内容呈现为 8.5"x 11"的 PDF 页面。
因此对于您的应用程序,您的内容流/打印对象将进行适当的调整,但打印操作的配置将相同以获得您想要的“无对话”结果。
但是,要对其进行测试,您只需将字符串转储到 WebView 中并按原样使用代码。生成的文件出现在“用户/文档”目录的根目录中。
static func createPDF(htmlString: String, streamId: String = "someStream") {
let webView = WebView()
webView.mainFrame.loadHTMLString(htmlString, baseURL: nil)
let when = DispatchTime.now() + 1
DispatchQueue.main.asyncAfter(deadline: when) {
let directoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let directoryURLStr = directoryURL.absoluteString+"\(streamId).pdf"
let outputFilePath = URL(string: directoryURLStr)
let printOpts: [NSPrintInfo.AttributeKey : Any] = [
NSPrintInfo.AttributeKey.jobDisposition : NSPrintInfo.JobDisposition.save,
NSPrintInfo.AttributeKey.jobSavingURL : outputFilePath
]
let printInfo: NSPrintInfo = NSPrintInfo(dictionary: printOpts)
let baseMargin: CGFloat = 9.0; // .125"
printInfo.paperSize = NSMakeSize(612, 792); // 8.5" x 11/2"
printInfo.topMargin = baseMargin
printInfo.leftMargin = baseMargin
printInfo.rightMargin = baseMargin
printInfo.bottomMargin = baseMargin
let printOp: NSPrintOperation = NSPrintOperation(view: webView.mainFrame.frameView.documentView, printInfo: printInfo)
printOp.showsPrintPanel = false
printOp.showsProgressPanel = false
printOp.run()
Swift.print("Document complete: \(outputFilePath!.absoluteString)")
}
}
关于swift - NSPrintOperation——保存到没有提示的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077017/
使用此代码我可以打印 pdf 文件: let dictDocuments = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.d
我有以下代码行来打印 webView 内容。 let directoryURL = FileManager.default.urls(for: .documentDirectory, in: .use
我有一个 GitHub repository允许用户将分页 PDF 从一些 HTML 加载到 WebView 并使用 NSPrintOperation(具体来说,NSPrintSaveJob 和 sh
这个问题断断续续地困扰了我大约一年,我想也许其他人也会遇到类似的情况。 目标:在 Mac OS X 10.6-7 上,使用定义的分辨率和“高速”设置将多个 NSViews 打印到 EPSON Styl
我有一个应用程序,每当我调用 NSPrintOperation 时就会挂起。 我有一个 View ,它创建了一个单独的类(UIView),如下所示: PBPrintImage *printImage
我正在编写一个基于文档的 Mac OSX 应用程序,并且正在阅读有关使用 NSPrintOperation 的教程(默认情况下,立即在我的应用程序中按 print 会出现错误: printOpe
WebKit 1 公开了 WebFrameView,我可以在其中调用打印操作。 - (void)webView:(WebView *)sender printFrameView:(WebFrameVi
在我的应用程序开始打印之前,我必须进行一些处理,因此我在线程上执行此操作,一旦全部完成,我就会执行 dispatch_async(dispatch_get_main_queue(),^(){
在我的 Mac 应用程序中,我有一个显示一些 html 内容的 Web View 。我从该 web View 创建一个 PDFDocument,然后我想打印该文档。因此,我从文档创建一个 PDFVie
我试图找出是否可以在 Mac OS X 上打印而不显示系统打印面板,并且仍然以编程方式设置每个打印选项,甚至是第三方打印机驱动程序的打印选项。 我想使用NSPrintInfo . 这可能吗?是否所有
我正在尝试将 HTML 转换为 OS X 上的 PDF 文件。经过大量挖掘,我发现最好的方法是使用 NSPrintOperation。这是我用来将 HTML 字符串转换为 PDF 的代码: WebVi
我是一名优秀的程序员,十分优秀!