2011-06-20 4 views
8

Я хотел бы вставить вывод веб-страницы в блокнот (по сути, текстовый или html-захват экрана). Не нужно, чтобы это было «живым», это просто для справки.Вставка текста или html в .notebook

В идеале это будет выглядеть так же, как в веб-браузере. Я хочу, чтобы он был неоценимым, и я не хочу, чтобы передняя часть пыталась отформатировать его как очень ошибочное выражение Mathematica.

(EDIT, чтобы добавить: создать ячейку и сделать «Cell-> Convert To -> Текстовый дисплей "- достаточно хороший способ получить текст, отображаемый без переформатирования переднего конца. Мне интересно, является ли это« правильным »способом сделать это или если есть лучший способ, особенно если бы я хотел для форматирования html или графики тоже)

ответ

6

Если вы просто хотите текст (возможно, со стилями), выберите текст на веб-странице, создайте ячейку Text в Mathematica (cmd-7 на Mac), затем вставьте.

+0

Я не смог вычислить эквивалент «cmd-7» в Linux-версии Mathematica. То, что вы делаете, эквивалентно созданию ячейки, а затем делает «" Cell-> Convert To-> Text Display "a la edit в моем вопросе? –

+1

@ Daniel Under Windows (и, возможно, Linux) комбинация клавиш для создания нового текста Ячейка (и преобразование выбранной ячейки в текстовую ячейку) представляет собой Alt + 7. Вы можете увидеть эту комбинацию в меню «Формат -> Стиль». –

+0

@Alexey спасибо, Alt + 7 работает под Linux. –

7

Насколько я знаю, Mathematica не может отображать HTML-страницы. Используя Import, вы можете получать всевозможные вещи из сайтов и файлов на основе html. Один из вариантов, чтобы получить версию на основе текста сайта, как это:

Import["http://reference.wolfram.com/mathematica/guide/Mathematica.html", "Plaintext"] 
+0

Да, вы также можете получить более структурированные входы. Например, если на вашем сайте есть таблицы, вы можете получить его в списках с помощью «данных» или «FullData» вместо «Plaintext», если вы хотите, чтобы источник html использовал «Source» и т. Д. – enedene

+0

«... Mathematica не в состоянии для рендеринга HTML-страниц ... "вполне может оказаться ответом; Ну что ж. В моем случае я не могу «Импортировать» с веб-сайта, потому что меня интересует вывод вычисления (т. Е. Не существует статического URL для вывода, который я хочу). –

+0

Мне это нравится. 'Импорт [" http: //reference.wolfram.com/mathematica/guide/Mathematica. \ html "," Elements "]' дает список опций {"Данные", "FullData", "Гиперссылки", "Изображения "," ImageURLs ", \ " Plaintext "," Source "," Title "," XMLObject "}. Например, 'Импорт [" http: //reference.wolfram.com/mathematica/guide/Mathematica. \ html "," Images "]' – tomd

4

Одна возможность конвертировать веб-страницу в PDF, а затем Import этот PDF файл. Этот метод должен дать векторное изображение исходной страницы, которое похоже на то, что вы видите в браузере.

Другая возможность - сделать снимок экрана этой веб-страницы в браузере и вставить ее в Блокнот. Также можно сделать «снимок экрана» с более высоким разрешением, чем ваш монитор, распечатав веб-страницу на каком-то виртуальном принтере, который поддерживает преобразование в растровые форматы (LEADTOOLS ePrint - один из лучших).


EDIT

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

http://www.google.com/webpagethumbnail?r=2&f=2&s=300:585&query=wolfram&hl=ru&gl=us&c=11&d=http%3A%2F%2Fintegrals.wolfram.com%2F&b=1&j=google.vs.r&a=D57

Этот URL дает файл со следующим элементом:

["data: image/jpeg; base64,"]

(<data> здесь является аббревиатурой для кодированных данных изображения JPEG).

Мы можем извлечь data в Mathematica следующим образом:

data = Import[ 
    "http://www.google.com/webpagethumbnail?r=2&f=2&s=300:585&query=\ 
wolfram&hl=ru&gl=us&c=11&d=http%3A%2F%2Fintegrals.wolfram.com%2F&b=1&\ 
j=google.vs.r&a=D57"]; 

imageData = 
    StringReplace[ 
    data, __ ~~ "[\"data:image/jpeg;base64," ~~ x__ ~~ "\"]," ~~ __ :> 
    x] 

Я не знаю, как преобразовать imageData дальше, но это лишь вопрос зная JPEG спецификации формата ...

+0

Я не думал об этом. Было бы неплохо, если бы я мог просто скопировать его, но я попробую распечатать в PDF и импортировать это. –

+0

В зависимости от вашего браузера вы можете найти расширение, которое сделает снимок экрана страницы и поместите его в свой буфер обмена. Затем просто вставьте его в Mathematica. –

+1

Начиная с Mathematica 6, вы можете импортировать веб-ресурс JPEG с кодировкой base64 с помощью 'Import [url, {" Base64 "," JPEG "}]'. – WReach

2

В случае, если вы находитесь на OS X, ctrl + shift + cmd + 4 приводит к изменению курсора на крест с текущими координатами рядом с ним; выбор произвольной прямоугольной области на экране копирует ее в буфер обмена, из которой вы можете вставить ее в mma (в виде растровой графики).

Конечно, существуют способы сделать это в других операционных системах.

+2

Ввод пространства после ярлыка позволяет легко выбрать полное окно. Обратите внимание, что это только часть страницы, которая видна на экране. Существуют другие программы/расширения браузера, которые будут получать всю страницу, даже те части, которые прокручиваются за кадром. –

+0

@ Brett ah, я не знал про место, спасибо! – acl

6

Если вы на Windows (с .NET), то вы можете использовать функциональные возможности NETLINK Mathematica в сочетании с WebBrowser класса, чтобы захватить скриншот веб-страницы:

Needs["NETLink`"] 
LoadNETType["System.Drawing.Imaging.ImageFormat", AllowShortContext -> False] 
LoadNETType["System.Windows.Forms.WebBrowserReadyState", AllowShortContext -> False] 

Options[dotNetBrowserScreenshot] = {Width -> 1024, Height -> Automatic}; 
dotNetBrowserScreenshot[uri_, OptionsPattern[]] := 
    NETBlock @ Module[{browser, bitmap, tempFile, image, bounds} 
    , browser = NETNew["System.Windows.Forms.WebBrowser"] 
    ; [email protected] = OptionValue[Width] 
    ; [email protected] = False 
    ; [email protected][uri] 
    ; tempFile = [email protected][] 
    ; While[[email protected] =!= System`Windows`Forms`WebBrowserReadyState`Complete 
    , Pause[0.05] 
    ] 
    ; bounds = [email protected]@[email protected] 
    ; [email protected] = OptionValue[Height] /. Automatic -> [email protected] 
    ; bitmap = NETNew["System.Drawing.Bitmap", [email protected], [email protected]] 
    ; [email protected][bitmap, bounds] 
    ; [email protected][] 
    ; [email protected][tempFile, System`Drawing`Imaging`ImageFormat`Png] 
    ; [email protected][] 
    ; image = Import[tempFile, "PNG"] 
    ; DeleteFile[tempFile] 
    ; image 
    ] 

использование Пример:

sample screenshot

Полная веб-страница может быть записана с использованием Height -> Automatic (что является значением по умолчанию). Обратите внимание, что снимок экрана отображается при уменьшенном увеличении.

+0

Очень круто! +1. Можно ли захватить полную веб-страницу? –

+1

@Alexey Да, это так. Я обновил definiti на «dotNetBrowserScreenshot», чтобы автоматически определять высоту скриншота из границ документа HTML. Для действительно больших документов вы все же можете указать явные опции 'Width' и' Height' для обрезки документа. – WReach

Смежные вопросы