Here is my Dual PDF viewer hardcoded in ASObjC.
Could be running directly in Script Editor, its very fast
use framework "Foundation"
use framework "AppKit"
use framework "Quartz"
use scripting additions
property arguments : missing value
property errorDescription : false
on run
-- Set the PDF document on the left side.
set thePdfDoc1 to POSIX path of (path to desktop) & "KS_Cocoa_Alerts.pdf"
-- Set the PDF document on the right side.
set thePdfDoc2 to POSIX path of (path to desktop) & "KS_Cocoa_Alerts.pdf"
-- Set the arguments
set arguments to {title:"Dual PDF Viewer", pdfLeft:thePdfDoc1, pdfRight:thePdfDoc2}
-- display dialog "The main thread is: " & (my NSThread's isMainThread() as boolean)
if not my NSThread's isMainThread() as boolean then
my performSelectorOnMainThread:"performSplitView:" withObject:arguments waitUntilDone:true
else
my performSplitView:arguments
end if
-- Error handler for performSelectorOnMainThread:withObject:waitUntilDone:
if errorDescription is not false then
log errorDescription
end if
end run
on performSplitView:arguments
try
set {theWidth, theHeight} to {1200, 800}
set thePDFViewLeft to createPDFView(arguments's pdfLeft, 0, 0, theWidth / 2, theHeight)
set thePDFViewRight to createPDFView(arguments's pdfRight, 0, 0, theWidth / 2, theHeight)
set theSplitView to createSplitView(0, 0, theWidth, theHeight)
theSplitView's setDividerStyle:(current application's NSSplitViewDividerStyleThin)
theSplitView's setVertical:true
theSplitView's addSubview:thePDFViewLeft
theSplitView's addSubview:thePDFViewRight
set theWindow to createWindowWithRect(0, 0, theWidth, theHeight)
theWindow's setTitle:(arguments's title)
theWindow's setContentView:theSplitView
set theWindowController to createWindowController(theWindow)
theWindowController's showWindow:me
theWindowController's |window|'s |center|()
theWindowController's |window|'s makeKeyAndOrderFront:me
-- Error handler for performSelectorOnMainThread:withObject:waitUntilDone:
on error error_message number error_number
set errorDescription to error_message & " with error number " & error_number
end try
end performSplitView:
on createPDFView(thePath, xMin, yMin, xLen, yLen)
set theURL to current application's |NSURL|'s fileURLWithPath:thePath
set pdfDoc to current application's PDFDocument's alloc()'s initWithURL:theURL
set pdfViewSize to current application's NSMakeRect(xMin, yMin, xLen, yLen)
set thePDFView to current application's PDFView's alloc()'s initWithFrame:pdfViewSize
thePDFView's setDocument:pdfDoc
return thePDFView
end createPDFView
on createSplitView(xMin, yMin, xLen, yLen)
set splitViewSize to current application's NSMakeRect(xMin, yMin, xLen, yLen)
set theSplitView to current application's NSSplitView's alloc()'s initWithFrame:splitViewSize
return theSplitView
end createSplitView
on createWindowWithRect(xMin, yMin, xLen, yLen)
set windowSize to current application's NSMakeRect(xMin, yMin, xLen, yLen)
set winStyle to (current application's NSWindowStyleMaskTitled as integer) + (current application's NSWindowStyleMaskClosable as integer)
set theWindow to current application's NSWindow's alloc()'s initWithContentRect:windowSize styleMask:winStyle backing:2 defer:true
return theWindow
end createWindowWithRect
on createWindowController(theWindow)
set theWindowController to current application's NSWindowController's alloc()'s initWithWindow:theWindow
return theWindowController
end createWindowController