Local Repot-嵌入Barcode
使用內嵌的方式
在Code Project瞄到了一篇如何內嵌Barcode的介紹文章。照著作了一篇,並調整成之後專案要使用的方式。1.Nuget 參考BarcodeLib
2.撰寫代理類別 BarcodeProxy.cs
public class BarcodeProxy
{
private BarcodeLib.Barcode Barcode;
public BarcodeProxy()
{
this.Barcode = new BarcodeLib.Barcode();
}
public byte[] Render(string value)
{
Barcode.Alignment = BarcodeLib.AlignmentPositions.CENTER;
Barcode.LabelPosition = BarcodeLib.LabelPositions.BOTTOMCENTER;
Barcode.IncludeLabel = true;
Barcode.AlternateLabel = value;
Barcode.RotateFlipType = RotateFlipType.Rotate180FlipXY;
var image = Barcode.Encode(BarcodeLib.TYPE.CODE128A, value, Color.Black, Color.White, 250, 90);
using (var ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Png);
return ms.ToArray();
}
}
}
3.報表屬性-加入參考
本例為專案自己 ps: dll的位置在哪不重要,此動作只是要assemble namespace。在執行時的只要Local Report所在的bin內有相關dll即可。4.報表屬性-加入代碼
呼叫在第2個步驟撰寫的代理類別
Public Function Convert(Text As String) As Byte()
Dim barcodeProxy As New ReportBarcodeRenderLab.BarcodeProxy
Return barcodeProxy.Render(Text)
End Function
加入完畢後,建置會失敗
要將報表屬性建置行為設為none,建置才會成功
5.新增圖片-指定方法
image source選擇Database,並在field指定在第4步驟的轉檔方法6.測試程式
原始碼:https://github.com/kimx/ReportBarcodeRenderLab