mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-05 17:37:51 +08:00
166 lines
3.9 KiB
C#
166 lines
3.9 KiB
C#
using CPF.Mac.CoreFoundation;
|
|
using CPF.Mac.Foundation;
|
|
using CPF.Mac.ObjCRuntime;
|
|
using System;
|
|
|
|
namespace CPF.Mac.CoreGraphics
|
|
{
|
|
public class CGPDFInfo : CGPDFPageInfo
|
|
{
|
|
private static IntPtr kCGPDFContextTitle;
|
|
|
|
private static IntPtr kCGPDFContextAuthor;
|
|
|
|
private static IntPtr kCGPDFContextSubject;
|
|
|
|
private static IntPtr kCGPDFContextKeywords;
|
|
|
|
private static IntPtr kCGPDFContextCreator;
|
|
|
|
private static IntPtr kCGPDFContextOwnerPassword;
|
|
|
|
private static IntPtr kCGPDFContextUserPassword;
|
|
|
|
private static IntPtr kCGPDFContextEncryptionKeyLength;
|
|
|
|
private static IntPtr kCGPDFContextAllowsPrinting;
|
|
|
|
private static IntPtr kCGPDFContextAllowsCopying;
|
|
|
|
public string Title
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string Author
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string Subject
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string[] Keywords
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string Creator
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string OwnerPassword
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string UserPassword
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int? EncryptionKeyLength
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public bool? AllowsPrinting
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public bool? AllowsCopying
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
static CGPDFInfo()
|
|
{
|
|
IntPtr handle = Dlfcn.dlopen("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics", 0);
|
|
try
|
|
{
|
|
kCGPDFContextTitle = Dlfcn.GetIntPtr(handle, "kCGPDFContextTitle");
|
|
kCGPDFContextAuthor = Dlfcn.GetIntPtr(handle, "kCGPDFContextAuthor");
|
|
kCGPDFContextSubject = Dlfcn.GetIntPtr(handle, "kCGPDFContextSubject");
|
|
kCGPDFContextKeywords = Dlfcn.GetIntPtr(handle, "kCGPDFContextKeywords");
|
|
kCGPDFContextCreator = Dlfcn.GetIntPtr(handle, "kCGPDFContextCreator");
|
|
kCGPDFContextOwnerPassword = Dlfcn.GetIntPtr(handle, "kCGPDFContextOwnerPassword");
|
|
kCGPDFContextUserPassword = Dlfcn.GetIntPtr(handle, "kCGPDFContextUserPassword");
|
|
kCGPDFContextEncryptionKeyLength = Dlfcn.GetIntPtr(handle, "kCGPDFContextEncryptionKeyLength");
|
|
kCGPDFContextAllowsPrinting = Dlfcn.GetIntPtr(handle, "kCGPDFContextAllowsPrinting");
|
|
kCGPDFContextAllowsCopying = Dlfcn.GetIntPtr(handle, "kCGPDFContextAllowsCopying");
|
|
}
|
|
finally
|
|
{
|
|
Dlfcn.dlclose(handle);
|
|
}
|
|
}
|
|
|
|
internal override NSMutableDictionary ToDictionary()
|
|
{
|
|
NSMutableDictionary nSMutableDictionary = base.ToDictionary();
|
|
if (Title != null)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)Title, kCGPDFContextTitle);
|
|
}
|
|
if (Author != null)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)Author, kCGPDFContextAuthor);
|
|
}
|
|
if (Subject != null)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)Subject, kCGPDFContextSubject);
|
|
}
|
|
if (Keywords != null && Keywords.Length != 0)
|
|
{
|
|
if (Keywords.Length == 1)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)Keywords[0], kCGPDFContextKeywords);
|
|
}
|
|
else
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject(NSArray.FromStrings(Keywords), kCGPDFContextKeywords);
|
|
}
|
|
}
|
|
if (Creator != null)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)Creator, kCGPDFContextCreator);
|
|
}
|
|
if (OwnerPassword != null)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)OwnerPassword, kCGPDFContextOwnerPassword);
|
|
}
|
|
if (UserPassword != null)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject((NSString)UserPassword, kCGPDFContextUserPassword);
|
|
}
|
|
if (EncryptionKeyLength.HasValue)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject(NSNumber.FromInt32(EncryptionKeyLength.Value), kCGPDFContextEncryptionKeyLength);
|
|
}
|
|
if (AllowsPrinting.HasValue && !AllowsPrinting.Value)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject(CFBoolean.False.Handle, kCGPDFContextAllowsPrinting);
|
|
}
|
|
if (AllowsCopying.HasValue && !AllowsCopying.Value)
|
|
{
|
|
nSMutableDictionary.LowlevelSetObject(CFBoolean.False.Handle, kCGPDFContextAllowsCopying);
|
|
}
|
|
return nSMutableDictionary;
|
|
}
|
|
}
|
|
}
|