我正在iOS应用程序中实现打印。我在Mac上有一个打印代理应用程序,用于物理测试打印机,这是一台美国信件打印机。随iOS模拟器一起提供的打印机模拟器似乎也默认为US Letter。
有谁有关于如何测试其他默认纸张大小的建议?
谢谢!
发布于 2011-02-27 00:33:54
如果我正确理解了iOS打印特性--如果是,这是一个很大的-那么打印模拟器将根据您发送的内容的大小调整为US Letter或A4。所以,如果你发送一些字母大小的东西,它将选择A4,如果你发送一些美国字母大小的东西,它将选择美国字母。
然而,我发现在实际打印时,这并不总是有效的。为了做到这一点,我发现明确鼓励iOS选择A4纸张大小是一种不同的做法。这是在UIPrintInteractionController委托中的printInteractionController:choosePaper:方法中完成的(参见下面的代码)。如果有谁能更好地理解这一点,请发帖子。
更广泛地说(还有一点问题……)我采用的打印方法是将应用程序设置为US Letter或A4。当应用程序第一次启动时,它会检查是否为美国(通过测试[NSLocale currentLocale objectForKey: NSLocaleCountryCode]),如果是,则选择US Letter。否则就是A4。用户可以更改此设置。(我允许用户导出PDF,因此,比如说,如果她是英国用户,将PDF发送给美国朋友,她可以让它们看起来正确。)
要打印,我首先创建一个A4或US Letter PDF。Apple的示例代码将向您介绍美国字母大小。对于A4,您需要将其尺寸设置为大约595.4 x 841.7。(对于其他大小,请注意这些数字是以点为单位的,其中点密度为72dpi,即以英寸为单位并乘以72。)然后我在UIPrintInteractionController上使用setPrintingItem:,并提供了一个NSURL。
我发现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];
}
创建代码
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();
发布于 2013-06-30 02:11:55
这很简单!在Mac的打印机模拟器窗口中,你会发现一个“装入纸张”图标。因此,您可以为任何模拟打印机选择默认纸张大小。如果您的应用程序文档的打印格式不可用,您可以定义一个替代大小!
发布于 2011-05-06 17:38:40
根据苹果公司的documentation:
如果输出类型为UIPrintInfoOutputPhoto,则默认纸张大小为4x6、A6或其他标准大小,具体取决于区域设置;如果输出类型为UIPrintInfoOutputGeneral或UIPrintInfoOutputGrayscale,则默认纸张大小为US Letter (8 1/2 x 11英寸)、A4或其他标准大小,具体取决于区域设置。
因此,我猜如果您更改了区域设置,您应该能够测试A4的打印。
https://stackoverflow.com/questions/4755480
复制相似问题