私はPdfSharpライブラリを使用していますので、pdfのコード128フォントでバーコードを描く必要があります。 PDF図面でバーコードの下のように:PdfSharpバーコード128 IIS上の図が記号の隙間を作る
XFont BarcodeFont = new XFont("Code 128", 40, XFontStyle.Regular);
tf.Alignment = XParagraphAlignment.Center;
XRect barecodeLabel = new XRect(new XPoint(leftMargin, rectanglesPadding), new XSize(page.Width - rightMargin, BarcodeFont.Height + 10));
tf.DrawString(PrepareBarcode(item.ItemNo_), BarcodeFont, XBrushes.Black, barecodeLabel, XStringFormats.TopLeft);
rectanglesPadding += barecodeLabel.Height - XUnit.FromPoint(5.0);
は、バーコードのデータを準備:
private string PrepareBarcode(string itemNo)
{
int sumControl = SumControl(itemNo);
string kod = "";
kod += (char)209;
kod += itemNo;
kod += (char)sumControl;
kod += (char)211;
return kod;
}
和制御:
private int SumControl(string input)
{
int sum = 0;
for (int i = 0; i < input.Length; i++)
{
if (input[i] != ' ')
{
int znak = (int)input[i] - 32;
sum += (i + 1) * ((int)input[i] - 32);
}
}
sum += 104;
int rem = Convert.ToInt32(Decimal.Remainder(sum, 103));
if (rem < 95)
return rem + 32;
else
return rem + 105;
}
フォントがPDFに埋め込まれ、PDFがaspxページに戻りますMemoryStreamとしてフラッシュしてブラウザにフラッシュします。
WCF:
MigraDoc.DocumentObjectModel.Document doc = new MigraDoc.DocumentObjectModel.Document();
MigraDoc.Rendering.DocumentRenderer renderer = new DocumentRenderer(doc);
MigraDoc.Rendering.PdfDocumentRenderer pdfRenderer = new MigraDoc.Rendering.PdfDocumentRenderer(true, PdfFontEmbedding.Always);
pdfRenderer.PdfDocument = document;
pdfRenderer.DocumentRenderer = renderer;
using (MemoryStream ms = new MemoryStream())
{
pdfRenderer.Save(ms, false);
byte[] buffer = new byte[ms.Length];
ms.Seek(0, SeekOrigin.Begin);
ms.Flush();
ms.Read(buffer, 0, (int)ms.Length);
return ms;
}
そして、ASPXページ:
try
{
zebexService = new SERVICES.NAV.WAREHOUSE.ZEBEX.ZebexClient();
zebexService.Open();
var wampirUserId = HttpContext.Current.GetWampirID();
System.IO.MemoryStream stream = zebexService.PrintBarcodeLabels(wampirUserId, itemToPrintList);
zebexService.Close();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=Druk etykiet:" + DateTime.Now.ToString("yy/mm/dd-hh:mm") + "_" + wampirUserId + ".pdf");
HttpContext.Current.Response.BinaryWrite(stream.ToArray());
HttpContext.Current.Response.Flush();
stream.Close();
HttpContext.Current.Response.End();
Response.BinaryWrite(stream.ToArray());
Response.Flush();
}
私はローカルホスト(窓10、asp.net devの上でそれを描きます。サーバー、lang。
を私はWindows Serverの2012R2、LANGとIISサーバーへのコード(WCF)を移動する場合:PL)が正しくdrawedています。インストールしたのと同じフォント(code128.ttf)と英語、私は文字の間に大きなギャップでバーコードを取得する:
私はこの問題を解消するために何ができますか?
コンソールのエラーを確認してください。 – Webruster
リソースはドキュメントとして解釈されますが、MIMEタイプapplication/pdf:http:// localhost:59384/Warehouse/Buffer/PrintLabels.aspxで転送されるリソースです。 – Piotr
サーバーに移動したアプリケーションでエラーが発生しましたか? – Webruster