PDF文件生成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDF文件生成相关的知识,希望对你有一定的参考价值。

参考知识1

PDF(Portable Document Format)是Adobe公司发明的一种文档格式,由于其具有很多独特的优点而被广泛使用。如pdf可内嵌字体,这样就可以避免客户端没有安装字体而显示不一致;如pdf的图片和文字使用了矢量图,这样就可以随意放大而不会失真;另外pdf的加密和防篡改也是一大亮点,是向外发布资料的首选格式

一个未经修改的PDF文件从头到尾主要包括4个部分,分别是:文件头、对象集合、交叉引用表、文件尾。其中:

%PDF-1.4

1 0 obj
<</Producer (Skia/PDF m92)>>
endobj

xref
0 83
0000000000 65535 f
0000000015 00000 n
0000010954 00000 n

trailer
<</Size 83
/Root 11 0 R
/Info 1 0 R>>
startxref
50152
%%EOF

iOS可以通过UIGraphicsPDFRenderer类生成PDF,其本身的api非常简单:一个init方法,一个写入文件的方法,一个导出data数据的方法

用于构造UIGraphicsPDFRenderer,第一个参数是pdf的尺寸,第二个参数可以设置pdf文件的元数据

生成pdf并写入到指定URL

生成pdf并返回Data

绘制PDF主要依靠 UIGraphicsPDFRendererContext ,这是UIGraphicsRendererContext的子类,所以iOS是使用CoreGraphics的draw api进行pdf绘制的

除了CoreGraphics的相关api之外,最重要的是 func beginPage() ,用于创建一页pdf

安卓可以使用 PdfDocument 类生成PDF,和iOS类似,采用了系统的绘图api( Canvas ),对于开发者来说学习成本很低。但是安卓的坑比较多,建议采用iText、PDFBox等第三方实现。如drawText不支持多行文本,要通过较复杂的操作来实现;某些系统对文档内的图片不进行压缩,导致生成的pdf比正常的大10多倍

flutter可以使用 pdf库 生成pdf,该库实现了一套自己的widgets,开发者可以像写普通widgets一样去写pdf;另外还提供了table相关的api,不用手动画表格,还支持自动分页,非常友好。

以上是关于PDF文件生成的主要内容,如果未能解决你的问题,请参考以下文章

如何在Linux下生成PDF文件?

PDF文件生成

[多个双层pdf文件合并]什么是双层PDF?如何用高拍仪生成双层PDF文件?

winform 把窗口上的全部信息生成PDF文件显示??

TCPDF 怎么能批量生成pdf文件???

如何合并物理文件(pdf)和生成的文件(pdf)并将它们输出到浏览器?