2014-05-13 99 views
0

我正在嘗試創建一個包含文本(NSString)和圖像(JPG)的RTFD文件。我還沒有找到解釋這個過程的簡單例子。如果我的應用程序有一些文本和一些JPG圖像,並且我想創建一個包含這兩個項目的可編輯文檔,RTFD似乎是輸出的最佳選項(我想保留圖像的質量)。以編程方式創建RTFD

如果有人能提供一個簡單的例子來展示如何做文本和圖像,這將是有益的。只要圖像質量得到保留,我也可以開展RTF。這適用於Mac OS應用程序。

我一直在試圖關注Attributed String Programming Guide,但我不清楚如何輸出我的NSAttributedString並獲得創建的包。其次,我如何將圖像引用轉換爲RTF文件,而不是它們需要的包。

+0

你檢查[文本編輯示例代碼(https://developer.apple.com/library/mac/samplecode/TextEdit/Introduction/Intro.html )? TextEdit.app可以創建帶有附件的富文本文檔。 –

+0

你是指TextEdit應用程序?如果是這樣,我意識到這可以做我想做的事情,但我想以編程方式做,以便我的應用程序可以創建相當於打開TextEdit,鍵入文本並插入圖像,而無需用戶在TextEdit中執行任何操作。 –

+0

是的,我正在談論TextEdit應用程序。這是完整的源代碼可用作示例代碼。如果您正在尋找如何使用RTFD文件的示例,那麼從TextEdit源代碼開始是合理的。 –

回答

1

很老的問題,但也許該解決方案幫助別人......

的RTFD格式不描述文件,但AA文件包中(這實際上是通過在Mac/iOS的UI修改爲一個目錄對用戶來說顯示爲單個文件)。

不過幸運的是NSFileWrapper能夠創造這樣RTFD束:

NSAttributedString* attrString = ...some attributed string with images ...; 
NSDictionary*  documentAttributes = @{ 
              NSDocumentTypeDocumentAttribute: NSRTFDTextDocumentType 
              }; 
NSError*   error = nil; 
NSFileWrapper*  fileWrapper = [attrString fileWrapperFromRange:NSMakeRange(0, attrString.length) 
              documentAttributes:documentAttributes 
                 error:&error]; 

NSString*   documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString*   filePath = [documentsDirectory stringByAppendingPathComponent:@"example.rtfd"]; 
NSLog(@"Writing rtfd doc to: %@", filePath); 

[NSFileManager.defaultManager removeItemAtPath:filePath error:&error]; 
BOOL result = [fileWrapper writeToURL:[NSURL fileURLWithPath:filePath] 
           options:NSFileWrapperWritingAtomic 
        originalContentsURL:nil 
           error:&error]; 

完成!

由於RTFD幾乎僅限於Mac/iOS格式,因此創建包含圖像的RTF文件可能更有趣。

不幸的是,Apple的RTF實現(NSDocumentTypeDocumentAttribute: NSRTFTextDocumentType)不支持圖像。

見我回答另一個問題來解決這個:https://stackoverflow.com/a/29181130/2778898