1

Bonjour Spipu,

Tout d'abord, bravo et merci (on ne le dira jamais assez...)

j'ai un pb avec une sortie html2pdf en chinois :
Pas de retour a la ligne sur certaine TD (a css identique, d'autres TD passent bien) et la cellule prend la dimension du texte sur une seule ligne.
(Pour chaque chaque td : style="width:XXmm;")

si je met du texte latin pas de pb...

Est ce qu'il y aurait un moyen de forcer le retour a la ligne ?

Le texte est une variable issue d'une BDD donc difficile (pour moi) de prévoir le nombre de ligne et "d'éclater" en ligne...

Thanks for your support..

2

normalement, il va à la ligne si il y a des espaces. Si c'est un seul grand mot, il ne peut pas.
Ancien pseudo : lolo

3

Ok.. Merci pour la rapidité de la réponse..

oui, a priori, il n'y a aucun probleme avec les autres langues (pas testé coréen et japonais).

Après moult tests, cela viendrait du contenu, certaines phrases passent mais d'autre non...

bon.. je poursuis mes tests et vous tiendrait au courant...

J'en profite pour poser la question du japonais et du corréen, j'avais trouvé des infos sur le chinois, les modification du fichier police PHP etc, mais je n'ai pas trouvé pour le corréen et japonais... Est ce qu'il y a une doc quelque part ? (pas vu sur wiki)

Merci

4

C'est la meme chose pour les autres langues asiatiques, il faut juste une police qui inclue les caracteres.

Spipu, je sais pas si tu as deja vu du chinois (ou japonais) mais il y a rarement des espaces entre les mots smile
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5

ah ben ca vient de là smile pas d'espace => pas de coupure
Ancien pseudo : lolo

6

non... serieusement... bien sur qu'il y a des espaces... une ponctuation aussi...

7

De la ponctuation, oui, des espaces non


Premier truc que j'ai trouvé en chinois via yahoo.cn :
“司法强拆”拟取代“行政强拆”
不得采取暴力、胁迫及断水断电等非法方式迫使被征收人搬迁
被征收人在法定期限内不申请行政复议或者不提起行政诉讼,又不履行补偿决定的,由作出房屋征收决定的市、县级人民政府依法申请人民法院强制执行。
任何单位和个人不得采取暴力、胁迫以及违反规定中断供水、供热、供气、供电和道路通行等非法方式迫使被征收人搬迁。禁止建设单位参与搬迁活动。
【条文摘录】
【法制办说明】
按照现行条例的规定,政府既可以责成有关部门强制拆迁,也可以申请法院强制拆迁。据住房和城乡建设部统计,近几年来,行政强制拆迁的比例平均为0.2%左右,强制拆迁过程中出现的恶性事件虽然是极少数,但必须高度重视,切实采取有效措施,杜绝此类事件发生。
对此,二次征求意见稿规定由政府申请法院强制执行,取消了行政强制拆迁。这样规定,有利于加强对基层政府征收补偿活动的制约,有利于减少在房屋征收与补偿中的矛盾。
【专家解读】 沈岿(北大法学院教授):实施司法拆迁,至少在理论和程序上,法院要对行政决定的征收有一个审查过程,如果不是公共项目和明显违法的,在理论上可以不支持行政机关的决定,这是有利于被征收人的。

On retrouve des elements de ponctuation "。", ",", ")", ":"
Sauf que ce ne sont pas les meme que la ponctuation occidentale, et qu'ils inclue l'espace dans le caractere. Et a vrai dire je doute que html2pdf sache gerer ces caracetres de ponctuation, et les utiliser comme points pour aller a la ligne.
Et bien sur aucun espace (caractere 32/0x20) dans le dit texte. L'organisation du chinois (et c'est pareil pour le japonais, meme si on peux en mettre) n'a pas besoin d'espace entre les mots/termes contrairement au langues occidentales pour rester compréhensible.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

8

ok... bon, on va pas ouvrir un debat sur les langues, mais il y a des espaces en chinois et japonais tout de même smile mais c'est vrai que certains "mots" en contiennent plusieurs sans espaces, mais entre ces "groupe de mots" il y a des espaces...

bref pour clore le débat sur les langues asiatiques et revenir au pb voila un copié collé du code source :

<td><h3>平均草绿色色调。金李子香气优雅,白桑热带色彩的混合与支持。味道独特,令人印象深刻的邀请白桑,柑橘类水果和清爽的酸度。柔软和丰富的身体。葡萄酒的出色表现。</h3>

donc comme l'exemple que donne Godzil on voit bien les espaces qui serait sufisant pour pour un retour a la ligne... d'autre part cela fonctionne avec d'autres td, rigoureusement identiques donc c'est le contenu qui deconne...

Je suis en train d'essayer avec une autre police, celle que j'utilisais était peut être trop "allégée" ...

9

Il n'y a pas d'espace, c'est les caracteres de ponctuation qui force l'espacement. Il faudrait que le soft prenne en compte ces caracters qui sont DIFFERENT de ceux qu'on utilise dans les langues occidentales
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

10

je ne suis pas d'accord sur les espaces, je parle pas chinois mais un peu de japonais, et je ne connais pas cette regle... mais bon... sur le code source ils apparaissent bien (les espaces), et sont donc interprétés par le server comme tels, non ?

D'autre part, j'insiste sur le fait que cela marche avec certain contenu et pas avec d'autres (td/css identique)

11

copie colle le texte que tu as posté plus haut dans un editeur de texte (genre notepad) et promene ton curseur avec droite et gauche tu verras bien, il n'y as PAS de caractere espace dans le texte. Le seul espacement est forcé par les caractere ponctuation, et donc la police, mais par par le "code source".


Je prend du japonais:
平成23年度税制改正大綱が16日にまとまり、予算編成作業は最終盤に入った。政府は同日、予算編成の基本方針を閣議決定し、新規国債発行の44兆円以下への抑制や、国債費を除いた歳出の大枠を71兆円以内にする財政健全化目標を堅持した。財務省は「埋蔵金」など税外収入の確保や歳出削減で最終調整を続けるが、24日の予算案決定まで綱渡りの状態だ。(産経新聞)
C'est la MEME chose que pour le chinois dans cet exemple, les espace qui semble etre présente ne sont du qu'aux caracteres de ponctuation. Si on les enleve :
平成23年度税制改正大綱が16日にまとまり予算編成作業は最終盤に入った政府は同日予算編成の基本方針を閣議決定し新規国債発行の44兆円以下への抑制や国債費を除いた歳出の大枠を71兆円以内にする財政健全化目標を堅持した財務省は埋蔵金など税外収入の確保や歳出削減で最終調整を続けるが24日の予算案決定まで綱渡りの状態だ産経新聞


(encore que la, les parentheses contrairement au chinoi que j'ai posté tout a l'heure semble etre les meme qu'en occident)

Prenon un article wikipedia au hazard :

http://ja.wikipedia.org/wiki/%E3%81%91%E3%81%84%E3%81%8A%E3%82%93!

cherche des espaces avec la fonction recherche de ton navigateur, et regarde ou il sont placé. Pas dans le texte, uniquement dans du romaji, ou entre des caracteres de ponctuations qui ne sont pas "natif" au japonais ou alor dans des cas particuliers :

平沢 唯(ひらさわ ゆい)

les kanji sont séparé pour une raison simple, expliquer leur signification, et les kana pour suivre le découpage des kanji.

Tu ne comprend peut-etre pas ce que j'essaye de faire comprendre, c'est que oui on peux mettre des espaces, mais c'est tres rare, et que ce qui donne l'impression qu'il y ai des espace avec la ponctuation est, contrairement aux langues occidental, le caracteres de la fonte en lui meme qui met l'espacement, et non celui qui tape le texte. (ie tu met en francais une espace avant et apres un ":", juste apres pour un point ou une virgule mais pas avant etc... La le caractere te le met automatiquement, mais il n'y as PAS d'espace codé dans le texte. Et HTML2PDF ne doit pas connaitre les ponctuation asiatiques donc il ne les utilise pas pour couper les lignes. il les prends pour la meme chose qu'une lettre d'un mot, donc HTML2PDF se trouve avec un tres long mot et est incapable de savoir ou aller a la ligne.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

12

Ok... et sur le texte qui respectait le retour a la ligne, il y avait des espaces qui par coincidence respectait la taille de la cellule...

Bien... Merci Godzil !

Reste a trouver une parade... peut être qu'un str-replace en amont ?

13

si html2pdf (ou je sais pas quelle partie) gere la ponctuation "occidentale", il faut lui ajouter la liste des caracteres utilisé en chinois et japonais pour les utiliser comme point de coupure de ligne
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

14

Je pense que c'est un peu plus complexe que ça, parce qu'il peut y avoir une longue phrase sans ponctuation, non ? C'est permis de changer de ligne "n'importe où" dans ce cas ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

15

Bon...

$nom = str_replace ("。","。 ",$nom);

ne fonctionne pas... j'ai essayé d'échapper le caractère chinois... non plus...

16

Zerosquare (./14) :
Je pense que c'est un peu plus complexe que ça, parce qu'il peut y avoir une longue phrase sans ponctuation, non ? C'est permis de changer de ligne "n'importe où" dans ce cas ?

Je sais pas pour le chinois mais j'aurais tendance a dire que ça doit passer
mais je ne suis pas linguiste ni assez bon en japonais pour en etre sur
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

17

En japonais (horizontal) les parentheses virgules et points peuvent etre utilises en 2bytes coding ()、。:;” ” ou 1byte coding (),.:;" ".
A noter aussi que les virgules sont facultatives et il n'y a pas de regles pour definir ou placer ou ne pas placer, mais leur absence peut parfois creer des ambiguites et leur placement hasardeux induire un sens different.

Sinon pour repondre a Godzil et autres, l'espace " " non seulement existe mais il a en plus des utiilsations bien definies dans l'ecriture verticale et horizontale. Ca reste bien sur different semantiquement que dans les langues latines : http://ja.wikipedia.org/wiki/%E5%92%8C%E5%AD%97%E9%96%93%E9%9A%94

La meilleure solution en ce qui concerne les langues asiatiques serait de considerer chaque caractere comme un mot et de sauter de ligne indifferemment comme dans tous les traitements de texte. Par contre je sais pas si c'est simple a implementer.
L'utilisateur peut aussi trouver une regle arbitraire pour imposer des espace et creer des retours de lignes ou carrement inserer des retours de ligne, mais c'est vraiment pas tres elegant ni professionnel.
avatar
納 豆パワー!
I becamed a natto!!!1!one!

18

bon je vais faire mon squalyl mais en coréen les espaces sont indispensables, comme dans les langues latines, sinon ça veut juste rien dire grin

축구 국가대표팀의 ‘캡틴’ 박지성(29·맨체스터 유나이티드 )의 2011아시안컵 이후 축구 대표팀 은퇴 결심 보도가 축구계에 거센 파장을 일으키고 있다.

박지성은 지난 6월 남아공 월드컵 당시에도 “이번 남아공 월드컵이 개인적으로는 마지막 월드컵 무대가 될 것 같다” “대표팀 은퇴 시기를 생각하면 2011년 카타르 아시안컵 무대가 될 것 같다”고 밝힌 바 있다.

19

iwannabeanatto (./17) :
En japonais (horizontal) les parentheses virgules et points peuvent etre utilises en 2bytes coding ()、。:;” ” ou 1byte coding (),.:;" ".

De ce que je vois le "2 bytes" a l'air d'etre le plus utilisé, en tout cas avec de l'UTF8/UTF16. Je ne sais pas avec le (S)JIS et autres codages
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

20

Bon, et bien après m'être arraché les cheveux un moment, voila une petite fonction qui permet d'inserer un espace entre chaque caractère sans altérer la compréhension (constaté avec google translate, peut être une perte de 5cheeky :

function mb_wordwrap($string, $width=75, $break="\n", $cut = false) {
if (!$cut) {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.',}\b#U';
} else {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#';
}
$string_length = mb_strlen($string,'UTF-8');
$cut_length = ceil($string_length / $width);
$i = 1;
$return = '';
while ($i < $cut_length) {
preg_match($regexp, $string,$matches);
$new_string = $matches[0];
$return .= $new_string.$break;
$string = substr($string, strlen($new_string));
$i++;
}
return $return.$string;
}

(merci à Matt at newbiewebdevelopment dot idk)

21

désolé... yen manquait un bout :

function mb_wordwrap($string, $width=75, $break="\n", $cut = false) {
if (!$cut) {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.',}\b#U';
} else {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#';
}
$string_length = mb_strlen($string,'UTF-8');
$cut_length = ceil($string_length / $width);
$i = 1;
$return = '';
while ($i < $cut_length) {
preg_match($regexp, $string,$matches);
$new_string = $matches[0];
$return .= $new_string.$break;
$string = substr($string, strlen($new_string));
$i++;
}
return $return.$string;
}

22

décidément la fin ne passe pas... la voila :
while ($i < $cut_length) {
preg_match($regexp, $string,$matches);
$new_string = $matches[0];
$return .= $new_string.$break;
$string = substr($string, strlen($new_string));
$i++;
}
return $return.$string;
}

23

function mb_wordwrap($string, $width=75, $break="\n", $cut = false) {
if (!$cut) {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.',}\b#U';
} else {
$regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){'.$width.'}#';
}
$string_length = mb_strlen($string,'UTF-8');
$cut_length = ceil($string_length / $width);
$i = 1;
$return = '';
while ($i < $cut_length) {
preg_match($regexp, $string,$matches);
$new_string = $matches\[0\];
$return .= $new_string.$break;
$string = substr($string, strlen($new_string));
$i++;
}
return $return.$string;
}

24

PS : retirer les antislash a la ligne :

$new_string = $matches\[0\];

(@spipu : je ne sais pas pourquoi il a fallut que j'echappe les crochets pour que ça passe, mais ils apparaissent quand même... si tu peux virer les post qui sont mal passés... merci)

25

[0 ]est un code couleur. Pour que ça passe faut y mettre une espace ou un autre signe dedans comme [ 0 [b ] [/b ] ]

truc[0] (édite ou cite mon post)

26

Y'a pas d'espaces en chinois, sauf derrière les virgules et les points. Les IME utilisent la touche espace pour valider le caractère proposé, et non pour mettre un espace. Derrière la ponctuation, il est inséré automatiquement.
Bref comme liquid le dit, le mieux c'est de couper au pif. Ça choquera pas les chinois, c'est comme ça dans le journal.