关于一些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满强大的。