iTextSharp LGPL/MPL(4.1.6)を使用して左から右のヘブライ語PDFをメモリに作成し、それをクライアントに返そうとしています。私はこの問題を抱えています:iTextSharpとASP.NETコアでRTLヘブライ語pdfを作成する
テキストは確かにヘブライ語ですが、右から左ではなく、テキストは逆です。
コード:このコードは、別のSO質問から取得され
public MemoryStream ExportGrowthPlan()
{
var doc = new Document(PageSize.A4);
var ms = new MemoryStream();
//Bind PDF writer to document and stream
PdfWriter.GetInstance(doc, ms);
//Open document for writing
doc.Open();
//Add a page
doc.NewPage();
//Path to the Arial file
var ARIALUNI_TFF = @"Export\Fonts\ARIAL.TTF";
//Create a base font object making sure to specify IDENTITY-H
var bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//Create a specific font object
var f = new Font(bf, 12);
//Use a table so that we can set the text direction
var T = new PdfPTable(1);
//Hide the table border
T.DefaultCell.BorderWidth = 0;
//Set RTL mode
T.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
//Add our text
T.AddCell(new Phrase("מה קורה", f));
//T.AddCell(new Phrase("What's up?", f));
//Add table to document
doc.Add(T);
//Close the PDF
doc.Close();
var newStream = base.CloneStream(ms);
return newStream;
}
protected MemoryStream CloneStream(MemoryStream memoryStream)
{
var ms = new MemoryStream(memoryStream.ToArray());
ms.Seek(0, SeekOrigin.Begin);
return ms;
}
、コントローラは、次にAngularJSに戻っのMemoryStreamとIActionResultを返すためにこのラインを呼び出しhere
:
return File(ms, "application/pdf", "somefile.pdf");
ご覧のとおり、文字は逆順で、方向はrtlではなくltrです。 私はMemoryStreamの代わりにFileStreamを使用しようとしましたが、結果は同じでした - rtlと敬称されたテキストはありませんでした。 私はこのコードをコンソールアプリケーションで試してみましたが、うまくいきます。何らかの理由で、私のプロジェクト(ASP.NET Core、データを返すだけのコントローラ、ビューではない)では、私はこの動作を取得します。
提案がありますか?
あなたが言及したバージョン(iTextSharp LGPL/MPL 4.1.6)がサポートされなくなりました。このバージョンは、お客様に販売する製品や製品には使用しないでください。よくある質問:[iText 2.1.7/iTextSharp 4.1.6以前は商用で利用できますか?](http://developers.itextpdf.com/question/versions-older-than-5) –
実際には、本当に良いタイポグラフィー、あなたはpdfCalligraphアドオンでiText 7が必要です。 iText 7以降、pdfCalligraphアドオンは、文字のUnicode値に基づいて言語を自動的に検出し、それに応じて実行方向を適応させます。 –
ありがとう、ブルーノ。当社の製品はウェブアプリケーションであり、販売されていないか、何かを販売しており、とにかく商業的ではありません。それは学校とその生徒のレポジトリです。私はこの種のアプリケーションのために大丈夫だと思います。 – ashilon