PDFsharpとMigraDocを使用してPDFを生成したいと考えました。これまでのところ、すべてが完璧に動作します。PDFsharp MigraDocランタイムで生成されたビットマップをテーブルセルに追加
今、私はランタイム中にビットマップを作成し、それを自分のテーブルセルの1つに追加するアイディアを思いつきました。
私はハードドライブ上に置くことなく、リソースからビットマップを追加することが可能だと読んだことがあります。
を参照してください:[]
をバイトをビットマップに変換するためのBitmap GreenDot = new Bitmap(32,32);
Graphics GreenDotGraphics = Graphics.FromImage(GreenDot);
GreenDotGraphics.FillEllipse(Brushes.Green,0,0,32,32);
//The next step will be converting the Bitmap to an byte[]
var byteGreenDot = ImageToByte(GreenDot);
//Now converting it to string as seen in the WikiPage
string stringGreenDot = Convert.ToBase64String(byteGreenDot);
string FinalGreenDot = "base64:"+ stringGreenDot;
//Now creating a table
.
.
.
cell = MyRow.Cell[1];
cell.AddImage(FinalGreenDot);
.
.
.
コード:ビットマップを作成するための
コード:これは私の試みは、私の小さなプロジェクトにそれを適応させることであるhttp://www.pdfsharp.net/wiki/MigraDoc_FilelessImages.ashx
public static byte[] ImageToByte(System.Drawing.Image img)
{
using(var ms = new MemoryStream())
{
img.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}
}
コードを実行すると、警告が表示されます:画像 'base64:Qk02E [...] =='見つかりませんでした。 (base64文字列はこのポストのために切り捨てられました)。
私はそれをバイト[]に正しく変換しないと思います。
誰かが正しい軌道に乗ることができますか?
'AddImage()'の最初のパラメータのデータ型が 'string'として定義されていませんか?これは、イメージオブジェクトが 'ToString()'を介して文字列に暗黙的に変換されるので、エラーメッセージを説明します。この場合、ストリームではなくファイル名を記述する必要があります(少なくとも私のプロジェクトではファイル名を渡す必要があります)。 – ViRuSTriNiTy
リンク先のWiki記事をお読みください。 – SUM
ええと、その記事は何を言っていますか? 'section.AddImage(imageFilename);' - 変数名に 'Filename'という単語がありますか?それで、私はあなたがファイル名を渡す必要があると書いたのです。 – ViRuSTriNiTy