通过laravel DomPdf在PDF创建期间更改希伯来字符的方向

时间:2017-10-16 13:25:33

标签: laravel pdf laravel-5.4 dompdf hebrew

我有一个严重的问题,

我希望在PDF创建后以RTL格式显示希伯来语单词,但它没有显示。它总是显示LTR。

我有一些英语和希伯来语的单词组合。

我在google上做了一些搜索,但没有运气。

我正在使用Laravel DomPdf.

我已检查过我的dompdf核心文件trainX = trainX.reshape(trainX.shape[0], trainX.shape[1],1) trainY = trainY.reshape(trainY.shape[0],) testX = testX.reshape(testX.shape[0], testX.shape[1], 1) model = Sequential() model.add(LSTM(100, return_sequences= True, input_shape=(trainX.shape[1],1) )) model.add(LSTM(100, return_sequences= False)) model.add(Dense(1, activation='linear')) model.compile(loss='mse', optimizer='adam') model.fit(trainX, trainY, epochs=500, shuffle=False, verbose=1) model.save('model_lstm.h5') model = load_model('model_lstm.h5') prediction = model.predict(testX, verbose=0) ,其值DOMPDF_UNICODE_ENABLED仍无法获得解决方案。

这是我的刀片文件

"DOMPDF_UNICODE_ENABLED" => true,

如果有人帮我摆脱这一点,那就太棒了。

2 个答案:

答案 0 :(得分:0)

Dompdf(最高为0.8.1)目前不支持RTL文本(see issue 1009)。有work around,但结果最多可以通过。

如果您有兴趣尝试一下,请修改通过在line 83添加以下代码呈现的文字:

if (strtolower($style->direction) === 'rtl') {
  preg_match_all('/./us', $text, $ar);
  $text = join('',array_reverse($ar[0]));
  // if there are numbers in the string so the next line reverse the number back treat also numbers with dot (decimal) and email
  $text = preg_replace_callback('/\d+-\d+|\d+|\d+\.\d+|\S+@\S+/', function (array $m) { return strrev($m[0]); }, $text);
}

答案 1 :(得分:0)

您可以使用支持rtl语言(例如波斯语和阿拉伯语)的软件包

https://github.com/barryvdh/laravel-snappy

为了更改方向,只需在将要转换为pdf的html标签中,使用dir =“ rtl”