Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pdf 使用iTextSharp进行标签打印_Pdf_C# 4.0_Itextsharp - Fatal编程技术网

Pdf 使用iTextSharp进行标签打印

Pdf 使用iTextSharp进行标签打印,pdf,c#-4.0,itextsharp,Pdf,C# 4.0,Itextsharp,我有导出avery label pdf的逻辑。逻辑正确地导出带有标签的pdf,但当我打印该pdf时,我传递的页面大小度量(页面属性)与打印的页面不匹配 页面属性 Width="48.5" Height="25.4" HorizontalGapWidth="0" VerticalGapHeight="0" PageMarginTop="21" PageMarginBottom="21" PageMarginLeft="8" PageMarginRight="8" PageSize="A4" Lab

我有导出avery label pdf的逻辑。逻辑正确地导出带有标签的pdf,但当我打印该pdf时,我传递的页面大小度量(页面属性)与打印的页面不匹配

页面属性

Width="48.5" Height="25.4" HorizontalGapWidth="0" VerticalGapHeight="0" PageMarginTop="21" PageMarginBottom="21" PageMarginLeft="8" PageMarginRight="8" PageSize="A4" LabelsPerRow="4" LabelRowsPerPage="10"
在应用之前,首先将上述特性值转换为等效于

转换为点

    private float mmToPoint(double mm)
    {
        return (float)((mm / 25.4) * 72);
    }
逻辑

    public Stream SecLabelType(LabelProp _label)
    {
        List<LabelModelClass> Model = new List<LabelModelClass>();
        Model = RetModel(_label);
        bool IncludeLabelBorders = false;
        FontFactory.RegisterDirectories();
        Rectangle pageSize;
        switch (_label.PageSize)
        {
            case "A4":
                pageSize = iTextSharp.text.PageSize.A4;
                break;
            default:
                pageSize = iTextSharp.text.PageSize.A4;
                break;
        }

        var doc = new Document(pageSize,
                               _label.PageMarginLeft,
                               _label.PageMarginRight,
                               _label.PageMarginTop,
                               _label.PageMarginBottom);

        var output = new MemoryStream();

        var writer = PdfWriter.GetInstance(doc, output);

        writer.CloseStream = false;
        doc.Open();
        var numOfCols = _label.LabelsPerRow + (_label.LabelsPerRow - 1);
        var tbl = new PdfPTable(numOfCols);
        var colWidths = new List<float>();
        for (int i = 1; i <= numOfCols; i++)
        {
            if (i % 2 > 0)
            {
                colWidths.Add(_label.Width);
            }
            else
            {
                colWidths.Add(_label.HorizontalGapWidth);
            }
        }

        var w = iTextSharp.text.PageSize.A4.Width - (doc.LeftMargin + doc.RightMargin);
        var h = iTextSharp.text.PageSize.A4.Height - (doc.TopMargin + doc.BottomMargin);
        var size = new iTextSharp.text.Rectangle(w, h);
        tbl.SetWidthPercentage(colWidths.ToArray(), size);
        //var val = System.IO.File.ReadLines("C:\\Users\\lenovo\\Desktop\\test stock\\testing3.txt").ToArray();
        //var ItemNoArr = Model.Select(ds => ds.ItemNo).ToArray();
        //string Header = Model.Select(ds => ds.Header).FirstOrDefault();
        int cnt = 0;
        bool b = false;
        int iAddRows = 1;
        for (int iRow = 0; iRow < ((Model.Count() / _label.LabelsPerRow) + iAddRows); iRow++)
        {
            var rowCells = new List<PdfPCell>();
            for (int iCol = 1; iCol <= numOfCols; iCol++)
            {
                if (Model.Count() > cnt)
                {
                    if (iCol % 2 > 0)
                    {
                        var cellContent = new Phrase();
                        if (((iRow + 1) >= _label.StartRow && (iCol) >= (_label.StartColumn + (_label.StartColumn - 1))) || b)
                        {
                            b = true;

                            try
                            {
                                var StrArr = _label.SpineLblFormat.Split('|');

                                foreach (var x in StrArr)
                                {
                                    string Value = "";
                                    if (x.Contains(","))
                                    {
                                        var StrCommaArr = x.Split(',');
                                        foreach (var y in StrCommaArr)
                                        {
                                            if (y != "")
                                            {

                                                Value = ChunckText(cnt, Model, y, Value);

                                            }
                                        }
                                        if (Value != null && Value.Replace(" ", "") != "")
                                        {
                                            cellContent.Add(new Paragraph(Value));
                                            cellContent.Add(new Paragraph("\n"));
                                        }
                                    }
                                    else
                                    {
                                        Value = ChunckText(cnt, Model, x, Value);
                                        if (Value != null && Value.Replace(" ", "") != "")
                                        {
                                            cellContent.Add(new Paragraph(Value));
                                            cellContent.Add(new Paragraph("\n"));
                                        }
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                var fontHeader1 = FontFactory.GetFont("Verdana", BaseFont.CP1250, true, 6, 0);
                                cellContent.Add(new Chunk("NA", fontHeader1));
                            }
                            cnt += 1;
                        }
                        else
                            iAddRows += 1;
                        var cell = new PdfPCell(cellContent);
                        cell.FixedHeight = _label.Height;
                        cell.HorizontalAlignment = Element.ALIGN_LEFT;
                        cell.Border = IncludeLabelBorders ? Rectangle.BOX : Rectangle.NO_BORDER;
                        rowCells.Add(cell);
                    }
                    else
                    {
                        var gapCell = new PdfPCell();
                        gapCell.FixedHeight = _label.Height;
                        gapCell.Border = Rectangle.NO_BORDER;
                        rowCells.Add(gapCell);
                    }
                }
                else
                {
                    var gapCell = new PdfPCell();
                    gapCell.FixedHeight = _label.Height;
                    gapCell.Border = Rectangle.NO_BORDER;
                    rowCells.Add(gapCell);
                }
            }
            tbl.Rows.Add(new PdfPRow(rowCells.ToArray()));
            _label.LabelRowsPerPage = _label.LabelRowsPerPage == null ? 0 : _label.LabelRowsPerPage;
            if ((iRow + 1) < _label.LabelRowsPerPage && _label.VerticalGapHeight > 0)
            {
                tbl.Rows.Add(CreateGapRow(numOfCols, _label));
            }

        }
        doc.Add(tbl);
        doc.Close();
        output.Position = 0;
        return output;

    }

private PdfPRow CreateGapRow(int numOfCols, LabelProp _label)
    {
        var cells = new List<PdfPCell>();

        for (int i = 0; i < numOfCols; i++)
        {
            var cell = new PdfPCell();
            cell.FixedHeight = _label.VerticalGapHeight;
            cell.Border = Rectangle.NO_BORDER;
            cells.Add(cell);
        }
        return new PdfPRow(cells.ToArray());
    }
publicstream SecLabelType(LabelProp\u标签)
{
列表模型=新列表();
模型=重新模型(_标签);
bool includeLabelOrders=false;
FontFactory.RegisterDirectories();
矩形页面大小;
开关(_label.PageSize)
{
案例“A4”:
pageSize=iTextSharp.text.pageSize.A4;
打破
违约:
pageSize=iTextSharp.text.pageSize.A4;
打破
}
var doc=新文档(页面大小,
_label.PageMarginLeft,
_label.PageMarginRight,
_label.PageMarginTop,
_标签:PageMarginBottom);
var输出=新的MemoryStream();
var writer=PdfWriter.GetInstance(文档,输出);
writer.CloseStream=false;
doc.Open();
var numocols=_label.LabelsPerRow+(_label.LabelsPerRow-1);
var tbl=新的PdfPTable(numOfCols);
var colWidths=新列表();
对于(int i=1;i 0)
{
colWidths.Add(_label.Width);
}
其他的
{
冷宽。添加(_标签。水平间隙宽度);
}
}
var w=iTextSharp.text.PageSize.A4.Width-(doc.LeftMargin+doc.righmargin);
var h=iTextSharp.text.PageSize.A4.Height-(doc.TopMargin+doc.BottomMargin);
var size=new iTextSharp.text.Rectangle(w,h);
tbl.SetWidthPercentage(colWidths.ToArray(),大小);
//var val=System.IO.File.ReadLines(“C:\\Users\\lenovo\\Desktop\\test stock\\testing3.txt”).ToArray();
//var ItemNoArr=Model.Select(ds=>ds.ItemNo.ToArray();
//string Header=Model.Select(ds=>ds.Header.FirstOrDefault();
int-cnt=0;
布尔b=假;
int-iAddRows=1;
对于(int-iRow=0;iRow<((Model.Count()/_label.LabelsPerRow)+iAddRows);iRow++)
{
var rowcell=新列表();
对于(int iCol=1;iCol cnt)
{
如果(iCol%2>0)
{
var cellContent=新短语();
如果(((iRow+1)>=|label.StartRow&&(iCol)>=(|label.StartColumn+(|label.StartColumn-1)))|b)
{
b=正确;
尝试
{
var StrArr=_label.spinelFormat.Split(“|”);
foreach(StrArr中的var x)
{
字符串值=”;
如果(x.Contains(“,”))
{
var StrCommaArr=x.Split(',');
foreach(StrCommaArr中的变量y)
{
如果(y!=“”)
{
值=ChunckText(cnt,型号,y,值);
}
}
如果(Value!=null&&Value.Replace(“,”)!=”)
{
添加(新段落(值));
添加(新段落(“\n”);
}
}
其他的
{
值=ChunckText(cnt,型号,x,值);
如果(Value!=null&&Value.Replace(“,”)!=”)
{
添加(新段落(值));
添加(新段落(“\n”);
}
}
}
}
捕获(例外e)
{
var fontfeader1=FontFactory.GetFont(“Verdana”,BaseFont.CP1250,true,6,0);
添加(新区块(“NA”,fontHeader1));
}
cnt+=1;
}
其他的
iAddRows+=1;
var cell=新的PdfPCell(cellContent);
cell.FixedHeight=_label.Height;
cell.HorizontalAlignment=Element.ALIGN_LEFT;
cell.Border=includeLabelOrders?Rectangle.BOX:Rectangle.NO_Border;
行单元格。添加(单元格);
}
其他的
{
var gapCell=new PdfPCell();
gapCell.FixedHeight=_label.Height;
gapCell.Border=Rectangle.NO_Border;
添加(gapCell);
}
}
其他的
{
var gapCell=new PdfPCell();
gapCell.FixedHeight=_label.Height;
gapCell.Border=Rectangle.NO_
writer.AddViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);