Почему картинки сохраняются в формате html
Vladimir_S Участник Группа: Extensions Откуда: Санкт-Петербург Зарегистрирован: 19-09-2008 Сообщений: 4493 UA: 3.0
Re: Картинки сохраняются в формате .html
Ламерюга пишет
Да,такое бывает иногда.Сам замечал.Особенно при сохранении драг’н’дропом.Файл сохраняется с расширением
.*php Ну и что.Меняем на jpg,и все в порядке.Можно применить не поштучное,а пакетное переименование.
А вот мне пока не удалось воспроизвести глюк. Вроде всё путем, в том числе при скачивании с fotki.yandex.ru.
«Большинство философов до сих пор придерживается весьма нефилософских воззрений на многие вопросы философии» Эдгар Аллан По
Работа с картинками Word, сохранение в HTML
Когда я решал задачу по выгрузке word-файла в HTML, столкнулся с определенными проблемами. В этой статье я описываю способы их решения.
Картинки в Word
Картинки документа хранятся в коллекциях Shapes (свободные картинки) и InlineShapes (встроенные в текст картинки). Разницы между ними я не понял. Картинка из одного формата может быть переведена в другой. Видимо, тем или иным объектом картинка считается в зависимости от привязки к тексту.
Концепция не очень удачна, т.к. и те и другие объекты имеют одинаковые типы картинок, в результате чего обработчики приходится дублировать.
Картинки бывают встроенными в документ и связанными с файлом. Для связанных картинок известно полное и краткое имя файла, с которым они связаны.
Проблемы сохранения в HTML
При сохранении в HTML неизвестно, в какой файл сохранится картинка. Если она прилинкована, то имя файла будет соответствовать имени исходного файла картинки. А вот если она связана, то узнать, в какой файл будет сохранена картинка нельзя.
Особую путаницу вносят рамки, сноски и прочие InlineShapes . Иногда две картинки сохраняются, как одна, а одна картинка, если она повторяется, сохраняется в один файл.
Я воспользовался такой тактикой – перед сохранением удаляю все InlineShapes , не являющиеся картинками. В этом случае можно просто пронумеровать по порядку картинку и получить с большой степенью достоверности имя файла в формате имяфайла_001.jpg, где имяфайла – имя сохраняемого файла, 001 – порядковый номер картинки, jpg – расширение. Для InlineShapes расширение может быть и gif .
Если картинка встроена в документ, то в HTML формате она получается такого же размера, как отображается в W o rd. Если требуется получить картинку исходного размера, можно выполнить еще одно сохранение документа, при этом удалив все лишние картинки, а нужные картинки увеличив до 100% от оригинала:
For Each Shape In EmbeddedImages
EmbeddedCount = EmbeddedCount + 1
Set NewShape = Shape.ConvertToShape
NewShape.ScaleHeight 1, True
NewShape.ScaleWidth 1, True
Для прилинкованные картинок, даже если они большие, не сохраняются эскизы. Используются оригиналы картинок, просто для них указывается нужный размер ширины и высоты в теге IMG. В результате для прилинкованных картинок эскизы получаются большими и долго грузятся, даже если картинка уменьшена.
Единственный вариант решения проблемы – установить в истину свойство Shape.LinkFormat.SavePictureWithDocument. Но у InlineShapes при таком свойстве также проявляется глюк с восстановлением исходного размера картинки.
Проблемы обработки картинок
Если для InlineS hap e назначить гиперссылку, то она почему-то удаляется из документа и пересоздается по новому, уже с оригинальным размером картинки. Столкнулся с неприятным моментом – после назначения гиперссылки у меня в документе появились картинки большого размера на месте обычных. Посмотрел отладчиком – после добавления объекта объект Shape перестает существовать, причины непонятны:
Set NewHyperLink = Document.Hyperlinks.Add(Shape, NewHyperLinkAddress, Target:=»_blank»)
Сохранения Word-документа в HTML
Для сохранения в HTML нужно использовать примерно такой каркас.
Сначала нужно создать объект Word :
Set Word = CreateObject(«Word.Application»)
Затем нужно загрузить в Word doc -файл:
Set Document = Word.Documents.Open(FileName:=FileName, ConfirmConversions _
:=False, ReadOnly:=True, AddToRecentFiles:=False, PasswordDocument:=»», _
PasswordTemplate:=»», Revert:=False, WritePasswordDocument:=»», _
WritePasswordTemplate:=»», Format:=wdOpenFormatAuto, XMLTransform:=»»)
Нужно установить опции сохранения документа:
.OrganizeInFolder = False ‘Не создавать папку для картинок, размещать файлы в одной папке с htm-файлом
Затем можно вызывать запись документа в HTM-файл:
Document.SaveAs FileName:=DstFileName, FileFormat:= _
wdFormatFilteredHTML, LockComments:=False, Password:=»», AddToRecentFiles _
:=True, WritePassword:=»», ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=True, SaveFormsData:=False, _
Формат фильтрованного HTML – наиболее сжатый HTML-формат, из HTML удаляются все лишние данные, остаются только те, что нужны для отображения страницы.
Затем нужно очистить память от всех созданных OLE-объектов, самый простой способ – перебрать процессы, содержащие в командной строке определенные подстроки, указывающие, что это OLE-объект автоматизации Word :
Set Locator = CreateObject(«WbemScripting.SWbemLocator»)
Set Services = Locator.ConnectServer(«.»)
Set Items = Services.ExecQuery(«SELECT * FROM Win32_Process WHERE NAME LIKE ‘%WINWORD.EXE%'»)
For Each Item In Items
If InStr(1, UCase(Item.CommandLine), UCase(«/Automation -Embedding»)) <> 0 Then
Пример кода по конвертации из Word в HTM
Выкладываю полный пример кода по конвертации. Особое внимание уделено конвертации картинок.
Sub ConvertDoc2HTMFile(FileName, Optional Word = 0)
‘Конвертирует один DOC файл в HTM-файл
If Word = 0 Then
Set Word = CreateObject(«Word.Application»)
Set fs = CreateObject(«Scripting.FileSystemObject»)
Set File = fs.GetFile(FileName)
FilePath = Left(File.Path, Len(File.Path) — Len(File.Name) — 1)
FileNamePart = Replace(FileShortName, «.doc», «»)
FileNamePart = Replace(FileNamePart, «.docx», «»)
DstFileName = Replace(FileName, «.doc», «.htm»)
DstFileName = Replace(DstFileName, «.docx», «.htm»)
If FileName = DstFileName Then
Exit Sub ‘Защита от перезаписи файла
Set Document = Word.Documents.Open(FileName:=FileName, ConfirmConversions _
:=False, ReadOnly:=True, AddToRecentFiles:=False, PasswordDocument:=»», _
PasswordTemplate:=»», Revert:=False, WritePasswordDocument:=»», _
WritePasswordTemplate:=»», Format:=wdOpenFormatAuto, XMLTransform:=»»)
Почему фото сохраняется в формате html, а мне надо jpg, как это исправить?
в виндовс есть инструмент «ножницы», я его даже вывела вниз на панель. Открываешь картинку, выделяешь нужный фрагмент изображения на экране, вырезаешь, сохраняешь. Даже быстрей, чем скриншот потом обрезать.
пробу включить во вкладке Вид проводника включить Расширения имён файла и вместо расширения .html изменить на .jpg .
Денис .Мастер (1261) 1 год назад
Как это сделать?
Влад Сергеев Искусственный Интеллект (140758) Денис ., в проводники найди вкладку Вид . поставь галку Расширения имён файла, после ПКМ по файлу и в открывшемся меню нажми Переименовать, там уж меняй расширения, нажми Enter, согласись с переименованием .
Баг при сохранении макета в формате HTML
Добрый день!
Может кто сталкивался:
При сохранении макета в HTML вручную через [Файл]-[Сохранить как], картинка с макета сохраняется нормально. А программно через [Записать] сохраняется пустая.
Как с этим бороться?
По теме из базы знаний
- Подключаемые печатные формы с .DOCX макетом без Word’а
- Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)
- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
2. ArchLord42 83 19.06.19 05:57 Сейчас в теме
Никак, при сохранить как рядом сохраняется и папка с картинками, а при программном этого не происходит.
Единственный способ поменять пути к картинкам после сохранения, хотя вроде если выбрать хьмл5 картинки будут в base64 сохранены в самом хтмл
3. tank41 19.06.19 09:21 Сейчас в теме
(2) При программном и папка создается и файл с картинкой. Но пустой.
При записи в HTML5, картинка на странице тоже пустая.
4. ArchLord42 83 19.06.19 16:04 Сейчас в теме
А можете выложить хтмл код, на какой нить pastbin и скинуть сюда ссыль?
5. starik-2005 2895 19.06.19 16:07 Сейчас в теме
Мы в древности в mht сохраняли. Там и картинка, и все остальное в одном файле.
6. starik-2005 2895 19.06.19 16:13 Сейчас в теме
Ща индустрия предлагает делать это так: https://tools.ietf.org/html/rfc2397
7. tank41 19.06.19 16:22 Сейчас в теме
Давайте начну издалека.
На макете только ШК («1С: Печать штрихкодов»). Пляски с HTML нужны были, чтобы легко и просто сохранить ШК картинкой.
8. starik-2005 2895 19.06.19 21:36 Сейчас в теме
Пляски с HTML нужны были, чтобы легко и просто сохранить ШК картинкой.
Так Вам только ШК нужен? Сохраните его картинкой сразу — там у табличной части есть картинки, которые в виде соответствующего объекта, который можно засунуть в двоичные данные на сервере и передать на клиент.
9. tank41 20.06.19 11:18 Сейчас в теме
там у табличной части есть картинки, которые в виде соответствующего объекта, который можно засунуть в двоичные данные на сервере и передать на клиент.
можете пояснить как?
11. starik-2005 2895 20.06.19 12:21 Сейчас в теме
(9) видимо проблема в том, что у Вас какая-то старая 1С и какое-то древнее представление о ШК. Современные решения от 1С используют нативную компоненту (из общего макета), с помощью которой происходит генерация картинки ШК и далее замена шаблона картинки в печатной форме на сгенерированную компонентой. Т.к. у Вас там какой-то несуразный Activ-X, который устарел еще до того, как был создан, вёрд развернувшейся к миру мордой лица мелкомягкой компании и не желает эту древнюю хрень знать. Мелокософт — молодцы, Вы — не совсем.
10. tank41 20.06.19 11:33 Сейчас в теме
Вообще, вся проблема началась с того, что надо было вставить ШК в Word.
Word не давал встроить в него ни «1C.V8.Печать штрих-кодов», ни Ocvita Barcode. Выдавал ошибку. (в приложении)
Ок, буду сохранять как картинку и вставлять ее. Но тут случилась проблема с html.
