Open PDF with Preview SW
- (IBAction)pdfBtnClick:(id)sender {
if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible])
{
// [[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
[[QLPreviewPanel sharedPreviewPanel] reloadData];
[[QLPreviewPanel sharedPreviewPanel] refreshCurrentPreviewItem];
}
else
{
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
[[QLPreviewPanel sharedPreviewPanel] refreshCurrentPreviewItem];
}
}
#pragma mark - QLPanel
- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel
{
return 1;
}
- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index
{
self.previewURL = [NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"/test.pdf"]];
return self.previewURL;
}
- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel;
{
// without this method then you can’t set a dataSource or delegate
return YES;
}
- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel
{
[panel setDelegate:self];
[panel setDataSource:self];
//once you’ve acceepted control then you can set up everything else
}
-(void)endPreviewPanelControl:(QLPreviewPanel *)panel
{
//do what you need to do here to close the panel – personally it’s an empty method for me…
}
Open PDF with Preview View
@implementation FilePreviewItem
- (instancetype)init
{
self = [super init];
return self;
}
- (NSURL *)previewItemURL
{
return self.myURL;
}
@end
@implementation PDFWindowController
- (void)windowDidLoad {
[super windowDidLoad];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
self.previewItem.myURL = self.url;
self.qlView = [[QLPreviewView alloc] initWithFrame:NSMakeRect(0, 0, 50, 50) style:QLPreviewViewStyleNormal];
self.qlView.translatesAutoresizingMaskIntoConstraints = NO;
self.qlView.shouldCloseWithWindow = YES;
self.qlView.previewItem = self.previewItem;
[self.qlView refreshPreviewItem];
// self.qlView.autostarts = YES;
[self addRightSubview:self.qlView];
}
- (void)addRightSubview:(NSView *)subView
{
[self.pdfView addSubview:subView positioned:NSWindowBelow relativeTo:self.pdfView];
[self.pdfView addConstraints:@[[NSLayoutConstraint constraintWithItem:subView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.pdfView
attribute:NSLayoutAttributeTop
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:subView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.pdfView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:subView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.pdfView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:subView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.pdfView
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0]]];
}
@end