我正在iOS应用中实现打印。我在Mac上有一个打印代理应用程序,用于物理测试打印机,这是一台美国Letter打印机。 iOS模拟器附带的打印机模拟器也默认为US Letter。
任何人都有关于如何测试其他默认纸张尺寸的建议吗?
谢谢!
答案 0 :(得分:6)
如果我已经正确理解了iOS打印功能 - 这是一个很大的 if - 那么打印模拟器将根据您发送的尺寸调整为US Letter或A4。因此,如果您发送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,您需要将PDF的尺寸设置为大约595.4 x 841.7。 (对于使用其他大小,请注意这些数字是以点为单位的,其中点密度为72dpi,即您以英寸为单位并乘以72.)然后我在UIPrintInteractionController上使用setPrintingItem:并为PDF提供NSURL。 / p>
我发现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];
}
创建PDF代码
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();
答案 1 :(得分:1)
这很容易!在Mac上的打印机模拟器窗口中,您将找到“加载纸张”图标。因此,您可以为任何模拟打印机选择默认纸张尺寸。如果您的应用程序文档的打印格式不可用,您可以定义备用大小!
答案 2 :(得分:0)
根据Apple的documentation:
如果输出类型为UIPrintInfoOutputPhoto,则默认纸张大小为4x6或A6或其他一些标准大小,具体取决于区域设置;如果输出类型为UIPrintInfoOutputGeneral或UIPrintInfoOutputGrayscale,则默认纸张尺寸为US Letter(8 1/2 x 11英寸)或A4或其他标准尺寸,具体取决于区域设置。
所以,我猜测如果你改变了语言环境,你应该可以测试A4的打印件。