Программно генерировать PDF из HTML на iPhone - PullRequest
3 голосов
/ 15 октября 2010

Я ищу способ программно (в obj-c) создать файл PDF из локального файла HTML. Я динамически генерирую HTML из пользовательских данных, мне нужно создать PDF и отправить его пользователю (по электронной почте). У меня проблемы с созданием PDF-файла.

У меня есть код для создания PDF с использованием CGPDFContextCreateWithURL, но я пытаюсь нарисовать страницу с помощью кварца.

Я много раз искал на SO и в интернете, но безрезультатно.

Любая помощь очень ценится!

Ответы [ 6 ]

5 голосов
/ 22 февраля 2012

Чтобы сгенерировать pdf из HTML, вам нужно отобразить html в веб-представление, сделать снимки веб-представления и отобразить их в контексте изображения. Учебник может быть полезен:

http://www.ioslearner.com/convert-html-uiwebview-pdf-iphone-ipad/

1 голос
/ 19 марта 2012

Я написал небольшой фрагмент кода, который берет NSAttributedString из DTCoreText и преобразует его в файл PDF с разбивкой по страницам.Вы можете найти его в моем GitHub Repository .Он не будет отображать изображения или сложный HTML, но он должен служить для большинства случаев.Кроме того, если вы знакомы с CoreText, вы можете расширить мой установщик фрейма PDF для генерации этих элементов.

Итак, что он делает сейчас: передайте ему строку HTML, и она будет использовать DTCoreText длясгенерируйте NSAttributedString, затем отобразите это в PDF.Он возвращает папку, в которой был сохранен файл PDF, в папке «Документы» приложения.

0 голосов
/ 27 октября 2016

Я сделал это, следуя этому SO: https://stackoverflow.com/a/13342906/448717

Для того, чтобы сохранить те же пропорции содержимого, мне пришлось умножить размер WKWebView в 1,25 раза на размер printableRect, установленный для UIPrinterRenderer, в качестве экранаТочки отличаются от PostScript'ов ... Я думаю.

0 голосов
/ 15 октября 2010

Я никогда не пробовал этого, поэтому я понятия не имею, сработает ли это, но как насчет загрузки HTML-кода в UIWebView, а затем заставить представление отображаться в контексте PDF? Э.Г.

UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(...)];
[webview loadHTMLString:html baseURL:...];

Тогда:

- (void)webViewDidFinishLoad:(UIWebView *)webview {
    CGPDFContextRef pdfContext = CGPDFContextCreateWithURL(...);
    [webview.layer drawInContext:pdfContext];
    ...
}
0 голосов
/ 15 октября 2010

Я сам не пробовал, поэтому мне нечего предложить, но я должен представить, что на iPhone должен быть простой способ сделать это из-за модели изображения.Я бы заглянул глубже в документацию.

Относительно отказа от клиента, который зависит от вас, но, вероятно, есть несколько причин, по которым вы хотите оставить все локальным.Честно говоря, мне было бы совсем не приятно от того, кого я нанял, что он не может справиться с этой конкретной задачей.Так что подумайте долго и усердно об этом.О, даже если вы отодвинете веб-сервер, это плохой выбор.Я бы сделал еще один шаг назад и подумал, зачем вам сначала нужно что-то в HTML.

0 голосов
/ 15 октября 2010

Почему бы не использовать WebService, отправить на него страницу HTML и получить PDF-файл?

Таким образом, вы можете использовать iTextSharp и C #, и все готово примерно через 2 минуты.Плюс (если вы злой) вы можете хранить и просматривать все данные на вашем сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...