在 vb.net API 中操纵 FedEx 标签
Manipulating FedEx label in vb.net API
我正在 vb.net 写一个 FedEx API 来处理我们的 universe 数据库。到目前为止,一切都快完成了,但我还停留在打印标签部分。 FedEx 给我的代码将标签图像保存为 pdf 并从 acrobat 打印。问题是你真的不能用 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
如果它在屏幕上看起来不错,但在打印机上没有正确对齐,那么您可能应该查看设备本身或驱动程序中的打印机设置。我会和驱动程序一起使用,您可能需要指定媒体并可能调整边距。
Chris,如果这个问题还没有解决,请在 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。
然后在他从vb飞来执行时创建一个print.cmd脚本...
COPY /B tracking_id.zpl \localhost\FedexThermal
然后在 vb 中为 运行 该脚本创建一个进程,
适合我。
我正在 vb.net 写一个 FedEx API 来处理我们的 universe 数据库。到目前为止,一切都快完成了,但我还停留在打印标签部分。 FedEx 给我的代码将标签图像保存为 pdf 并从 acrobat 打印。问题是你真的不能用 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
如果它在屏幕上看起来不错,但在打印机上没有正确对齐,那么您可能应该查看设备本身或驱动程序中的打印机设置。我会和驱动程序一起使用,您可能需要指定媒体并可能调整边距。
Chris,如果这个问题还没有解决,请在 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。
然后在他从vb飞来执行时创建一个print.cmd脚本...
COPY /B tracking_id.zpl \localhost\FedexThermal
然后在 vb 中为 运行 该脚本创建一个进程,
适合我。