2009-12-08 46 views
1

我正在嘗試讓4x6卡片在Cocoa(故事卡片)中打印。我有一個視圖,我把數據放在哪裏,但是當我打印它時,打印方向正確,只能在8x11的紙上打印(換句話說,它在信紙尺寸紙上打印的方向正確,原點位於左上角 - 左下角您在橫向模式下保持輸出)。當一張4x5卡通過打印機時,它看起來只是打印輸出的最後一位(換句話說,如果4x6卡疊加在字母紙上,看起來在中間右側居中,如果看着紙在橫向模式下,打印機似乎是對字母進行成像,而不是4x6,它必須與我如何配置NSPrintInfo對象有關......但對於我來說,我無法想象它, ?已經試過在幾個不同的打印機,我一直得到了相同的結果在OSX(可可)中打印4「x6」卡片

任何想法

,做印刷的代碼如下所示:

- (IBAction)printCard:(id)sender 
{ 
    int i; 
    for (i=0; i<[storyCards count]; i++) 
    { 
    StoryCard * card = [storyCards objectAtIndex:i]; 
    NSPrintInfo *printInfo = [[NSPrintInfo sharedPrintInfo] copy]; 

    [printInfo setPaperSize:NSMakeSize(4*72, 6*72)]; 
    [printInfo setOrientation:NSLandscapeOrientation]; 
    [printInfo setHorizontalPagination:NSFitPagination]; 
    [printInfo setVerticalPagination:NSFitPagination]; 
    [printInfo setLeftMargin:10.0]; 
    [printInfo setRightMargin:10.0]; 
    [printInfo setTopMargin:10.0]; 
    [printInfo setBottomMargin:10.0]; 

    StoryCardView *view = [[StoryCardView alloc] initWithFrame:[printInfo imageablePageBounds]]; 

    [view setStoryCard:card]; 

    NSPrintOperation *printOp = [NSPrintOperation printOperationWithView:view printInfo:printInfo]; 

    [printOp runOperation]; 

    [view release]; 

    } 
} 
+1

大的艾倫·希爾加斯書呆子牧場的名氣發佈了一個應用程序,而在8x11紙(可用源代碼)生成較小的頁回來。不是您的具體問題的答案,但也許會激發您:http://weblog.bignerdranch.com/?p=23 – 2009-12-09 00:33:10

+1

不要忘記發佈這些NSPrintInfo對象。此外,你應該使用'NSUInteger'作爲數組索引(或者,更好的是,直接在數組上循環)。 – 2009-12-09 01:16:09

+0

如果您在打印機中放入8.5 x 11的紙張,那麼會出現這種情況。你需要更徹底地解釋你的實際問題。 – 2009-12-12 00:48:08

回答

0

問題與在OSX中使用通用postscript驅動程序打印機有關。一旦我切換到打印機的特定驅動程序,自定義紙張大小就像一個魅力。

感謝所有的幫助...

--Robert

+0

嗨,我很苦惱與同類問題,請給予更多的細節,如何切換打印機的打印機驅動程序。 – AmitSri 2013-08-10 06:28:38