敬礼、
は、私たちは、プリンタに送信する前に、手動でPDFデータを回転させることができますね。
以下は実際にテストされていない(申し訳ありませんが実際にはテストされていない)コードですが、これは参考になると思います。 "QuartzCore/QuartzCore.h"がインポートされていることを確認してください。
- (NSData *) prepareForPrinting:(NSData *) data
{
NSData *result = nil;
CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)data);
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider);
CGPDFPageRef page = CGPDFDocumentGetPage(document, 1);
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
if (pageRect.size.width > pageRect.size.height)
{
GLuint w = pageRect.size.width;
GLuint h = pageRect.size.height;
pageRect.size.width = h;
pageRect.size.height = w;
CFMutableDataRef mutableData = CFDataCreateMutable(NULL, 0);
CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData(mutableData);
CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &pageRect, NULL);
int numPages = CGPDFDocumentGetNumberOfPages(document);
if (numPages > 0)
{
for (int i = 0; i < numPages; i++)
{
page = CGPDFDocumentGetPage(document, i + 1);
CGPDFContextBeginPage(pdfContext, NULL);
CGContextRotateCTM(pdfContext, M_PI_2);
CGContextTranslateCTM(pdfContext, 0, -pageRect.size.width);
CGContextDrawPDFPage(pdfContext, page);
CGPDFContextEndPage(pdfContext);
}
}
else
{
NSLog(@"Invalid PDF");
}
CGContextRelease(pdfContext);
result = [NSData dataWithData:(NSData *)mutableData];
CGDataConsumerRelease(dataConsumer);
CFRelease(mutableData);
}
else
{
result = data;
}
CGDataProviderRelease(dataProvider);
CGPDFDocumentRelease(document);
return result;
}
私は別のプリンタで印刷をテストしました。 _Laser_の代わりに_InkJet_プリンタの1つを使用すると、それはちょうどチャームのように機能します!残念ながら私はAirPrinterを持っていないので、私は実際にテストすることはできません。誰もこの問題を知っていますか? –