清泉在山 發表於 2022-4-6 17:12:00

delphi SynPDF 介绍

<h1 id="synpdf"><strong>SynPDF</strong></h1>
<h2 id="介绍">介绍</h2>
<h3 id="概述">概述</h3>
<p>Synopse PDF 引擎是一个功能齐全的<em>开源</em> PDF 文档创建库,用于 Delphi 和 FPC,嵌入在一个单元中。</p>
<p>被用于 <em>mORMot</em> 框架 中,用于从生成的报告创建 PDF 文件。如果下载整个 <em>mORMot</em> 源代码,则不需要这个单独的包。</p>
<h3 id="特征">特征</h3>
<ul>
<li>纯 Delphi 代码,没有外部 .dll,并且为您的可执行文件添加了非常小的代码大小;</li>
<li>针对Delphi 6及以上版本,包括Unicode版本的Delphi和最新版本的FPC,适用于Win32和Win64平台,并提供完整的源代码;</li>
<li>包括大多数矢量绘图命令,包括文本、线条或曲线;</li>
<li>渲染位图和图元文件(即使是大多数具有剪辑和区域功能的 .emf 文件);</li>
<li>引入元数据、书签和大纲信息;</li>
<li>生成非常小的 .pdf 文件;</li>
<li>可选择使用 40 位或 128 位密钥加密和保护 .pdf 内容;</li>
<li>以低内存开销快速生成文件(用数千页测试);</li>
<li>访问一个真正的 VCL TCanvas 实例来创建 PDF 内容;</li>
<li>可选择嵌入 True Type 字体子集;</li>
<li>Unicode 就绪,即使使用 Unicode 之前的 Delphi 版本,包括高级 Uniscribe 字形底纹和字体回退;</li>
<li>可以发布PDF/A-1存档文件;</li>
<li>用于许多应用程序,并定期进行增强,主要来自活跃的最终用户;</li>
<li>根据 MPL/GPL/LGPL 三项许可 获得许可。</li>
</ul>
<h2 id="调用方法">调用方法</h2>
<p>事实上,至少有三种使用该库生成 pdf 的方法:</p>
<ul>
<li>直接调用 由<code>TPdfDocument</code>实例发布的<code>TPdfCanvas</code>——这是最直接但也更困难的渲染方式;</li>
<li>使用常规 VCL <code>TCanvas</code> 方法 由于 <code>TMetaFile</code> 支持 - 参见 <code>TPdfDocumentGDI.VCLCanvas</code> 属性和 <code>TPdfCanvas.RenderMetaFile</code> 方法 - 如果你想使用“常规”<code>TCanvas</code> 方法来绘制页面内容,这很容易,特别是如果您有一些现有的打印代码;</li>
<li>使用提供的 <code>mORMotReport.pas</code> 单元的 <code>TGDIPages</code>(从我们的 <em>mORMot</em> ORM/SOA 框架中提取)轻松地从代码创建内容,使用一些面向报告的方法(包括复杂的 rtf 和 <code>TGDIPages.AppendRichEdit</code>) - 对于基本的报告功能,它几乎是解决方案。</li>
</ul>
<p>对于大多数应用程序,首选第 2 和第 3 种方式。</p>
<h2 id="帮助文档">帮助文档</h2>
<p>https://synopse.info/files/html/api-1.18/SynPdf.html</p>
<h2 id="主要类">主要类</h2>
<h3 id="tpdfdocument">TPdfDocument</h3>
<pre><code class="language-delphi">TPdfDocument = class(TObject);
</code></pre>
<p>PDF引擎的主类,处理整个PDF文档。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<h3 id="tpdfdocumentgdi">TPdfDocumentGDI</h3>
<pre><code class="language-delphi">TPdfDocumentGDI = class(TPdfDocument);
</code></pre>
<p>使用 GDI 命令创建PDF文档的类,此类允许使用VCL标准<code>Canvas</code>类,还直接从 <code>TMetaFile</code> 内容处理PDF创建。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<h3 id="tpdfpage">TPdfPage</h3>
<pre><code class="language-delphi">TPdfPage = class(TPdfDictionary);
</code></pre>
<p>PDF页面。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<h3 id="tpdfinfo">TPdfInfo</h3>
<pre><code class="language-delphi">TPdfInfo = class(TPdfDictionaryWrapper);
</code></pre>
<p>PDF文档信息字段的字典包装类,所有值都使用通用VCL字符串类型,如有必要,将被编码为Unicode。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<h3 id="tpdfoutlineentry">TPdfOutlineEntry</h3>
<pre><code class="language-delphi">TPdfOutlineEntry = class(TPdfDictionaryWrapper);
</code></pre>
<p>PDF文档中的大纲条目。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p>
<h3 id="tpdfencryption">TPdfEncryption</h3>
<pre><code class="language-delphi">TPdfEncryption = class(TObject);
</code></pre>
<p>处理PDF安全性的抽象类。</p>
<p><strong>unit</strong></p>
<p>SynPdf</p><br><br>
来源:https://www.cnblogs.com/txgh/p/16107474.html
頁: [1]
查看完整版本: delphi SynPDF 介绍