微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在包含表格的反应中生成希伯来语 PDF?

如何解决如何在包含表格的反应中生成希伯来语 PDF?

我在整个互联网上搜索了几个小时,我需要一个支持希伯来语的 PDF 生成器!我也需要在 PDF 中有一个表格。 我试过 JSpdf,但我得到的文本垃圾翻转了 הלימ 而不是 מילה。 我使用 JSpdf 的 autoTable 来制作我的表格,但我没有设法在表格中加入希伯来语,甚至没有翻转(我得到了垃圾)。

我愿意接受任何建议,不仅是 JSpdf,我还需要任何有用的东西。

这是我的代码

David-normal.js:

import { jsPDF } from "jspdf"
var font = '<here comes a very long string of the fone>';
var callAddFont = function () {
  this.addFiletoVFS('David-normal.ttf',font);
  this.addFont('David-normal.ttf','David','normal');
};
jsPDF.API.events.push(['addFonts',callAddFont])

reportGenerator.js:

import jsPDF from "jspdf";
import "jspdf-autotable";
import "../components/David-normal.js";


// Date Fns is used to format the dates we receive
// from our API call
import { format } from "date-fns";

// define a generatePDF function that accepts a reports argument
const generatePDF = reports => {
  //initialize jsPDF
  const doc = new jsPDF();
  doc.addFont("David-normal.ttf","David","normal");
   doc.setFont("David"); // set font
   doc.setFontSize(12);




  // define the columns we want and their titles
  const tableColumn = [ "שם עובד","מספר פרויקט","תאריך דיוח","כניסה","יציאה","תיאור"];
  // define an empty array of rows
  const tableRows = [];

  // for each report pass all its data into an array
  reports.forEach(report => {
    const reportData = [
      report.worker_id,report.project_id,report.reporting_date,report.start_time,report.end_time,report.description,// called date-fns to format the date on the report
      format(new Date(report.reporting_date),"yyyy-MM-dd")
    ];
    // push each reports's info into a row
    tableRows.push(reportData);
  });
  // startY is basically margin-top

  doc.autoTable(tableColumn,tableRows,{ font: 'David',align: 'right',isSymmetricSwapping: true,isInputVisual: true,isOutputVisual: false });
  const date = Date().split(" ");
  // we use a date string to generate our filename.
  const dateStr = date[0] + date[1] + date[2] + date[3] + date[4];
  // reports title.
  let text = "דוח שעות:"
  doc.text(text,100,10,{align: 'right',isOutputVisual: false});
  // we define the name of our PDF file.
  doc.save(`report_${dateStr}.pdf`);
};

export default generatePDF;

等待您的帮助!谢谢!

解决方法

我以间接方式修复了代码,将样式添加到文本和自动表格中:

  doc.autoTable(tableColumn,tableRows,{styles: {font: "David",align: 'right',isSymmetricSwapping: true,isInputVisual: true,isOutputVisual: false}});
doc.text(text,100,10,{styles: {font: "David" }});

并做了一个反向函数来修复字母:

function fix(str){
   return str.split('').reverse().join('');
}

然后每当我知道有希伯来语时我就会调用它:

let text = fix("דוח שעות:");

不幸的是,我的解决方案也会翻转英文单词。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?