关于一些pdf撞的南墙(.net)

 1.spire pdf 生成的pdf也挺方便的。而且优点是冰蓝科技 ice-blue会给你免费的key可以去掉水印, 我们的pdf文件需要发送到customs识别,

但是在我这遇到的问题是,customes回馈的信息是“你们提供的pdf格式是错误的,也就是并不是真正意义上的pdf,虽然表面看起来没啥差别。”

所以只能弃用。

 

2.找寻了蛮久,发现Microsoft office组件。很激动很开心的拿去试,在控制台程序测试的很6.customes那边也是识别的,超级开心激动。然而:

部署的时候傻眼了,先是无法找到com工厂注册的类之类的 ,搜寻结果就按照人家的一步步操作,包括安装office组件, 包括设置各种uesr权限,一点卵用没有,后来才发现还有office版本问题,什么鬼注册表之类的。

毕竟wps不收费,所以一开始电脑上是wps.装了office之后,彻底乱套了。貌似wps会修改掉你的注册表,所以一路全是渣渣问题,再说了,你要给服务器部署的话也是要安装office而且要去配置的。就被打败了,这样的应该不是最佳方案。

 

3.又找了很久,发现了aspose。用起来还是很不错,也不需要其他乱七八糟的,只需要个nuget packages. 而且custome回馈也是识别的。 但是有水印啊啊啊,网络找的key都是要么需要升级,要么让你订阅之前的产品。我还在研究中。。。。

 

迫切希望有大神可以给出好的建议和方案。

4.在同事共同讨论的结果下,发现了Itextsharp.继续研究,希望可以。。。真的太无助了。

遇到的问题及解决方案:都是针对itextSharp

中文不显示系列:
          

  //中文字体显示问题
  BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
  PdfPCell cell=new PdfPCell(new Phrase(dt.Rows[i][j].ToString(),new Font(baseFont)));

  

 //设置行宽
 int[] widths = new int[] { 5, 22, 20, 10, 12, 14 };//三列列宽不同若果是浮点数需要加f
 table.SetWidths(widths);

  一定要注意列的值。

 //合并行
                    if (i == dt.Rows.Count - 1)
                    {
                        if (j == 0)
                        {
                            cell.Colspan = 2;
                            j++;
                        }
                        else if (j==2)
                        {
                            cell.Colspan = 3;
                            j += 2;
                        }

                    }
                    table.AddCell(cell);
                  
//加粗 字体大,居中
 Paragraph paragraph1=new Paragraph(new Chunk(" 销 售 合 同",new Font(baseFont,12, Font.BOLD)));
 paragraph1.Alignment = Rectangle.ALIGN_CENTER;
        

  

  其他的就可以参考一些文档,目前这个是用的最好的,虽然资料比较少,他有很多小细节优点,边距可以自己设置,内容超过列宽时会自动换行等等。反正最后操作pdf终于找到方案。itextsharp满强大的。

 

 

posted @ 2019-07-22 11:36  学海无涯,赤子之心  阅读(328)  评论(0编辑  收藏  举报