Как я могу использовать UIMarkupTextPrintFormatter для печати локального HTML с локальными изображениями? - PullRequest
5 голосов
/ 15 августа 2011

Вот строка, которую я хочу напечатать:

<p><img src="/Users/Max/Library/Application Support/iPhone Simulator/4.3/Applications/5FCCB847-52D9-48F4-A900-459C6A77A5A6/Documents/18/logo18_lg.jpg" alt="" height="72" /></p>

Это небольшой фрагмент большой HTML-страницы, сгенерированной в моем приложении, и я передаю ее на печать следующим образом:

UIMarkupTextPrintFormatter *html = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:printContents];

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

Ответы [ 4 ]

4 голосов
/ 17 июля 2017

SWIFT 3: Мне потребовалось некоторое время, чтобы понять это, но если вы используете префикс "file: //" перед вашим URL, тогда он будет работать.Вот так:

<p><img src="file:///Users/Max/Library/Application Support/iPhone Simulator/4.3/Applications/5FCCB847-52D9-48F4-A900-459C6A77A5A6/Documents/18/logo18_lg.jpg" alt="" height="72" /></p>

Надеюсь, это поможет

4 голосов
/ 05 января 2013

Можно печатать HTML с изображениями, используя UIWebView viewPrintFormatter вместо настройки UIMarkupTextPrintFormatter с содержимым HTML (которое будет печатать только текст). Вы можете загрузить свой контент из локального или удаленного местоположения, а затем начать печать в реализации метода webViewDidFinishLoad:.

Пример кода доступен от Apple (находится в справочнике UIWebView).

4 голосов
/ 16 августа 2011

Мне бы очень хотелось, чтобы мне противоречили, но я не думаю, что вы можете заставить подход, который вы рассматриваете, работать.Обходной путь - встроить изображение в сам HTML.Следующее иллюстрирует принцип (адаптировано из этого сообщения на форуме от 2005 года).Вы можете создать строку для представления вашего изображения на лету.Хорошее место для начала может быть этот stackoverflow вопрос .

- (void) buttonTapped;
{
    NSString* printContents = @"This is a work around <IMG SRC=\"data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUU lvONmOZtfzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQ ZXZeYGejmJlZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwv KOzrcd3iq9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7\">";

    UIMarkupTextPrintFormatter *html = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:printContents];
    UIPrintInteractionController* printController = [UIPrintInteractionController sharedPrintController];
    [printController setPrintFormatter:html];
    [printController presentAnimated:YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) {
        //
    }];

}
2 голосов
/ 16 августа 2011

Предложение выше работает отлично, вот что вам нужно сделать:

скачать и добавить это в свой проект: https://github.com/mikeho/QSUtilities

загрузить файл в NSData:

NSData *logo = [[NSData alloc] initWithContentsOfFile:filePath];

кодируйте, используя QSStrings, чтобы получить кодировку, не забудьте изменить тип файла, если это изображение / gif:

NSString *encodedJpg = [NSString stringWithFormat:@"data:image/jpg;base64,%@",[QSStrings encodeBase64WithData:logo]];

использовать строку encodedJpg в img src, как это сделал Мэтьювыше.

это решило огромную проблему для меня - спасибо!

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