Я пытаюсь нарисовать изображение поверх существующего PDF (отображается на экране). Конечной целью было бы подписать PDF в любом месте.Рисованное изображение над PDF перевернуто
My sample code is here on Github
Код (основной) работает следующим образом:
- пользователь щелкает, где он хочет, чтобы сделать изображение на
- Редактирование PDF происходит и на экране появится окончательный PDF
Однако проблема в том, что мое изображение выглядит с ног на голову. Во время работы с PDF я узнал, что вам нужно перевернуть контекст для рендеринга, это может быть связано.
- (void)editPDFWithName:(NSString*)pdfName
{
// grab reference to bundled PDF
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)[[NSBundle mainBundle] URLForResource:pdfName withExtension:@"pdf"]);
const size_t numberOfPages = CGPDFDocumentGetNumberOfPages(pdf);
// Begin PDF context
NSMutableData* data = [NSMutableData data];
UIGraphicsBeginPDFContextToData(data, CGRectZero, nil);
// loop over PDF pages to render it
for(size_t page = 1; page <= numberOfPages; page++)
{
// Get the current page and page frame
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdf, page);
const CGRect pageFrame = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox);
UIGraphicsBeginPDFPageWithInfo(pageFrame, nil);
// Draw the page (flipped)
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
// Y axis is negative in order to render PDF (mandatory)
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -pageFrame.size.height);
CGContextDrawPDFPage(ctx, pdfPage);
CGContextRestoreGState(ctx);
if(page == [self getCurrentPage])
{
// 0.75f factor to convert pixel/points
CGContextDrawImage(ctx, CGRectMake(self.xTouchCoord*0.75f, self.yTouchCoord*0.75f, self.logo.size.width, self.logo.size.height), self.logo.CGImage);
}
}
UIGraphicsEndPDFContext();
CGPDFDocumentRelease(pdf);
pdf = nil;
// Save PDF
[self savePDF:data];
}
I tried multiple ways to flip image as suggested on this post
Но изображение еще переворачивается.
Одна вещь, которую я заметил, если я использую метод метод drawAtPoint
на изображение, оно появляется не переворачивается, но не появляется в указанной позиции, как есть смещение (see other post here)
Может кто-то пожалуйста, предложить какой-либо идея? Я ставлю на контекстные методы «Сохранить и Восстановить», но не могу заставить его работать.