neohope / UrlToPdf

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#功能 本工程,是对wkhtmltopdf进行了再次封装,封装语言为c、c#、java。其底层原理为利用Chrome内核对网页进行渲染,然后转换为PDF。

当前wkhtmltox版本为201604013的master,然后打了字符集的补丁,VS2013 MT编译。

#约定

  • 编译时,要么所有项目都使用Multi-Byte字符集,要么都使用Unicode字符集,不允许重叠
  • dll本身已经对字符集(ANSI/Unicode)做了兼容处理
  • 用MD/MDd选项编译本项目,不要使用MT/MTd
  • 为保证兼容性,尽量用c语法,而不是c++语法
  • 为保证兼容性,用VS2013进行编译
  • 一定不可以把Debug版本,发给其他人用,尤其是JNI

#如何调试

  • 调试UrlToPdf.dll、UrlToPdfTest.exe、UrlToPdfCsTest.exe,直接用VS调试就好了
  • 调试UrlToPdf4j,直接用ecplise调试该项目就好了,但dll必须是Release版本的才可以
  • 调试jni调用UrlToPdf.dll的话,需要用附加到java.exe进程的方法,但dll必须是Release版本的才可以

#使用方法说明

  • 一定要包含着两个dll:UrlToPdf.dll wkhtmltox.dll
  • c直接使用UrlToPdf.h头文件及UrlToPdf.lib进行链接
  • c#,直接使用UrlToPdf4CS.cs
  • java,使用UrlToPdf4j.java,并需要用jvm参数-Djava.library.path指定dll路径,JVM与dll位数必须一致

#注意事项

  • EXE、DLL、JVM位数必须一致
  • JNI不可以调用Debug版本的DLL
  • 非IE核心,不兼容ActiveX控件

#问题排查

  • 如果UrlToPdfTest.exe测试程序无法运行,需要安装VS2013的vcredist.msi
  • 如果UrlToPdfCsTest.exe测试程序无法运行,需要安装.netFramework4.0
  • 如果java测试程序无法运行,确认你可以在CMD下执行Java,并且JVM与DLL的位数是一样的,并且UrlToPdfTest.exe可以运行

#已知问题

  • 发现JNI版本,用于Tomcat时,很不稳定。在我的电脑上,发现只有apache-tomcat-6.0.35会比较稳定,但其他电脑上感觉很不稳定。
  • 同样的C#版本,用于IIS时,也不是很稳定
  • 虽然采用了Chrome内核,但网页渲染结果与Chrome有一定区别,可以尝试修改css布局
  • PDF文件乱码时,尝试将文件另存为utf-8格式,可以解决部分问题(是文件编码,不是HTML编码!)

#TO DO

  • 暂无

About

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C# 46.0%Language:C 40.5%Language:C++ 6.2%Language:Java 3.9%Language:HTML 2.0%Language:Pawn 1.0%Language:Batchfile 0.2%Language:ASP.NET 0.1%