我试图制作一个流文档并打印,我能够将数据调整为所需的大小,并且我得到了所需的输出。
以下是我的流文档的代码:
<Window x:Class="test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="test" Height="600" Width="500">
<Grid>
<FlowDocumentReader Width="330" Height="110" Name="DocumentRdr">
<FlowDocument FontSize="8" Name="Document" >
<Paragraph Margin="0">
<TextBlock Text="Brand:"/>
<Run Text="{Binding Brand}" />
</Paragraph>
<Paragraph Margin="0">
<TextBlock Text="Item:"/>
<Run Text="{Binding Cat1}" />
<TextBlock Text="Size:"/>
<Run Text="{Binding Size}" />
</Paragraph>
<Paragraph Margin="0">
Welcome
<Run Text="{Binding Brand}" />
</Paragraph>
<BlockUIContainer Margin="0">
<Image Source="{Binding BarCode}" Width="Auto" Height="Auto" Stretch="None" HorizontalAlignment="Left" />
</BlockUIContainer>
</FlowDocument>
</FlowDocumentReader>
</Grid>
</Window>
我用于打印的代码如下:
Dim data As New SampleData With {.Brand = "Some Brand", .Cat1 = "A Cat 1", .Size = "100-120"}
Dim k As Zen.Barcode.BarcodeDraw = Zen.Barcode.BarcodeDrawFactory.Code25InterleavedWithoutChecksum
Dim ms As New MemoryStream
k.Draw("1234", 25).Save(ms, System.Drawing.Imaging.ImageFormat.Png)
ms.Position = 0
Dim bi As New BitmapImage
bi.BeginInit()
bi.StreamSource = ms
bi.EndInit()
data.BarCode = bi
Dim temp As New test
temp.DataContext = data
Dim doc = temp.Document
doc.PageHeight = 110
Dim pd = New PrintDialog()
Dim dps As IDocumentPaginatorSource = doc
dps.DocumentPaginator.PageSize = New Windows.Size(100, 100)
If pd.ShowDialog() = True Then
dps.DocumentPaginator.PageSize = New Windows.Size(330, 110)
pd.PrintDocument(dps.DocumentPaginator, "Document")
End If
问题是,每件事的文本和图像都是我想要的大小,但我无法改变纸张的大小。我正在尝试打印标签,由于页面较长,我每 10-12 个标签打印一次,我想更改纸张尺寸。此打印对话框是 system.windows.control 的一部分,而不是 system.drawings.printing。我通过在代码中每个有大小但无法做到的地方保持所需的大小来更改代码。你能纠正我吗,我哪里出错了。
也尝试了以下代码:
pd.PrintQueue.DefaultPrintTicket.PageMediaSize = New System.Printing.PageMediaSize(10, 10)