当前位置: 首页 > 知识库问答 >
问题:

Spire doc在从docx转换为pdf时丢失格式

楚修为
2023-03-14

我正在编写一个系统,它可以为不同的人修改一个模板字母(通过OpenXml Wordprocessing),然后将它们转换成pdfs进行打印。然而,在转换为pdf时,地址丢失了它从正常地址线的间隔切换

mrs1 Test2命名2
,其
位于
向下
INR32M

 <w:r>
    <w:t>Mrs</w:t>
  </w:r>
  <w:r>
    <w:br />
    <w:t>test</w:t>
  </w:r>
  <w:r>
    <w:br />
    <w:t>value</w:t>
  </w:r>
  <w:r>
    <w:br />
    <w:t>for</w:t>
  </w:r>
  <w:r>
    <w:br />
    <w:t>the</w:t>
  </w:r>
  <w:r>
    <w:br />
  </w:r>
</w:p>
<w:r>
    <w:t>
      <w:r>
        <w:t> mrs1 Test2 Name2<w:br /></w:t>
      </w:r>
      <w:r>
        <w:t> that<w:br /></w:t>
      </w:r>
      <w:r>
        <w:t> house<w:br /></w:t>
      </w:r>
      <w:r>
        <w:t> down<w:br /></w:t>
      </w:r>
      <w:r>
        <w:t> inr32m<w:br /></w:t>
      </w:r>
    </w:t>
  </w:r>
private void ConvertToPdf()
    {
        try
        {
            for (int i = 0; i < listOfDocx.Count; i++)
            {
                CurrentModalText = "Converting To PDF";
                CurrentLoadingNum += 1;

                string savePath = PdfTempStorage + i + ".pdf";
                listOfPDF.Add(savePath);

                Spire.Doc.Document document = new Spire.Doc.Document(listOfDocx[i], FileFormat.Auto);
                document.SaveToFile(savePath, FileFormat.PDF);
            }

        }
        catch (Exception e)
        {
            throw e;
        }
    }
 private string ReplaceAddressBlock(string[] address, string localDocText)
    {
        //This is done to force the array to have 6 indicies (with one potentially being empty
        string[] addressSize = new string[6];
        address.CopyTo(addressSize, 0);
        //defines the new save location of the object

        //add an xml linebreak to each piece of the address
        var addressString ="";
        var counter = 0;
        foreach (var t in address)
        {
            if (counter != 0)
            {
                addressString += "<w:r><w:t> ";
            }

            addressString += t + "<w:br />";
            if (counter != 4)
            {
                addressString += "</w:r></w:t> ";
            }
            counter += 1;

        }

        //look for the triple pipes then replace everything in them and them with the address
        var regExp = @"(\|\|\|).*(\|\|\|)";
        Regex regexText = new Regex(regExp, RegexOptions.Singleline);
        localDocText = regexText.Replace(localDocText, addressString);
        return localDocText;
    }

localDocText是完整文档的副本

我需要它将地址输出为正常格式,我不确定是什么导致了这一点

共有1个答案

方楷
2023-03-14

使用换行符不起作用,不得不将其改为段落样式。感谢凯文给我这个提示。下面是生成地址的更新代码。

        /// <summary>
/// This replaces the address block
/// </summary>
/// <param name="address">The address array </param>
/// <param name="localDocText">the text we want to modify</param>
/// <returns></returns>
private string ReplaceAddressBlock(string[] address, string localDocText)
{
    //This is done to force the array to have 6 indicies (with one potentially being empty
    string[] addressSize = new string[6];
    address.CopyTo(addressSize, 0);
    //defines the new save location of the object

    //add an xml linebreak to each piece of the address
    var addressString ="";
    var counter = 0;
    foreach (var t in address)
    {
        if (counter != 0)
        {
            addressString += " <w:p> <w:r><w:t> ";
        }

        addressString += t ;
        if (counter != 4)
        {
            addressString += "</w:t> </w:r></w:p> ";
        }
        counter += 1;

    }

    //look for the triple pipes then replace everything in them and them with the address
    var regExp = @"(\|\|\|).*(\|\|\|)";
    Regex regexText = new Regex(regExp, RegexOptions.Singleline);
    localDocText = regexText.Replace(localDocText, addressString);
    return localDocText;
}
 类似资料:
  • 我需要将docx转换成pdf,我正在使用docx4j-3.2.1库。生成的pdf输出中有一些格式丢失。 可以清楚地看到,有两个值得注意的问题。一个是页眉中图像的大小/尺寸,在生成的pdf中减小。它没有像输入中那样覆盖整个标题区域。 其次是字体大小似乎发生了变化(或者字体本身发生了变化) 我如何在生成的pdf中保留标题上原始图像的尺寸?有没有一些方法可以用来微调docx到pdf的转换? 任何帮助都非

  • 我已经使用docX库创建了一个docX,并在头部添加了一个图像。但是,当我使用spire.doc库将docX转换为PDF时,图像丢失了。知道为什么吗?下面是我的代码:

  • 我对一个不太通用的需求有一个通用的问题。 我必须将一个Excel文件转换成PDF格式,但必须保留Excel文件中每个单元格的所有格式。不允许更改。比如,如果一个单元格被格式化为Currence/Accounting,那么默认情况下负值会显示在圆括号中,例如(8.5),但从Java读取时,该值是-8.5。对于数字单元格,值为0,但显示为连字符(-)。类似地,对于其他格式类型,显示也会发生变化。 如有

  • 我在运行时生成了一个docx文档,我想将其转换为PDF,而无需实际将文件保存在本地 PdfConverter无效。我怎样才能做到这一点?

  • 我花了大量的时间试图确定到底出了什么问题,使用LibreOffice将pdf转换为docx(以及doc转换为docx)的代码。 我使用了两个windows run接口来测试运行一些我发现相关的代码,也尝试了python,但两者都不起作用。 我在Windows上安装了LibreOffice v6.0.2。 我一直在使用此代码的变体尝试将某些pdf文件转换为与特定pdf文件不相关的docx: 我已经在

  • 我正在努力寻找用Python将PDF文件转换为.docx文件的方法。 我见过其他与此相关的帖子,但在我的情况下,它们似乎都不正常。 我特别使用 这给了我输出[1],但在我的文件夹中找不到任何.docx文档。 我已经安装了LibreOffice 5.3。 有什么线索吗? 提前谢谢你!