просмотрщик html idml

Я пытаюсь реализовать idml c# для html конвертер. Мне удалось создать один плоский html-файл, аналогичный тому, который создается при экспорте indesign.

Что я хотел бы сделать, так это создать html, который будет максимально похож на представление indesign, такое как средство просмотра html idml. Для этого мне нужно найти текст, который может поместиться в текстовый фрейм, я могу извлечь текстовое содержимое истории, но я не могу найти способ разделить это содержимое на фреймы/страницы.

Есть ли способ добиться этого?


person dp901    schedule 01.11.2012    source источник


Ответы (2)


Просто извлечь текст из истории недостаточно. Расположение текста контролируется TextFrames в Spread документах. Каждый TextFrame имеет атрибут ParentStory, показывающий, из какой истории он загружает текст, и у каждого фрейма есть размеры, определяющие макет. Для несвязных текстовых фреймов (т. е. один рассказ ‹> один фрейм) это все, что вам нужно.

Для связанных фреймов вам необходимо использовать атрибуты PreviousTextFrame и NextTextFrame для создания цепочки. В IDML нет ничего, что могло бы сказать вам, сколько текста помещается в каждый фрейм в цепочке цепочек, вам нужно сделать расчет самостоятельно на основе рассчитанных размеров текста (или методом проб и ошибок).

Вы можете найти развороты в основном файле designmap.xml:

<idPkg:Spread src="Spreads/Spread_udd.xml" />

И разворот будет содержать один или несколько узлов TextFrame:

<Spread Self="udd" ...>
    <TextFrame Self="uf7" ParentStory="ue5" PreviousTextFrame="n" NextTextFrame="n" ContentType="TextType">...</>
    ...
</Spread>

Что, в свою очередь, будет ссылаться на конкретную историю:

<Story Self="ue5" AppliedTOCStyle="n" TrackChanges="false" StoryTitle="$ID/" AppliedNamedGrid="n">...</>

(В этом примере кадры не связаны между собой, поэтому значения 'n'.

Все это содержится в документации по IDML, которую вы можете найти вместе с другими документами для разработчиков InDesign здесь: http://www.adobe.com/devnet/indesign/documentation.html

person Jude Fisher    schedule 05.11.2012
comment
Спасибо за ответ. Это именно то, что я сейчас пытаюсь сделать. Я просто подумал, что, возможно, существует предопределенный способ вычисления текста, который может поместиться во фрейме, о котором я не знал. - person dp901; 06.11.2012
comment
Нет, не то, что я знаю - вы можете найти какой-нибудь .js, чтобы помочь, но в основном это тот случай, когда вы создаете свой собственный. Удачи. - person Jude Fisher; 06.11.2012

Microsoft и Adobe предложили новый модуль для css под названием «Регионы», который позволяет вам выполнять поток текста в несколько контейнеров. Имейте в виду, что вы никогда не сможете создать html-страницу, которая выглядит точно так же, как документ Indesign.

http://www.w3.org/TR/css3-regions/

На данный момент его поддерживают только IE10 и webkit nightly: http://caniuse.com/#feat=css-regions

person ZippyV    schedule 01.01.2013
comment
Моя главная проблема заключалась в том, что не существует предопределенного способа вычисления текста, который может поместиться в текстовом фрейме. Я не думаю, что решение этой проблемы зависит от элемента html, который используется для отображения извлеченного текста. Я могу ошибаться, хотя я действительно не изучал использование регионов. Спасибо за ответ в любом случае - person dp901; 02.01.2013