PDFsharp 및 MigraDoc을 사용하여 PDF를 생성하려고했습니다. 지금까지는 모든 것이 완벽하게 작동합니다.PDFsharp MigraDoc 런타임에 생성 된 비트 맵을 표 셀에 추가
이제 런타임 중에 비트 맵을 만들어 내 테이블 셀 중 하나에 추가하는 방법을 생각해 냈습니다.
하드 드라이브에 없어도 자원에서 비트 맵을 추가 할 수 있다는 것을 읽었습니다.
참조 : []
를 바이트 비트 맵을 변환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 문자열이 잘 렸습니다).
나는 byte []로 정확하게 변환하지 않는다고 생각합니다.
누군가 나를 올바른 길로 인도 할 수 있습니까?
'AddImage()'의 첫 번째 매개 변수의 데이터 유형이'string'으로 정의되지 않았습니까? 이것은 이미지 객체가'ToString()'을 통해 문자열로 암시 적으로 변환되기 때문에 오류 메시지를 설명 할 것입니다. 이 경우 스트림이 아닌 파일 이름을 명시해야합니다 (적어도 프로젝트에서는 파일 이름을 전달해야합니다). – ViRuSTriNiTy
링크 된 Wiki 기사를 읽어보십시오. – SUM
그래, 그 기사는 뭐래? 'section.AddImage (imageFilename);'- 변수 이름에'Filename'이라는 단어가 보입니까? 그래서 내가 파일 이름을 전달해야한다고 썼다. – ViRuSTriNiTy