Управление меткой FedEx в API vb.net
Я пишу FedEx API в vb.net для работы с нашей базой данных юниверсов. Пока что все готово, но я застрял на печатной этикетке. Код, который дал мне FedEx, сохраняет изображение этикетки в формате PDF и распечатывает с акробата. Проблема в том, что вы ничего не можете сделать с PDF-изображением, или я уверен, по крайней мере, это означает, что я не могу правильно выровнять изображение на тепловой метке 4 x 6. Как мне это сделать, или есть хороший способ просто использовать изображение и назначить координаты X и Y, не путая метку FedEx? Вот код, из которого он сохраняет этикетку для печати:
Sub ShowShipmentLabels(ByRef CompletedShipmentDetail As CompletedShipmentDetail, ByRef packageDetail As CompletedPackageDetail, ByVal isCodShipment As Boolean)
If (packageDetail.Label.Parts(0).Image IsNot Nothing) Then
' Save outbound shipping label
Dim FileName As String = getProperty("labelpath") + packageDetail.TrackingIds(0).TrackingNumber + ".pdf"
SaveLabel(FileName, packageDetail.Label.Parts(0).Image)
Mylabel.Print()
' Save COD Return label
If (isCodShipment) Then
FileName = getProperty("labelpath") + CompletedShipmentDetail.CompletedPackageDetails(0).TrackingIds(0).TrackingNumber + "CR.pdf"
SaveLabel(FileName, CompletedShipmentDetail.CompletedPackageDetails(0).CodReturnDetail.Label.Parts(0).Image)
End If
End If
End Sub
Sub SaveLabel(ByRef labelFileName As String, ByRef labelBuffer() As Byte)
' Save label buffer to file
Dim LabelFile As FileStream = New FileStream(labelFileName, FileMode.Create)
LabelFile.Write(labelBuffer, 0, labelBuffer.Length)
LabelFile.Close()
' Display label in Acrobat
DisplayLabel(labelFileName)
End Sub
Sub DisplayLabel(ByRef labelFileName As String)
Dim info As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo(labelFileName)
info.UseShellExecute = True
info.CreateNoWindow = True
info.WindowStyle = ProcessWindowStyle.Hidden
info.Verb = "Print"
System.Diagnostics.Process.Start(info)
End Sub
2 ответа
Если на экране он выглядит нормально, но на принтере не выровнен, то вам, вероятно, следует обратиться к настройкам принтера как на самом устройстве, так и в драйвере. Я бы с водителем, вам, вероятно, нужно конкретизировать СМИ и, возможно, настроить поля.
Крис, если это еще не решено, проверьте этот FAQ из нашей базы данных в Shippo: http://support.goshippo.com/hc/en-us/articles/203804319-My-labels-are-not-printing-correctly-How-can-I-fix-this-
Поначалу печать 4x6 может быть головной болью. Если это еще не работает для вас, не стесняйтесь комментировать с более подробной информацией о том, какой принтер вы используете и ваши настройки принтера. Это поможет отладить дальше.
У вас есть возможность сохранить изображение в формате ZPLII. Сделайте это и сохраните как
tracking_id.zpl
.
Поделитесь принтером Zebra как FedexThermal.
Затем создайте сценарий print.cmd на лету из vb для выполнения...
COPY /B tracking_id.zpl \\localhost\FedexThermal
Затем в vb создайте процесс для запуска этого сценария,
Работает на меня.