从 richTextBox 到 .pdf 文件的文本 c#:希腊字符不出现在 .pdf 文件中
Text from richTextBox to .pdf file c#: Greek characters do not appear in .pdf file
我想使用 iTextSharp 将 richTextBox 的文本从 Visual Studio (c#) 传递到 .pdf 文件。我的代码确实创建了 .pdf 文件,并且文本在文件上传递。但是,希腊文字 - 包含的字符不会出现在文件的文本中(只有英文字符、数字和符号,例如破折号等会出现)。我知道我需要以某种方式将默认的基本字体更改为其他字体,以便希腊字母也可以显示,并且尝试了我遇到的许多建议,但仍然无法正常工作。这是我的代码:
SaveFileDialog sfd = new SaveFileDialog();
private void button1_Click(object sender, EventArgs e)
{
sfd.Title = "Save As PDF";
sfd.Filter = "(*.pdf)|*.pdf";
sfd.InitialDirectory = @"C:\";
if (sfd.ShowDialog() == DialogResult.OK)
{
iTextSharp.text.Document doc = new iTextSharp.text.Document();
PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
doc.Open();
doc.Add(new iTextSharp.text.Paragraph(richTextBox1.Text));
doc.Close();
}
}
首先,iTextSharp 已弃用。在 NuGet 包管理器中,您可以看到他们特别告诉您改用 itext7。
在 itext7 中,您必须制作并使用支持希腊字符集的字体。
这似乎对我有用:
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
private void Test()
{
string fileName = Path.GetDirectoryName(Application.ExecutablePath) + \test.pdf";
PdfWriter pdfWriter = new PdfWriter(fileName);
PdfDocument pdf = new PdfDocument(pdfWriter);
Document doc = new Document(pdf);
var font = PdfFontFactory.CreateFont("C:\Windows\Fonts\arial.ttf", "Identity-H", PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED);
Paragraph p = new Paragraph("Α α, Β β, Γ γ, Δ δ, Ε ε, Ζ ζ, Η η, Θ θ, Ι ι, Κ κ, Λ λ, Μ");
p.SetFont(font);
doc.Add(p);
doc.Close();
}
我想使用 iTextSharp 将 richTextBox 的文本从 Visual Studio (c#) 传递到 .pdf 文件。我的代码确实创建了 .pdf 文件,并且文本在文件上传递。但是,希腊文字 - 包含的字符不会出现在文件的文本中(只有英文字符、数字和符号,例如破折号等会出现)。我知道我需要以某种方式将默认的基本字体更改为其他字体,以便希腊字母也可以显示,并且尝试了我遇到的许多建议,但仍然无法正常工作。这是我的代码:
SaveFileDialog sfd = new SaveFileDialog();
private void button1_Click(object sender, EventArgs e)
{
sfd.Title = "Save As PDF";
sfd.Filter = "(*.pdf)|*.pdf";
sfd.InitialDirectory = @"C:\";
if (sfd.ShowDialog() == DialogResult.OK)
{
iTextSharp.text.Document doc = new iTextSharp.text.Document();
PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
doc.Open();
doc.Add(new iTextSharp.text.Paragraph(richTextBox1.Text));
doc.Close();
}
}
首先,iTextSharp 已弃用。在 NuGet 包管理器中,您可以看到他们特别告诉您改用 itext7。
在 itext7 中,您必须制作并使用支持希腊字符集的字体。
这似乎对我有用:
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
private void Test()
{
string fileName = Path.GetDirectoryName(Application.ExecutablePath) + \test.pdf";
PdfWriter pdfWriter = new PdfWriter(fileName);
PdfDocument pdf = new PdfDocument(pdfWriter);
Document doc = new Document(pdf);
var font = PdfFontFactory.CreateFont("C:\Windows\Fonts\arial.ttf", "Identity-H", PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED);
Paragraph p = new Paragraph("Α α, Β β, Γ γ, Δ δ, Ε ε, Ζ ζ, Η η, Θ θ, Ι ι, Κ κ, Λ λ, Μ");
p.SetFont(font);
doc.Add(p);
doc.Close();
}