2009-12-08 39 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