2017-04-24 77 views
0

我在Windows 10 x64和某些PCL驅動程序上打印時遇到問題。當我打印到A4尺寸時,它從底部切下約2釐米,而不是打印高度爲29.7釐米,它只打印約27.4釐米。 請注意,相同的代碼在Windows 7 x64操作系統上正常工作。 我使用printDialog.PrintDocument()方法傳遞一個自定義分頁程序類來打印。 我注意到有趣的事情是,如果我只是解析靜態Xaml字符串,如下所示使用它可以正常工作,但如果我嘗試使用代碼隱藏在wrapPanel中添加FrameworkElements,它將無法在全尺寸上打印。WPF在Windows 10 x64和PCL驅動程序上打印

> const string pageTemplate = @"<Border 
      xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
      xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' 
      xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' 

      xmlns:d='http://schemas.microsoft.com/expression/blend/2008' 
      mc:Ignorable='d' 

      BorderThickness='0' Name='page' Margin='0' Width='200' Height='200'> 
       <Grid Name='grid'> 
        <WrapPanel Name='wrapper' Orientation='Horizontal' />      
       </Grid> 
      </Border>"; 

> var page = System.Windows.Markup.XamlReader.Parse(pageTemplate) as 
> Border; 
+0

這是A4和美國標準8x11之間的區別「所以你可能剛剛選擇了錯誤的紙張大小 –

+0

感謝評論漢斯我通過調試檢查了PrintTicket的PageMediaSize選擇是ISOA4我也試過把硬編碼的值也在那裏,但仍然輸出是錯誤的我不知道這些打印機驅動程序是如何轉移到美國信紙尺寸而不是A4 我檢查了它們的屬性以及它們的默認設置也是A4。 – Abdullah

回答

0

只是爲了造福他人,我想更新並回答我的問題,我設法解決這個問題。我不確定這是WPF還是打印機驅動程序中的錯誤,但我發現如下所示。 如果我將DocumentPaginator對象傳遞給PrintDialog.PrintDocument或XpsDocumentWriter.Write方法,則無法保持正確的頁面大小,但是如果手動獲取每個頁面的視覺效果(儘管使用相同的paginator類),然後將每個單獨頁面傳遞給XpsDocumentWriter.Write方法(批處理模式),那麼它在所有打印驅動程序上工作正常。 我想從微軟的專家意見這個人是否如果它的錯誤,以及爲什麼這兩種方法行爲不同。

相關問題