2011-01-21 100 views
4

我正在iOS應用程序中實施打印。我在Mac上有一個打印代理應用程序,用於物理測試打印機,這是一臺美國信函打印機。隨iOS模擬器一起提供的打印機模擬器也會默認爲美國信函。iOS 4:我如何模擬A4打印機?

任何人都有關於如何測試其他默認紙張尺寸的建議?

謝謝!

回答

6

如果我已經理解了iOS打印功能 - 這是一個很大的如果 - 那麼打印模擬器將根據您發送的尺寸調整爲US Letter或A4。因此,如果您發送A4尺寸的東西,它會選擇A4,如果您發送一些US Letter尺寸的東西,它會選擇US Letter。

但是,我發現與實際打印,這並不總是工作。爲了達到這個目的,我發現它明確地鼓勵iOS選擇A4紙張尺寸。這是在UIPrintInteractionController委託中的printInteractionController:choosePaper:方法中完成的(參見下面的代碼)。如果有人瞭解這一點,請發佈。

更一般地說(並且問題有點......)我採用的打印方式是爲美國的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:使用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]; 
} 

創建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(); 
+0

請勿在加拿大選擇A4紙。 – 2011-03-09 00:51:27

0

按照蘋果的documentation

如果輸出類型是UIPrintInfoOutputPhoto,默認的紙張尺寸爲4x6的或A6或其他標準尺寸,具體取決於語言環境;如果輸出類型爲UIPrintInfoOutputGeneral或UIPrintInfoOutputGrayscale,則默認紙張尺寸爲US Letter(8 1/2 x 11英寸)或A4或其他標準尺寸,具體取決於區域設置。

所以,我猜如果你改變語言環境,你應該能夠測試A4的打印。

1

這很簡單!在Mac上的打印機模擬器窗口中,您會看到一個「裝入紙張」圖標。因此,您可以選擇任何模擬打印機的默認紙張尺寸。如果應用程序文檔的打印格式不可用,您可以定義一個替代大小!