我正在尝试使用PDFsharp将动态生成的QR码位图插入到PDF文档中。我不想将位图保存到文件中,只是想将其插入到PDF中。我遇到的问题是DrawImage命令正在寻找图像文件所在的字符串。但我不想保存文件,我只想将其插入PDF文档。有没有办法做到这一点?
var QRCode_BMP = _generalCode.QR_CodeGenerator(AddReviewPath); //This generates the bitmap
MemoryStream streamQR = new MemoryStream();
QRCode_BMP.Save(streamQR, System.Drawing.Imaging.ImageFormat.Jpeg); //save bitmap into memory stream in jpeg format System.Drawing.Image QR_Jpeg = System.Drawing.Image.FromStream(streamQR);// save memory stream to image file
XImage xImage = XImage.FromGdiPlusImage(QR_Jpeg);
gfx = XGraphics.FromPdfPage(page);
DrawImage(gfx, xImage, 0, 0, 100, 100); //This is not working
QRCode_BMP.Dispose();
streamQR.Close();
gfx.Dispose();
答案 0 :(得分:1)
您在QRCode_BMP
中创建了一个二维码,然后从QR_Jpeg
创建一个XImage,并将其写为无效。
QRCode_BMP
仅用于创建从未使用过的流。我们不知道QR_Jpeg
来自哪里。
提供完整的样本。
BTW:您可以使用XImage.FromStream
来使用您创建的流。
P.S。:恕我直言JPEG是QR码的不良选择。只需使用BMP,PDFsharp就会使用无损压缩。
答案 1 :(得分:0)
这就是我的工作方式;
PdfDocument pdf = PdfGenerator.GeneratePdf("<b>some html here</b>", PageSize.A4);
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("some text here", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(10);
PdfPage page = pdf.Pages[0]; //I will add it to 1st page
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);
XImage image = XImage.FromGdiPlusImage(qrCodeImage); //you can use XImage.FromGdiPlusImage to get the bitmap object as image (not a stream)
gfx.DrawImage(image, 50, 50, 150, 150);
//save your pdf, dispose other objects