我的目标是创建一个可以在Blackberry上使用Mobipocket阅读器阅读的电子书。问题是我的文本包含黑莓不支持的UTF-8字符,因此显示为黑盒子。
电子书将包含英文和旁遮普语单词列表供参考,例如:
bait ਦਾਣਾ
baked ਭੁੰਨਿਆ
balance ਵਿਚਾਰ
我想到的是将列表写入HTML表格,将旁遮普语转换为GIF或PNG文件。然后在eBook中包含此HTML文件。所有单词当前都存在于访问数据库中,但可以很容易地导出到另一个表单以输入生成例程。
问题:使用VB,VBA或C#,编写例程创建图像然后在表格中输出包含英文单词和图像的HTML文件有多难?
答案 0 :(得分:4)
Python中有简单的库来处理这类问题。但是我不确定是否有一个简单的VB / C#解决方案。
使用python你可以使用PIL library和类似的代码(我发现here):
# creates a 50x50 pixel black box with hello world written in white, 8 point Arial text
import Image, ImageDraw, ImageFont
i = Image.new("RGB", (50,50))
d = ImageDraw.Draw(i)
f = ImageFont.truetype("Arial.ttf", 8)
d.text((0,0), "hello world", font=f)
i.save(open("helloworld.png", "wb"), "PNG")
如果您已经熟悉其他语言,那么Python应该很容易上手,而且与VB / C#不同,它几乎适用于任何平台。 Python还可以帮助您生成HTML以与生成的图像一起使用。有一些例子here。
答案 1 :(得分:2)
使用VB
Sub createPNG(ByVal pngString As String, ByVal pngName As String)
' Set up Font
Dim pngFont As New Font("Raavi", 14)
' Create a bitmap so we can create the Grapics object
Dim bm As Bitmap = New Bitmap(1, 1)
Dim gs As Graphics = Graphics.FromImage(bm)
' Measure string.
Dim pngSize As SizeF = gs.MeasureString(pngString, pngFont)
' Resize the bitmap so the width and height of the text
bm = New Bitmap(Convert.ToInt32(pngSize.Width), Convert.ToInt32(pngSize.Height))
' Render the bitmap
gs = Graphics.FromImage(bm)
gs.Clear(Color.White)
gs.TextRenderingHint = TextRenderingHint.AntiAlias
gs.DrawString(pngString, pngFont, Brushes.Firebrick, 0, 0)
gs.Flush()
'Saving this as a PNG file
Dim myFileOut As FileStream = New FileStream(pngName + ".png", FileMode.Create)
bm.Save(myFileOut, ImageFormat.Png)
myFileOut.Close()
End Sub