Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 编写PDF转换器的最快API?_Html_Pdf_Pdflib - Fatal编程技术网

Html 编写PDF转换器的最快API?

Html 编写PDF转换器的最快API?,html,pdf,pdflib,Html,Pdf,Pdflib,有太多的API或SDK可以让开发人员编写PDF转换器。 PDFLib、TCPDF、DOMPDF等 也有现成的PDF转换器,但它们没有我想要的所有选项。所以我想最好还是自己写一个转换器 如果你自己坐下来进行HTML到PDF转换,大约需要多长时间?它需要您在到达任何地方之前编写一个完整的HTML解析器吗 我的应用程序需要的主要功能是自定义文档大小,以及包含文本和图像的绝对定位div。没有iFrame。以下是您可能应该如何考虑此任务-您不是在将HTML转换为PDF,而是在编写一个将HTML转换为PDF

有太多的API或SDK可以让开发人员编写PDF转换器。 PDFLib、TCPDF、DOMPDF等

也有现成的PDF转换器,但它们没有我想要的所有选项。所以我想最好还是自己写一个转换器

如果你自己坐下来进行HTML到PDF转换,大约需要多长时间?它需要您在到达任何地方之前编写一个完整的HTML解析器吗


我的应用程序需要的主要功能是自定义文档大小,以及包含文本和图像的绝对定位div。没有iFrame。

以下是您可能应该如何考虑此任务-您不是在将HTML转换为PDF,而是在编写一个将HTML转换为PDF的渲染器

因此,如果您没有HTML呈现程序的外壳,那么这是您的第一步。它应该接受HTML,并且给定一个“窗口大小”将调用一组方法,您可以实现这些方法来呈现基本体(绘制线、放置图像、放置文本、放置链接等)。毫无疑问,你会遇到这样一个问题:HTML页面没有固定的高度,而PDF页面有固定的高度

接下来,您将需要一个像样的PDF后端。我所说的体面,是指它不会在大量图像上爆炸,以理智的方式处理资源,等等。它还应该具有合理的Unicode支持,这样,如果您向它发送Unicode字符串,它将自动执行PDF映射以正确呈现它,这样您就不必手动执行该操作(相信我,您不会这样做)。还有一些链接——你打算用这些链接做什么?理想情况下,您应该跟踪它们,并确定它们是否转到同一文档的特定子部分(这将成为与转到视图操作的链接),或者它们是否转到web(这将成为与打开URI操作的链接),或者,如果您正在转换多个文档,您是否应该在文档和相对URI上有一个基本URI,或者它是否应该是一个文件交叉链接等等

此外,还有导航和文档结构的概念。理论上,您应该能够抓取
和其他标题标记,并为每个标记构建一个包含goto view操作的大纲树

您应该注意的其他事项-PDF模型对大型文档组件(如图像、字体、巨像空间等)采用基于资源的方法,以便它们可以共享。考虑到这一点,构建渲染器通常会生成更好的PDF并使用更少的内存。如果您的PDF生成器允许这样做,那么您应该能够为特定图像创建资源,并尽早将其写入文档(或临时文件),然后在页面上放置资源句柄时引用它。对同一图像的其他引用将使用句柄,并且不会占用文件中的更多空间。字体也是一样的——如果你使用的是特定的字体,那么提前了解它们会有帮助,并且有一个引擎可以在使用时自动对它们进行子集划分


如果你有HTML渲染器和PDF后端,那么这个任务应该需要你两周,也许三周,再次假设您的HTML前端和PDF后端是合理的一半。

以下是您可能应该如何考虑这项任务-您不是在将HTML转换为PDF,而是在编写一个将HTML转换为PDF的渲染器

因此,如果您没有HTML呈现程序的外壳,那么这是您的第一步。它应该接受HTML,并且给定一个“窗口大小”将调用一组方法,您可以实现这些方法来呈现基本体(绘制线、放置图像、放置文本、放置链接等)。毫无疑问,你会遇到这样一个问题:HTML页面没有固定的高度,而PDF页面有固定的高度

接下来,您将需要一个像样的PDF后端。我所说的体面,是指它不会在大量图像上爆炸,以理智的方式处理资源,等等。它还应该具有合理的Unicode支持,这样,如果您向它发送Unicode字符串,它将自动执行PDF映射以正确呈现它,这样您就不必手动执行该操作(相信我,您不会这样做)。还有一些链接——你打算用这些链接做什么?理想情况下,您应该跟踪它们,并确定它们是否转到同一文档的特定子部分(这将成为与转到视图操作的链接),或者它们是否转到web(这将成为与打开URI操作的链接),或者,如果您正在转换多个文档,您是否应该在文档和相对URI上有一个基本URI,或者它是否应该是一个文件交叉链接等等

此外,还有导航和文档结构的概念。理论上,您应该能够抓取
和其他标题标记,并为每个标记构建一个包含goto view操作的大纲树

您应该注意的其他事项-PDF模型对大型文档组件(如图像、字体、巨像空间等)采用基于资源的方法,以便它们可以共享。考虑到这一点,构建渲染器通常会生成更好的PDF并使用更少的内存。如果您的PDF生成器允许这样做,那么您应该能够为特定图像创建资源,并尽早将其写入文档(或临时文件),然后在页面上放置资源句柄时引用它。对同一图像的其他引用将使用句柄,并且不会占用文件中的更多空间。字体也是一样的——如果你使用的是特定的字体,那么提前了解它们会有帮助,并且有一个引擎可以在使用时自动对它们进行子集划分


如果您有HTML呈现程序和PDF后端,那么这项任务将花费您两周,也许三周,再次假设您的HTML前端和PDF后端是合理的一半。

需要多长时间?一旦你给我一个规格,我可能需要几周的时间来估计我需要多长时间来完成。这取决于你想支持HTML5,Iframes,我的意思是多长时间