delphi PDFium 常用功能
<h1 id="pdfium-常用功能">PDFium 常用功能</h1><h2 id="属性和方法">属性和方法</h2>
<h3 id="tpdfactive">TPdf.Active</h3>
<pre><code class="language-delphi">property Active: Boolean;
</code></pre>
<p>打开或关闭选定的PDF文档。</p>
<h3 id="tpdffilename">TPdf.FileName</h3>
<pre><code class="language-delphi">property FileName: string;
</code></pre>
<p>PDF文件的名称(包含路径)。</p>
<h3 id="tpdfpassword">TPdf.Password</h3>
<pre><code class="language-delphi">property Password: string;
</code></pre>
<p>PDF文件的密码。</p>
<h3 id="tpdfpagenumber">TPdf.PageNumber</h3>
<pre><code class="language-delphi">property PageNumber: Integer;
</code></pre>
<p>当前选择的页面。</p>
<blockquote>
<p><code>PageNumber</code>值必须是1到<code>PageCount</code>之间。</p>
</blockquote>
<h3 id="tpdfpagecount">TPdf.PageCount</h3>
<pre><code class="language-delphi">property PageCount: Integer;
</code></pre>
<p>文档中的总页数。只读属性。</p>
<h3 id="tpdfloaddocument">TPdf.LoadDocument</h3>
<pre><code class="language-delphi">procedure LoadDocument(Data: TMemoryStream);
</code></pre>
<p>从内存中打开并加载PDF文档。</p>
<p><strong>参数</strong></p>
<p><em>Data</em> 内存数据。当文档打开时,内存数据必须保持有效。</p>
<h3 id="tpdfrenderpage">TPdf.RenderPage</h3>
<pre><code class="language-delphi">function RenderPage(Left, Top, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap;
</code></pre>
<p>将页面内容转换为位图。</p>
<p><strong>参数</strong><br>
<em>Left</em> 、<em>Top</em> 左上角坐标</p>
<p><em>Width</em> 、<em>Height</em> 宽度和高度</p>
<p><em>Rotation</em> 页面旋转。</p>
<p><em>Options</em> 页面呈现标志。</p>
<p><em>Color</em> 背景色。</p>
<p><strong>返回值</strong><br>
转换后的位图</p>
<h3 id="trotation">TRotation</h3>
<pre><code class="language-delphi">type TRotation = (ro0, ro90, ro180,ro270);
</code></pre>
<p>PDF 页面旋转。 页面旋转顺时针旋转。</p>
<ul>
<li><em>ro0</em> 无页面旋转</li>
<li><em>ro90</em> 页面顺时针旋转 90 度</li>
<li><em>ro180</em> 页面顺时针旋转 180 度</li>
<li><em>ro270</em> 页面顺时针旋转 270 度</li>
</ul>
<h3 id="trenderoptions">TRenderOptions</h3>
<pre><code class="language-delphi">type TRenderOptions = set of TRenderOption;
</code></pre>
<p>页面呈现标志。</p>
<ul>
<li><em>reAnnotations</em> 渲染注解</li>
<li><em>reLcd</em> 为 LCD 显示优化的文本渲染</li>
<li><em>reNoNativeText</em> 不要使用某些平台上提供的本机文本输出</li>
<li><em>reGrayscale</em> 灰度输出</li>
<li><em>reDebugInfo</em> 设置是否要获取一些调试信息</li>
<li><em>reNoCatchException</em>设置是否要不捕获异常</li>
<li><em>reLimitCache</em> 限制图像缓存大小</li>
<li><em>reHalftone</em> 始终使用半色调进行图像拉伸</li>
<li><em>rePrinting</em> 渲染打印</li>
<li><em>reReverseByteOrder</em> 以相反的字节顺序呈现; 此标志仅在渲染到位图时启用</li>
<li><em>reNoSmoothText</em> 禁用文本上的抗锯齿</li>
<li><em>reNoSmoothImage</em> 禁用图像上的抗锯齿</li>
<li><em>reNoSmoothPath</em> 禁用路径上的抗锯齿</li>
</ul>
<h3 id="tpdfviewactive">TPdfView.Active</h3>
<pre><code class="language-delphi">property Active: Boolean;
</code></pre>
<p>打开或关闭选定的 PDF 页面。</p>
<h3 id="tpdfviewpagenumber">TPdfView.PageNumber</h3>
<pre><code class="language-delphi">property PageNumber: Integer;
</code></pre>
<p>当前选择的页面。</p>
<blockquote>
<p><code>PageNumber</code>值必须是1到<code>PageCount</code>之间。</p>
</blockquote>
<h3 id="tpdfviewpagecount">TPdfView.PageCount</h3>
<pre><code class="language-delphi">property PageCount: Integer;
</code></pre>
<p>文档中的总页数。只读属性。</p>
<h2 id="例子">例子</h2>
<h3 id="浏览pdf文件">浏览PDF文件</h3>
<p>在窗体上放置TPdfView组件<em>PdfView1</em>和TPdf组件<em>Pdf1</em>,并设置<em>PdfView1</em>的<code>Pdf</code>属性指向<em>Pdf1</em></p>
<pre><code class="language-delphi">procedure TForm1.Button1Click(Sender: TObject);
begin
//关闭已打开的PDF文件
Pdf1.Active := False;
//设置打开的PDF文件路径
Pdf1.FileName := 'C:\LargeFile.pdf';
//设置PDF文件密码
Pdf1.Password := '';
//设置打开的页数
PdfView1.PageNumber := 1;
//显示PDF
PdfView1.Active := True;
end;
</code></pre>
<h3 id="加载流中的pdf文件">加载流中的PDF文件</h3>
<p>在窗体上放置TPdfView组件<em>PdfView1</em>和TPdf组件<em>Pdf1</em>,并设置<em>PdfView1</em>的<code>Pdf</code>属性指向<em>Pdf1</em></p>
<pre><code class="language-delphi">procedure TForm1.Button2Click(Sender: TObject);
var
Memory: TMemoryStream;
begin
//关闭已打开的PDF文件
Pdf1.Active := False;
//加载PDF文件到流中
Memory := TMemoryStream.Create;
Memory.LoadFromFile('C:\LargeFile.pdf');
//设置PDF文件密码
Pdf1.Password := '';
//设置打开的页数
PdfView1.PageNumber := 1;
//加载流中的PDF
Pdf1.LoadDocument(Memory);
//显示PDF
PdfView1.Active := True;
end;
</code></pre>
<h3 id="打印pdf">打印PDF</h3>
<p>在窗体上放置TPdf组件<em>Pdf1</em>,引用<code>uses Printers;</code></p>
<pre><code class="language-delphi">procedure TForm1.Button3Click(Sender: TObject);
var
Page: Integer;
Bitmap: TBitmap;
begin
try
//读取pdf文件
Pdf1.FileName := 'C:\LargeFile.pdf';
Pdf1.Active := True;
//开始打印
Printer.BeginDoc;
try
//循环所有PDF页面
for Page := 1 to Pdf1.PageCount do
begin
if Page > 1 then
Printer.NewPage;
//选择PDF文档的页面
Pdf1.PageNumber := Page;
//将页面内容转换为bmp
Bitmap := Pdf1.RenderPage(0, 0, Printer.PageWidth, Printer.PageHeight, ro0, );
//打印bmp
Printer.Canvas.StretchDraw(Printer.Canvas.ClipRect, Bitmap);
end;
finally
Printer.EndDoc;
end;
finally
Pdf1.Active := False;
end;
end;
</code></pre>
<h3 id="转换为图片">转换为图片</h3>
<p>在窗体上放置TPdf组件<em>Pdf1</em></p>
<pre><code class="language-delphi">procedure TForm1.Button4Click(Sender: TObject);
var
Page: Integer;
Bitmap: TBitmap;
begin
try
//读取pdf文件
Pdf1.FileName := 'C:\LargeFile.pdf';
Pdf1.Active := True;
//循环所有PDF页面
for Page := 1 to Pdf1.PageCount do
begin
//选择PDF文档的页面
Pdf1.PageNumber := Page;
//转换成bmp(pdf中的屏幕像素数是72)
Bitmap := Pdf1.RenderPage(0, 0, Round(Screen.PixelsPerInch * Pdf1.PageWidth / 72.0), Round(Screen.PixelsPerInch * Pdf1.PageHeight / 72.0));
try
Bitmap.SaveToFile('C:\bmp' + '_' + IntToStr(Page) + '.bmp');
finally
Bitmap.Free;
end;
end;
finally
Pdf1.Active := False;
end;
end;
</code></pre><br><br>
来源:https://www.cnblogs.com/txgh/p/15771575.html
頁:
[1]