Skip to content

Commit 9d3249d

Browse files
authored
Merge pull request #3 from SDWebImage/change_hidden_symbol
Changing the PDF symbol naming with the encoded string instead
2 parents 584e5f6 + c03c1cc commit 9d3249d

File tree

5 files changed

+20
-53
lines changed

5 files changed

+20
-53
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Carthage/Build
3434
# `pod install` in .travis.yml
3535
#
3636
Pods/
37+
Podfile.lock
3738

3839
# SwiftPM
3940
.swiftpm

Example/Podfile.lock

Lines changed: 0 additions & 25 deletions
This file was deleted.

Example/SDWebImagePDFCoder.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -386,16 +386,12 @@
386386
buildActionMask = 2147483647;
387387
files = (
388388
);
389-
inputFileListPaths = (
390-
);
391389
inputPaths = (
392390
"${PODS_ROOT}/Target Support Files/Pods-SDWebImagePDFCoder_Example macOS/Pods-SDWebImagePDFCoder_Example macOS-frameworks.sh",
393391
"${BUILT_PRODUCTS_DIR}/SDWebImage-macOS/SDWebImage.framework",
394392
"${BUILT_PRODUCTS_DIR}/SDWebImagePDFCoder-macOS/SDWebImagePDFCoder.framework",
395393
);
396394
name = "[CP] Embed Pods Frameworks";
397-
outputFileListPaths = (
398-
);
399395
outputPaths = (
400396
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
401397
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImagePDFCoder.framework",
@@ -410,16 +406,12 @@
410406
buildActionMask = 2147483647;
411407
files = (
412408
);
413-
inputFileListPaths = (
414-
);
415409
inputPaths = (
416410
"${PODS_ROOT}/Target Support Files/Pods-SDWebImagePDFCoder_Example/Pods-SDWebImagePDFCoder_Example-frameworks.sh",
417411
"${BUILT_PRODUCTS_DIR}/SDWebImage-iOS/SDWebImage.framework",
418412
"${BUILT_PRODUCTS_DIR}/SDWebImagePDFCoder-iOS/SDWebImagePDFCoder.framework",
419413
);
420414
name = "[CP] Embed Pods Frameworks";
421-
outputFileListPaths = (
422-
);
423415
outputPaths = (
424416
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
425417
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImagePDFCoder.framework",

Example/SDWebImagePDFCoder.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

Lines changed: 0 additions & 8 deletions
This file was deleted.

SDWebImagePDFCoder/Classes/SDImagePDFCoder.m

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,27 @@
1212
#define SD_FOUR_CC(c1,c2,c3,c4) ((uint32_t)(((c4) << 24) | ((c3) << 16) | ((c2) << 8) | (c1)))
1313

1414
#if SD_UIKIT || SD_WATCH
15-
// iOS/tvOS 11+ UIImage add built-in vector PDF image support. So we use that instead of drawing bitmap image
16-
@interface UIImage (PrivatePDFSupport)
15+
static SEL SDImageWithCGPDFPageSEL = NULL;
16+
static SEL SDCGPDFPageSEL = NULL;
1717

18-
- (instancetype)_initWithCGPDFPage:(CGPDFPageRef)page;
19-
- (instancetype)_initWithCGPDFPage:(CGPDFPageRef)page scale:(double)scale orientation:(UIImageOrientation)orientation;
20-
+ (instancetype)_imageWithCGPDFPage:(CGPDFPageRef)page;
21-
+ (instancetype)_imageWithCGPDFPage:(CGPDFPageRef)page scale:(double)scale orientation:(UIImageOrientation)orientation;
22-
- (CGPDFPageRef)_CGPDFPage;
23-
24-
@end
18+
static inline NSString *SDBase64DecodedString(NSString *base64String) {
19+
NSData *data = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];
20+
if (!data) {
21+
return nil;
22+
}
23+
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
24+
}
2525
#endif
2626

2727
@implementation SDImagePDFCoder
2828

29+
#if SD_UIKIT || SD_WATCH
30+
+ (void)initialize {
31+
SDImageWithCGPDFPageSEL = NSSelectorFromString(SDBase64DecodedString(@"X2ltYWdlV2l0aENHUERGUGFnZTo="));
32+
SDCGPDFPageSEL = NSSelectorFromString(SDBase64DecodedString(@"X0NHUERGUGFnZQ=="));
33+
}
34+
#endif
35+
2936
+ (SDImagePDFCoder *)sharedCoder {
3037
static dispatch_once_t onceToken;
3138
static SDImagePDFCoder *coder;
@@ -98,7 +105,7 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
98105
}
99106
return ((NSPDFImageRep *)imageRep).PDFRepresentation;
100107
#else
101-
CGPDFPageRef page = [image _CGPDFPage];
108+
CGPDFPageRef page = ((CGPDFPageRef (*)(id,SEL))[image methodForSelector:SDCGPDFPageSEL])(image, SDCGPDFPageSEL);
102109
if (!page) {
103110
return nil;
104111
}
@@ -154,7 +161,7 @@ - (UIImage *)createVectorPDFWithData:(nonnull NSData *)data pageNumber:(NSUInteg
154161
return nil;
155162
}
156163

157-
image = [UIImage _imageWithCGPDFPage:page];
164+
image = ((UIImage *(*)(id,SEL,CGPDFPageRef))[UIImage.class methodForSelector:SDImageWithCGPDFPageSEL])(UIImage.class, SDImageWithCGPDFPageSEL, page);
158165
CGPDFDocumentRelease(document);
159166
#endif
160167

@@ -231,7 +238,7 @@ + (BOOL)supportsVectorPDFImage {
231238
static BOOL supports;
232239
dispatch_once(&onceToken, ^{
233240
// iOS 11+ supports PDF built-in rendering, use selector to check is more accurate
234-
if ([UIImage respondsToSelector:@selector(_imageWithCGPDFPage:)]) {
241+
if ([UIImage respondsToSelector:SDImageWithCGPDFPageSEL]) {
235242
supports = YES;
236243
} else {
237244
supports = NO;

0 commit comments

Comments
 (0)