2012-05-11 59 views
3
一個PDFContext

這是非常瑣碎通過繪製到PDF背景:寫PDF文本到iOS中

UIGraphicsBeginPDFContextToFile(pdfFile, CGRectZero, nil); 
UIGraphicsBeginPDFPageWithInfo(sheet.frame, nil);  
CGContextRef ctx = UIGraphicsGetCurrentContext(); 

CGRect text_rect = ... 
NSFont *font = ... 
NSString * str = @"foo"; 
[str drawInRect:text_rect withFont:font]; 

...draw to context... 

但是文字顯然是光柵化......反正是有實際PDF風格的文本添加到一個pdf文件?所以用戶可以選擇它,複製它等。可能通過核心圖形以外的庫?

+0

你是如何繪製文本?這是重要的一部分。根據API以及配置的方式,文本可能會或不會在PDF中被柵格化。 –

+0

更新了示例以準確顯示它。還有哪些其他API?我嘗試過[CALayer renderInContext]和其他一些...全部光柵化。什麼是不在的圖書館? – Ralphleon

+0

如果你檢查了pdf標準規範,你會發現你實際上需要在文件中回顯'Tj(ABC)'這樣的東西來使它顯示未經測試的文本。我不知道iOS的任何PDF創建庫。 – Eimantas

回答

1

這絕對有可能。 Here's a tutorial,它顯示瞭如何在iOS 5中生成並顯示帶有文本的PDF文檔。

當我下載並運行項目時,放大時文本看起來沒有被光柵化。當我打開生成的PDF在OS X預覽版中,我可以選擇並複製文本。

本示例使用Core Text將文本繪製到CGContext中。如果您想嘗試其他方法,應該很容易更改+[PDFRenderer drawText]

例如,我改變了它使用類似於你的代碼,它工作得很好:

CGRect text_rect = { 0, 100, 300, 50 }; 
UIFont *font = [UIFont systemFontOfSize:12]; 
NSString * str = @"Added foo bar"; 
[str drawInRect:text_rect withFont:font]; 
+0

也許是因爲我'使用自定義字體?今天檢查。 – Ralphleon

+0

我用ios 8.3至少發現的是,如果你在上下文中渲染一個也在屏幕上的視圖,它會產生一個非常漂亮的向量化PDF。但是,如果您渲染不在屏幕上的視圖,則會進行光柵化。這絕對是一些內部核心圖形故障。一些東西在管道中的某個點上柵格化。 –