Skip to content

Commit 4c1e864

Browse files
committed
Change the SDWebImageContextPDFPageNumber to use 0-indexed, which is less surprising
1 parent 2dae0f4 commit 4c1e864

File tree

2 files changed

+7
-13
lines changed

2 files changed

+7
-13
lines changed

SDWebImagePDFCoder/Classes/SDImagePDFCoder.m

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,13 @@ - (UIImage *)decodedImageWithData:(NSData *)data options:(SDImageCoderOptions *)
4242
return nil;
4343
}
4444

45-
NSUInteger pageNumber = 1;
45+
NSUInteger pageNumber = 0;
4646
CGSize imageSize = CGSizeZero;
4747
BOOL preserveAspectRatio = YES;
4848
// Parse args
4949
SDWebImageContext *context = options[SDImageCoderWebImageContext];
5050
if (context[SDWebImageContextPDFPageNumber]) {
51-
NSUInteger rawPageNumber = [context[SDWebImageContextPDFPageNumber] unsignedIntegerValue];
52-
if (rawPageNumber == 0) {
53-
// start with 1 index
54-
rawPageNumber = 1;
55-
}
56-
pageNumber = rawPageNumber;
51+
pageNumber = [context[SDWebImageContextPDFPageNumber] unsignedIntegerValue];
5752
}
5853
if (context[SDWebImageContextPDFImageSize]) {
5954
NSValue *sizeValue = context[SDWebImageContextPDFImageSize];
@@ -84,7 +79,6 @@ - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format o
8479
// Using Core Graphics to draw PDF but not PDFKit(iOS 11+/macOS 10.4+) to keep old firmware compatible
8580
- (UIImage *)sd_createPDFImageWithData:(nonnull NSData *)data pageNumber:(NSUInteger)pageNumber targetSize:(CGSize)targetSize preserveAspectRatio:(BOOL)preserveAspectRatio {
8681
NSParameterAssert(data);
87-
NSParameterAssert(pageNumber > 0);
8882
UIImage *image;
8983

9084
#if SD_MAC
@@ -93,8 +87,7 @@ - (UIImage *)sd_createPDFImageWithData:(nonnull NSData *)data pageNumber:(NSUInt
9387
if (!imageRep) {
9488
return nil;
9589
}
96-
// NSPDFImageRep page is 0 index...
97-
imageRep.currentPage = pageNumber - 1;
90+
imageRep.currentPage = pageNumber
9891
image = [[NSImage alloc] initWithSize:imageRep.size];
9992
[image addRepresentation:imageRep];
10093

@@ -110,7 +103,8 @@ - (UIImage *)sd_createPDFImageWithData:(nonnull NSData *)data pageNumber:(NSUInt
110103
return nil;
111104
}
112105

113-
CGPDFPageRef page = CGPDFDocumentGetPage(document, pageNumber);
106+
// `CGPDFDocumentGetPage` page number is 1-indexed.
107+
CGPDFPageRef page = CGPDFDocumentGetPage(document, pageNumber + 1);
114108
if (!page) {
115109
CGPDFDocumentRelease(document);
116110
return nil;

SDWebImagePDFCoder/Classes/SDWebImagePDFCoderDefine.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
NS_ASSUME_NONNULL_BEGIN
1111

1212
/**
13-
A unsigned interger raw value which specify the desired PDF image page number. Because PDF can contains mutiple pages. Attention the page number index is started with 1. (NSNumber)
14-
If you don't provide this value, or the value is out of [1,MAX], use 1 (the first page) instead.
13+
A unsigned interger raw value which specify the desired PDF image page number. Because PDF can contains mutiple pages. The page number index is started with 0. (NSNumber)
14+
If you don't provide this value, use 0 (the first page) instead.
1515
*/
1616
FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextPDFPageNumber;
1717

0 commit comments

Comments
 (0)