iOS 4:我如何模拟A4打印机?

我正在iOS应用程序中实现打印。 我有一个打印代理应用程序在Mac上的物理testing打印机,这是一个美国信函打印机。 iOS模拟器附带的打印机模拟器也显示为默认为美国信函。

任何人都有关于如何testing其他默认纸张尺寸的build议?

谢谢!

如果我已经理解了iOS打印function – 这是一个很大的 – 那么打印模拟器将根据您发送的尺寸调整为US Letter或A4。 所以,如果您发送A4大小的东西,它将selectA4,如果您发送一些美国信纸大小,它会select美国信。

但是,我发现与实际印刷,这并不总是工作。 为了做到这一点,我发现明确鼓励iOSselectA4尺寸的纸张是完全不同的。 这是在UIPrintInteractionController委托中的printInteractionController:choosePaper:方法中完成的(参见下面的代码)。 如果有人更好地理解这一点,请张贴。

更一般的(并且有点问题)我采取的打印方法是为美国的Letter或A4设置应用程序。 当应用程序第一次启动它检查是否是美国(通过testing[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode]),如果是,select美国信。 否则它是A4。 用户可以改变这一点。 (我让用户导出PDF文件,比方说,如果她是英国用户向美国朋友发送PDF文件,她可以让他们看起来是正确的。)

要打印,我首先创build一个A4或美国信函PDF。 苹果的示例代码将引导您了解美国信纸尺寸。 对于A4,您需要将PDF的尺寸设置为大约595.4 x 841.7。 (对于其他尺寸的工作,请注意这些数字是以点为单位的,点密度是72dpi,即以英寸为单位并乘以72)。然后在UIPrintInteractionController上使用setPrintingItem:NSURL作为PDF。

我发现iOS打印文档相当具有挑战性,因此,处理A4 / US Letter等的更简单/更好/更可靠的方法并不是不可能的。 但是,希望我在这里写的一些帮助。

代表代码

// code in the UIPrintInteractionController delegate // The [Shared settings] object returns paperWidth and paperHeight depending on the app wide A4 or US Letter setting - (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray *)paperList { CGSize pageSize = CGSizeMake([[Settings shared] paperWidth], [[Settings shared] paperHeight]); return [UIPrintPaper bestPaperForPageSize:pageSize withPapersFromArray:paperList]; } 

创buildPDF代码

 UIGraphicsBeginPDFContextToFile(CGRectMake(0.0, 0.0, [[Settings shared] paperWidth], [[Settings shared] paperHeight]), nil); UIGraphicsBeginPDFPageWithInfo(CGRectMake(0.0, 0.0, [[Settings shared] paperWidth], [[Settings shared] paperHeight]), nil); // create the PDF UIGraphicsEndPDFContext(); 

这很容易! 在Mac上的打印机模拟器窗口中,您会看到“装入纸张”图标。 因此,您可以select任何模拟打印机的默认纸张尺寸。 如果您的应用程序文档的打印格式不可用,您可以定义一个替代大小!

根据苹果的文件 :

如果输出types是UIPrintInfoOutputPhoto,默认纸张尺寸是4×6或A6或其他标准尺寸,具体取决于语言环境; 如果输出types是UIPrintInfoOutputGeneral或UIPrintInfoOutputGrayscale,默认的纸张尺寸是US Letter(8 1/2 x 11英寸)或A4或其他标准尺寸,具体取决于区域设置。

所以,我猜如果你改变语言环境,你应该可以testing打印A4。