Я пытаюсь записать изображение в PDF с помощью iTextSharp, но помимо написанных изображений мне также нужно добавить текст в PDF. Кажется, лучший способ сделать это - написать текст как изображение и вставить его на страницу. Все работает отлично, но когда я смотрю на текст, я вижу, что это более низкое качество, чем хотелось бы. Я в конечном итоге получить что-то вроде этого:Изображение с низким разрешением при рисовании текста с использованием System.Drawing
Вы можете видеть, что есть много «точки», которые отличаются от окружающего сплошного фона. Вот код, я использую, чтобы нарисовать текст:
private System.Drawing.Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor)
{
Bitmap img = new Bitmap(1, 1);
Graphics drawing = Graphics.FromImage(img);
SizeF textSize = drawing.MeasureString(text, font);
img.Dispose();
drawing.Dispose();
img = new Bitmap((int) textSize.Width, (int) textSize.Height);
//img.SetResolution(200, 200);
drawing = Graphics.FromImage(img);
drawing.Clear(backColor);
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, 0, 0);
//drawing.TextRenderingHint = TextRenderingHint.AntiAlias;
//drawing.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
//drawing.SmoothingMode = SmoothingMode.HighQuality;
//img.MakeTransparent(Color.MediumAquamarine);
drawing.Save();
textBrush.Dispose();
drawing.Dispose();
return img;
}
и соответствующий текст из PDF автор:
var name = DrawText(Request.Form["name"], font, Color.Black, Color.White);
...
Image titleImg = Image.GetInstance(title.ToStream(ImageFormat.Jpeg));
titleImg.SetAbsolutePosition(float.Parse(Request.Form["x"]), float.Parse(Request.Form["y"]));
titleImg.ScaleToFit(16, 16);
pdfContentByte.AddImage(titleImg);
я не уверен, если это проблема с iTextSharp ScaleToFit()
или метод рисования, но я бы немного очистил цвет фона. Вы можете увидеть различные методы, которые я пытался прокомментировать из метода DrawText()
.
Любые мысли будут оценены.
Спасибо!
Если бы я был вами, я бы не нарисовал текст как растровое изображение в первую очередь, я бы использовал текст PDF, показывающий операторы, допускающие произвольную гладкость записи. – mkl
@mkl Что вы имеете в виду? Есть ли у вас пример использования того, что вы упомянули выше? Когда я попытался добавить текст в PDF, это не сработало, как я бы надеялся ... он просто создал новые страницы вместо добавления туда, где мне это нужно, которые в основном являются токенами внутри документа. – awh112