小编Fle*_*hns的帖子

使用 PrintDocumentAdapter 和 PrintManager 更改页数

我正在扩展 PrintDocumentAdapter 以通过云打印将名册信息发送到打印机。一切都运行良好,直到更改设置以减少文档中的页数。

例如,一张表格适合两张 A4 页,但需要三张 A5 页。云打印开始时默认选择 A4,并生成预览。如果页面尺寸更改为 A5,则会按预期生成包含三页的新预览。如果随后将页面尺寸更改回 A4,云打印会显示消息“抱歉,这不起作用。请重试。” 并且必须退出。

这似乎正在发生:

  • onLayout() 使用 A4 文档属性调用。LayoutResultCallback.onLayoutFinished() 传递一个设置为 2 的 PrintDocumentInfo pageCount。
  • 正如预期的那样,使用 0-1 的单个 PageRange 调用 onWrite()。
  • 我将纸张尺寸更改为A5。
  • onLayout() 使用 A5 文档属性调用。LayoutResultCallback.onLayoutFinished() 传递的 PrintDocumentInfo pageCount 设置为 3。
  • onWrite() 使用 0-1 的单个 PageRange 进行调用,这是旧的范围
  • onWrite() 被第二次调用,正确的 PageRange 为 0-2。

当旧的 PageRange 大于返回的页数时,这只会导致错误,但为什么 onWrite() 会使用无效的 PageRange 被调用呢?

我注意到我的设备上的许多应用程序只是缩放输出,以便页数在不同设置之间不会发生变化。他们这样做是因为这个问题吗?

public class PrintAdapter extends PrintDocumentAdapter {

    private static final String TAG = "PrintAdapter";

    private PrintedPdfBuilder mPrintedPdfBuilder;
    private int mPages;

    public PrintAdapter(PrintedPdfBuilder printedPdfBuilder) …
Run Code Online (Sandbox Code Playgroud)

printing pdf android

5
推荐指数
1
解决办法
3860
查看次数

Xamarin Forms 将字符串数组绑定到 BindableLayout 仅在 Xaml 热重载后有效

我在将 string[] 的值绑定到 BindableLayout 的 DataTemplate 时遇到问题。我在 Shell 弹出模板的 AboutPage 中重新创建了该问题。

关于页面.xaml

<ContentPage.BindingContext>
    <vm:AboutViewModel />
</ContentPage.BindingContext>

<StackLayout VerticalOptions="Center"
             Padding="20"
             BindableLayout.ItemsSource="{Binding Data}">
    <BindableLayout.ItemTemplate>
        <DataTemplate>
            <Label FontSize="Large"
                   Text="{Binding .}"
                   BackgroundColor="PowderBlue"/>
        </DataTemplate>
    </BindableLayout.ItemTemplate>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)

关于ViewModel.cs

namespace App2.ViewModels
{
    public class AboutViewModel : BaseViewModel
    {
        private string[] _data;
        public string[] Data
        {
            get
            {
                return _data;
            }
            set
            {
                if (_data != value)
                {
                    _data = value;
                    OnPropertyChanged();
                }
            }
        }
        public AboutViewModel()
        {
            Title = "About";
            Data = new string[] { "One", "Two", …
Run Code Online (Sandbox Code Playgroud)

c# arrays binding xamarin.forms.shell

5
推荐指数
1
解决办法
1000
查看次数

标签 统计

android ×1

arrays ×1

binding ×1

c# ×1

pdf ×1

printing ×1

xamarin.forms.shell ×1