我有一些特殊字体:EAN-13
我需要在报告中插入条形码,所以我不知道如何使用嵌入字体。
我可以在运行时加载我的字体:
private static PrivateFontCollection Pfc;
private static async Task<FontFamily> EAN13()
{
if (Pfc == null)
{
Pfc = new PrivateFontCollection();
Stream fontStream = typeof(DefferedPurchase)
.Assembly
.GetManifestResourceStream("ActionsC.Resources.EAN-13.ttf");
byte[] fontdata = new byte[fontStream.Length];
await fontStream.ReadAsync(fontdata, 0, (int)fontStream.Length);
fontStream.Close();
unsafe
{
fixed (byte* pFontData = fontdata)
{
Pfc.AddMemoryFont((IntPtr)pFontData, fontdata.Length);
}
}
}
return Pfc.Families.FirstOrDefault();
}
但我怎么能apply
它到这个rdlc
xml节点?
<Textbox Name="textbox19">
<CanGrow>true</CanGrow>
<ToggleImage>
<InitialState>true</InitialState>
</ToggleImage>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>=Parameters!BarCode.Value</Value>
<Style>
<FontFamily><!--
see here
--></FontFamily>
<FontSize>12pt</FontSize>
</Style>
</TextRun>
</TextRuns>
<Style />
</Paragraph>
</Paragraphs>
<rd:DefaultName>textbox1</rd:DefaultName>
<Top>13.4995cm</Top>
<Left>21.53213cm</Left>
<Height>3.10467cm</Height>
<Width>5.6385cm</Width>
<ZIndex>30</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
有什么想法吗?
答案 0 :(得分:0)
这里有一个非常小的答案Modify dynamically a rdlc report (c#)
LoïcHaye的回答
Stream st = this.GetType().Assembly.GetManifestResourceStream(_NomRessourceRpt);
// convert stream to string
StreamReader reader = new StreamReader(st);
string reportDef = reader.ReadToEnd();
XmlDocument document = new XmlDocument();
document.LoadXml(reportDef);
有关于生成条形码的resource here
步骤1:对于RDLS的基本报告,请点击以下链接:
步骤2:从此站点下载条形码字体3 of 9:
步骤3:然后转到您的rdlc报告页面:
步骤4:右键单击要创建的表达式(TextBox)barcode->select->"TextBox Properties"
第5步:文本框属性 - &gt;字体 - >选择字体类型 - >确定
步骤6:然后右键单击要制作条形码的表达式(TextBox) - >选择 - &gt;'表达式'
步骤7:将“*”附加到表达式值,然后单击“确定”。
步骤8:运行您的应用程序,您可以在报告中看到您的条形码。
以上内容完全从上述网站中复制而来,我与他们没有任何关系
如果您访问该网站,他们也会有图片说明并链接到其他一些资源。
答案 1 :(得分:0)
为了能够嵌入字体,字体必须满足以下条件:
如果未满足其中一个或多个条件,您将无法按照自己喜欢的方式嵌入字体。而且我相信你唯一的另一个选择就是代码,在运行时,就像你已经发现的那样。
如果满足这两个条件,那么它非常简单。您所要做的就是在报表服务器上安装此字体。
当任何用户将报告导出为PDF时,它将自动嵌入PDF文档中,并且字体将正确显示。因此,您可以省去必须在客户端计算机上安装此字体的麻烦。
设计报告的计算机显然也需要安装此字体。您只需选择您自己的屏幕截图所示的字体,该屏幕应按字体名称和其他必要属性在.rdlc文件中注册。
但是,如果您在不使用报表服务器的情况下为桌面应用程序编程。据我所知,除了现在(通过代码)之外,没有其他方法可以完成这项工作。
不幸的是,SSRS(rdlc)不够先进,只能通过xml节点完成此任务。
可以找到官方MSDN文档文章 here
答案 2 :(得分:0)
违反直觉,将条形码转换为PDF的最佳方法通常是使用位图。它们通常比相应的矢量或基于字体的解决方案更小,以存储在结果pdf中,并且大多数条形码按照定义以单个单元模块宽度为中心,可以直接表示为单个像素。
SSRS和RDLC确实支持这个工作流程,但它在屏幕上看起来很糟糕,因为它在屏幕上使用不同的插值模式,而不是用于打印和导出到pdf。
要生成图像,我使用Zen Barcode Rendering Framework许可的royalty free license,但该理论同样适用于任何条形码渲染器。
我使用application-hosted http server来允许动态条形码渲染:
' Make sure to use EscapeDataString if parameter is not URL safe
=Parameters!BarcodeServiceUri.Value & "2d/datamatrix?moduleSize=2&data=" & Parameters!ToteID.Value
结果图片:
“导出PDF”中的示例PDF演示正确调整大小:
打印时也是如此。