PDFファイルをラスター画像に変換する

ODAプラットフォームは、Google Pdfiumライブラリを使用して.pdfファイルを扱うことをサポートしています。ODAのTD_Pdfiumモジュールに基づいたODA SDK RxPdfToRasterSevicesモジュールを使用して、.pdfファイル(またはファイルの一部)をラスター画像に変換できます。

このモジュールを使用すると、.pdfエクスポートのプレビュー、.pdf添付ファイルの追加など、さまざまな機能をアプリケーションに実装できます。RxPdfToRasterSevicesモジュールは使いやすく、変換のための柔軟な設定が可能です。

その仕組みを見て、次の.pdfファイルを変換してみましょう。

 

image1

 

まず、コンバーターを作成します。

OdRxPdfToRasterServicesPtr pSvcs = odrxDynamicLinker()->loadApp(RX_PDF_TO_RASTER_SERVICES_APPNAME);
OdPdf2ImageConverterPtr pConverter = pSvcs->createConverter();

次に、ディスクまたはメモリストリームから.pdfファイルを読み込みます。

pConverter->loadPdf(L"file.pdf");

.pdfファイルに複数のページが含まれており、最初のページを変換したくない場合は、アクティブなページを設定します(デフォルトでは最初のページが変換されます)。


pConverter->getPagesCount();
pConverter->setActivePage(2);

.pdfファイルをそのまま変換したい場合はこれで十分ですが、ページをトリミングしてページの一部だけを画像として生成したいと仮定しましょう。その場合、ページサイズを知る必要があります。


OdGsDCRect rect;
pConverter->getPageSize(rect);

これで、rectには.pdf座標(1/72インチ)で測定されたページサイズが含まれます。現在のファイルでは595x842です。トリミング領域を設定しましょう(この領域がページの外にある場合、結果は空の画像(ヌルポインタ)になります)。


OdPdf2ImageConversionParams params;
OdGsDCRect cropArea;
cropArea.m_min.x = 100;
cropArea.m_min.y = 100;
cropArea.m_max.x = 500;
cropArea.m_max.y = 500;
params.cropArea = cropArea;

解像度と背景色も設定できます。

params.bg_color = 0xFFFFFFFF;
params.dpi = 300;

デフォルトでは、解像度は72(標準PDF解像度)で、背景色は白です。ファイルにPDFレイヤーがある場合は、それを有効または無効にすることもできます。

OdPdfLayerArray layers;
pConverter->getLayers(layers);
layers.at(2).is_on = false; //layer "Layer2" for this pdf file
params.layers = layers;

これで変換を呼び出すだけです。

OdGiRasterImagePtr pImg;
pImg = pConverter->convertPdf(params);

結果は以下の画像です。

 

image2

 

別の例は、ODA Drawings Debugアプリケーション (OdaMfcApp.exe) のExportToPdfPreviewダイアログで利用できます。

RxPdfToRasterServicesモジュールは、C++11をサポートするプラットフォーム (vc14/15、gcc 4.8以降など) で使用できます。

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す