Pdf 使用iTextSharp进行标签打印
我有导出avery label pdf的逻辑。逻辑正确地导出带有标签的pdf,但当我打印该pdf时,我传递的页面大小度量(页面属性)与打印的页面不匹配 页面属性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
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);