GVKun编程网logo

ubuntu 命令 libreoffice --convert-to html input.html word2html(ubuntu 命令大全)

3

此处将为大家介绍关于ubuntu命令libreoffice--convert-tohtmlinput.htmlword2html的详细内容,并且为您解答有关ubuntu命令大全的相关问题,此外,我们还

此处将为大家介绍关于ubuntu 命令 libreoffice --convert-to html input.html word2html的详细内容,并且为您解答有关ubuntu 命令大全的相关问题,此外,我们还将为您介绍关于之间的区别、Angular - 在接收@Input 时,如何在执行@Input 逻辑之前等待子组件中的其他异步数据、C# convert json to datatable,convert list to datatable、c# – Convert.ToBase64String / Convert.FromBase64String和Encoding.UTF8.GetBytes / Encoding.UTF8.GetString之间的区别的有用信息。

本文目录一览:

ubuntu 命令 libreoffice --convert-to html input.html word2html(ubuntu 命令大全)

ubuntu 命令 libreoffice --convert-to html input.html word2html(ubuntu 命令大全)

命令成功确实生成一个html,但是网页中的图片没了,只有一个html文件,这怎么办
求大神指点,搞了快2天了,泪哭‘’‘’

回复内容:

命令成功确实生成一个html,但是网页中的图片没了,只有一个html文件,这怎么办
求大神指点,搞了快2天了,泪哭‘’‘’

不知道你的文件是什么样的?我本地创建了一个DOC文件(some.DOC),里面插入了一张图片,执行命令libreoffice --convert-to html some.DOC,图片被编码成了base64,这样就不会再以图片形式存在了

<input type ='button'/>和<input type ='submit'/>之间的区别

之间的区别

没有一个愚蠢的问题,所以我们开始:<input type=''button'' />和之间有什么区别<input type=''submit'' />

答案1

小编典典

<input type="button" />按钮不会提交表单-
默认情况下,它们不会执行任何操作。它们通常与JavaScript一起作为AJAX应用程序的一部分使用。

<input type="submit"> 按钮会提交用户单击时所在的表单,除非您使用JavaScript另行指定。

Angular - 在接收@Input 时,如何在执行@Input 逻辑之前等待子组件中的其他异步数据

Angular - 在接收@Input 时,如何在执行@Input 逻辑之前等待子组件中的其他异步数据

如何解决Angular - 在接收@Input 时,如何在执行@Input 逻辑之前等待子组件中的其他异步数据?

问题介绍

我有 button-address 子组件,它 onInit 加载 mapItems 列表:

    ngOnInit() {
        this.refreshDataList();
    }

    protected refreshDataList(): void {
        this.subscription = this.getDataList()
            .pipe(
                switchMap((result: AddressModel[]) => {
                    this.dataSource.data = [...result].map((d) => {
                        return {
                            address: d,selected: this.selectedItems
                                ? this.selectedItems.some(
                                      (it) =>
                                          it.address.pointName ===
                                              d.pointName && it.selected
                                  )
                                : false,};
                    });
                    this.sortList(this.dataSource.data);

                    return this.preSelectUserPreferencesPOIs();
                })
            )
            .subscribe();
    }

    protected getDataList(): Observable<AddressModel[]> {
        return this.store.pipe(select(selectZoi));
    }

this.dataSource.data 的值在 switchMap() 操作符内设置。这个值很重要,因为稍后用户将从列表中选择元素。所以我会监听用户的点击事件,找到this.dataSource.data的正确元素并更新选中的项目。

我的问题是,当应用程序启动时,我还会收到来自另一个流的 @Input,其目的是以编程方式选择 this.dataSource.data:

    @input()
    set proximityReportPoiZoi(poiZoi: ProximityReportPoiZoi) {
        this.toggleSelectedPoiZoi(poiZoi.id);
    }

    protected toggleSelectedPoiZoi(poiZoiId: string) {
        const addressZoneselectionModel = this.dataSource.data.find(
            (item) => poiZoiId === item.address.id
        );
        const address = addressZoneselectionModel.address;
        if (addressZoneselectionModel.selected) {
            addressZoneselectionModel.selected = false;
            this.showHidePoiZoi(address,false);
        } else {
            addressZoneselectionModel.selected = true;
            this.showHidePoiZoi(address,true);
        }
    }

越野车

但是,由于对 store 的请求需要一些时间,当 @Input(顺便说一下也是一个 observable)被组件接收到时, toggleSelectedPoiZoi() 中的代码找不到合适的项目,因为 this.dataSource.data 仍然是空的:

        const addressZoneselectionModel = this.dataSource.data.find(
            (item) => poiZoiId === item.address.id
        );

问题

如何让我的 @input() 在执行 this.toggleSelectedPoiZoi() 之前等待组件加载 this.dataSource.data 的数据? 此问题仅在应用初始化期间发生。

我尝试过的事情

  1. 等待 observable 加载数据
    @input()
    set proximityReportPoiZoi(poiZoi: ProximityReportPoiZoi) {
            const updatePoiZoiSeletion = async () => {
                await this.refreshDataList().toPromise();
                this.toggleSelectedPoiZoi(poiZoi.id);
            }
            updatePoiZoiSeletion();
    }

但它永远不会使用 this.toggleSelectedPoiZoi() 方法执行以下行。如果我将 .toPromise() 更改为 .subscribe()this.dataSource.data 的值仍然是一个空数组,因此没有项可以选择。

  1. ngOnChanges

然而没有成功,虽然我可以监听 @Input 值的变化,但我无法监听 this.dataSource.data 的变化。 >

  1. 通过在父组件的稍后阶段在 ngAfterViewInit() 循环中订阅它来获取 @input() 的值。

Angular 抱怨,因为 @Input 是通过模板传递的,所以 proximityReportPoiZoi$ 属性的值在父组件初始化后发生了变化。查看父模板:

        <app-button-address 
            [proximityReportPoiZoi]="(proximityReportPoiZoi$ | async)"
        ></app-button-address> 

事先非常感谢任何帮助:)

解决方法

记录。对于 Angular 生命周期钩子事件序列,ngOnChanges 将在 ngOnInit 之前触发。但是在 ngOnChanges 中调用整个订阅可能会导致性能问题,因为从 docs:

请注意,这种情况非常频繁,因此您在此处执行的任何操作都会显着影响性能。

所以您可以做的是直接在订阅中使用 @Input 内的 ngOnInit 变量。

export someComponent implements OnInit {
  _poiZoi: ProximityReportPoiZoi;

  @Input()
  set proximityReportPoiZoi(poiZoi: ProximityReportPoiZoi) {
    this._poiZoi = poiZoi;
  }

  ngOnInit() {
    this.refreshDataList();
  }

  protected refreshDataList(): void {
    this.subscription = this.getDataList().pipe(
      switchMap((result: AddressModel[]) => {
        this.dataSource.data = [...result].map((d) => {
          return {
            address: d,selected: this.selectedItems 
              ? this.selectedItems.some((it) =>
                  it.address.pointName === d.pointName && it.selected
                ) 
              : false,};
        });
        this.sortList(this.dataSource.data);
        this.preSelectUserPreferencesPOIs();
      }),map(() => this._poiZoi.id)
    )
    .subscribe({
      next: (poiZoiId: any) => this.toggleSelectedPoiZoi(poiZoi.id),error: (error: any) => console.log(error)
    });
  }
}
,

我提出了一种基于纯 RxJs 逻辑的方法,它不依赖于 Angular 生命周期方法。

如果我没理解错,你有 2 个流

  • 源为 this.getDataList() 且其通知用于设置 this.dataSource.data 的流 - 我们将此流称为 obs_1
  • 发出值的流,该值传递给 proximityReportPoiZoi 输入并用于选择值列表的初始值 - 我们将此流称为 obs_2立>

这里的问题是确保我们按照严格的时间顺序执行以下步骤

  • 接收来自obs_2
  • 的通知
  • subscribeobs_1 并处理其通知
  • 在处理obs_1的通知后处理obs_2的通知。

就纯 rxJs 逻辑而言,这是使用 concatMap 的好例子。

逻辑可能是这样的

obs_2.pipe(
  concatMap(res_2 => obs_1.pipe(
      map(res_1 => ([res_1,res_2))
    )
  )
).subscribe(
  ([addressModelArray,poiZoi]) => {
     setDataSourceData(addressModelArray) // i.e. the logic in switchMap
     toggleSelectedPoiZoi(poiZoi.id);
  }
)

您可以尝试在您的 button-address 组件中实现这种方法。这可以通过将 obs_2 实现为在 Subject set 方法中发出的 proximityReportPoiZoi 来实现。

我将使用的方法是尝试将所有这些逻辑隔离到一个 service 中,该 button-address 被注入到 service 组件中。此 pipe 知道 obs_1obs_2,因此可以在 public listAndSelectedVal$ = obs_2.pipe( concatMap(res_2 => obs_1.pipe( // apply some logic to filter the default value filter(res_1 => res_1.length > 0),map(res_1 => ([res_1,res_2)) ) ) ) 中实现此逻辑并将其公开为公共 API Observable,类似这样

button-address

listAndSelectedVal$ 组件需要订阅 tp combineLatest 才能执行其工作。

如果 obs_1obs_2 在完成之前可以发出多次,也可以探索 int n = 24; Function<Integer,String> f = x -> x % 2 == 1 || (x >= 6 && x <= 20) ? "Weird" : "Not Weird"; System.out.println(f.apply(n)); 的使用。

这种方法会使测试更容易,因为测试服务比测试组件更简单。

C# convert json to datatable,convert list to datatable

C# convert json to datatable,convert list to datatable

1 static DataTable ConvertJsonToTable(string jsonValue)
2         {
3             DataTable dt = (DataTable)JsonConvert.DeserializeObject(jsonValue, typeof(DataTable));             
4             return dt;          
5         }
static DataTable ConvertListToDataTable<T>(List<T> dataList)
        {
            DataTable dt = new DataTable();
            PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
            for(int i=0;i<props.Count;i++)
            {
                PropertyDescriptor prop = props[i];
                dt.Columns.Add(prop.Name, prop.PropertyType);
            }
            object[] values = new object[props.Count];
            foreach(T item in dataList)
            {
                for(int i=0;i<values.Length;i++)
                {
                    values[i] = props[i].GetValue(item);
                }
                dt.Rows.Add(values);
            }
            return dt;
        }
static DataTable ConvertTToDT<T>(List<T> dataList)
        {
            if(dataList==null || !dataList.Any())
            {
                return null;
            }

            DataTable dt = new DataTable();
            PropertyInfo[] pis = typeof(T).GetProperties();
            for(int i=0;i<pis.Count();i++)
            {
                dt.Columns.Add(pis[i].Name, pis[i].PropertyType);
            }

            object[] valuesArr = new object[pis.Count()];
            foreach(var data in dataList)
            {
                for(int i=0;i<pis.Count();i++)
                {
                    valuesArr[i] = pis[i].GetValue(data);
                }
                dt.Rows.Add(valuesArr);
            }             
            return dt;
        }

c# – Convert.ToBase64String / Convert.FromBase64String和Encoding.UTF8.GetBytes / Encoding.UTF8.GetString之间的区别

c# – Convert.ToBase64String / Convert.FromBase64String和Encoding.UTF8.GetBytes / Encoding.UTF8.GetString之间的区别

我目前正在学习.NET中的对称加密技术.我写了一个演示如下:
private byte[] key = Encoding.ASCII.GetBytes("abcdefgh");
    private byte[] IV = Encoding.ASCII.GetBytes("hgfedcba");
    private byte[] encrypted;

    public Form1()
    {
        InitializeComponent();

    }

    private void btnEncrypt_Click(object sender,EventArgs e)
    {
        this.textBox2.Text = this.Encrypt(this.textBox1.Text);
    }

    private void btnDecrypt_Click(object sender,EventArgs e)
    {
        this.textBox3.Text = this.Decrypt(this.textBox2.Text);
    }

    private string Encrypt(string plainText)
    {
        try
        {
            using (DESCryptoServiceProvider crypto = new DESCryptoServiceProvider())
            {
                crypto.Key = this.key;
                crypto.IV = this.IV;

                ICryptoTransform transform = crypto.CreateEncryptor(crypto.Key,crypto.IV);

                using (MemoryStream stream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(stream,transform,CryptoStreamMode.Write))
                    {
                        using (StreamWriter writer = new StreamWriter(cryptoStream))
                        {
                            writer.Write(plainText);
                        }

                        encrypted = stream.ToArray();
                    }
                }
            }

            return Convert.ToBase64String(encrypted);
        }
        catch (Exception)
        {

            throw;
        }
    }

    private string Decrypt(string cipherText)
    {
        try
        {
            string plainText = string.Empty;

            using (DESCryptoServiceProvider crypto = new DESCryptoServiceProvider())
            {
                crypto.Key = this.key;
                crypto.IV = this.IV;

                ICryptoTransform transform = crypto.CreateDecryptor(crypto.Key,crypto.IV);

                using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(cipherText)))
                {
                    using (CryptoStream cryptoStream = new CryptoStream(stream,CryptoStreamMode.Read))
                    {
                        using (StreamReader reader = new StreamReader(cryptoStream))
                        {
                            plainText = reader.ReadToEnd();
                        }
                    }
                }
            }

            return plainText;
        }
        catch (Exception)
        {

            throw;
        }
    }

一切都按预期工作.但如果我更换

return Convert.ToBase64String(encrypted);

using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(cipherText)))

return Encoding.UTF8.GetString(encrypted);

using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(cipherText)))

我在CryptoStream System.NotSupportedException中有错误.在诊断代码之后,我发现Encoding.UTF8.GetBytes(cipherText)具有比加密更多的字节

那么使用Convert.From / ToBase64String和Encoding.UTF8.GetBytes / GetString有什么区别呢?

解决方法

UTF-8是一个字符编码.它将Unicode码点(字符)编码成字节.

Base64是二进制到文本编码.它将字节编码为文本.

在这种情况下你需要后者.

Encoding.UTF8.GetString解码一个UTF-8编码的字节数组,如果存在无效的字节序列(这很有可能是像密文一样给它随机字节),那么它是有损的.

关于ubuntu 命令 libreoffice --convert-to html input.html word2htmlubuntu 命令大全的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于之间的区别、Angular - 在接收@Input 时,如何在执行@Input 逻辑之前等待子组件中的其他异步数据、C# convert json to datatable,convert list to datatable、c# – Convert.ToBase64String / Convert.FromBase64String和Encoding.UTF8.GetBytes / Encoding.UTF8.GetString之间的区别等相关内容,可以在本站寻找。

本文标签: