繪製文本時的低分辨率圖像我想用iTextSharp將圖像寫入PDF中,但除了正在寫入的圖像外,我還需要將文本添加到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