PDF Printer(PDF印刷) サンプル
PDF を印刷 概要

「PDF Printer」ライブラリはPDFばかりではなくTIFFやJPEG画像を各種のプリンタードライバーを介して印刷します。
PostScriptプリンターはやPCLプリンターをサポートしています。
ローカルプリンター、リモートプリンターおよびインターネット上のプリンターのいずれにも印刷できます。
プリンターの各種プロパティ(用紙トレー、用紙サイズ、複数ページ印刷など)を詳細に設定でき、
印刷ジョブを詳細にコントロールできます。
価格見積り
無償評価版のダウンロードとインストール
| C#開発環境 | C/C++開発環境 | Python開発環境 |
1.Zipファイルをダウンロードする場合
ライブラリ(評価版API)は無償でダウンロード(試用)できます。
ファイルをダウンロードしてから、適当なフォルダーに解凍します。
以下のようなフォルダーができますので適宜利用します。
無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。
ファイルをダウンロードしてから、適当なフォルダーに解凍します。
以下のようなフォルダーができますので適宜利用します。
| bin | ライブラリやライセンスマネージャーなど |
| doc | 使用説明書やjavadocなど |
| include | C/C++用のヘッダー(.h)ファイル |
| jar | PRNA.jar(Javaのラッパー) |
| lib | C/C++用のlibファイル |
| samples | 各種開発言語のサンプル |
2.NuGetでインストールする場合
nuget.org から PdfTools.PdfPrinter をインストールします。
NuGetでのインストール手順
この場合は参照設定などの必要はありません。
評価用ライセンスは 以下のソースコードまたは、こちら から取得してください。
NuGetでのインストール手順
この場合は参照設定などの必要はありません。
評価用ライセンスは 以下のソースコードまたは、こちら から取得してください。
| C#開発環境 | C/C++開発環境 | Python開発環境 |
ライブラリ(評価版API)は無償でダウンロード(試用)できます。
ファイルをダウンロードしてから、適当なフォルダーに解凍します。
以下のようなフォルダーができますので適宜利用します。
無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。
ファイルをダウンロードしてから、適当なフォルダーに解凍します。
以下のようなフォルダーができますので適宜利用します。
| bin | ライブラリやライセンスマネージャーなど |
| doc | 使用説明書やjavadocなど |
| include | C/C++用のヘッダー(.h)ファイル |
| jar | PRNA.jar(Javaのラッパー) |
| lib | C/C++用のlibファイル |
| samples | 各種開発言語のサンプル |
| C#開発環境 | C/C++開発環境 | Python開発環境 |
Python
PDF文書やTIFF画像を印刷
文書(PDFやTIFF)の全ページまたは選択されたページを印刷
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
pPrinter = PDFPrnCreateObject();
// 指定された1台のプリンタに入力されたファイルを印刷する
if (!PDFPrnPrintFile(pPrinter, szInputPath, szPrinterName, _T(""), iFirstPage, iLastPage))
{
_tprintf(_T("入力ファイル %s を印刷できません。 %s (エラーコード: 0x%08x).\n"),
szInputPath, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
}
else
_tprintf(_T("終了"));
| PDFPrnCreateObject | 印刷オブジェクト生成 |
| PDFPrnPrintFile | 入力ファイルの指定ページを印刷 第一引数:印刷オブジェクト 第二引数:印刷するファイルのパス名 第三引数:出力プリンタ名 第四引数:暗号化のパスワード 第五引数:印刷開始ページ 第六引数:印刷終了ページ |
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
using (Printer printer = new Printer())
{
// 指定された1台のプリンタに入力されたファイルを印刷する
if (!printer.PrintFile(inputPath, printerName, "", firstPage, lastPage))
throw new Exception(String.Format("入力ファイル {0} を印刷できません。 " +
"{1} (エラーコード: 0x{2:x}).", inputPath, printer.ErrorMessage, printer.ErrorCode));
}
Console.WriteLine("終了");
| Printer | 印刷オブジェクト |
| PrintFile | 入力ファイルの指定ページを印刷 第一引数:印刷するファイルのパス名 第二引数:出力プリンタ名 第三引数:暗号化のパスワード 第四引数:印刷開始ページ 第五引数:印刷終了ページ |
| C# | C/C++ | Python | ダウンロード |
import PdfPrinter
# オブジェクト生成
try:
prn = PdfPrinter.PrinterInterface("1-RnbGT-ntGEK3a-KNNK7dh-ahgtRGF")
except Exception as e:
print("Error: ", e)
exit()
# 指定された1台のプリンタに入力されたファイルを印刷する
if not prn.PrintFile("in.pdf", printerName, "", iFirstPage, iLastPage):
print("Error:", prn.ErrorMessage)
print("終了");
| PrinterInterface | 印刷オブジェクト 引数にライセンスキーを指定します。 |
| PrintFile | 入力ファイルの指定ページを印刷 第一引数:印刷するファイルのパス名 第二引数:出力プリンタ名 第三引数:暗号化のパスワード 第四引数:印刷開始ページ 第五引数:印刷終了ページ |
複数のPDF文書やTIFF画像を単一のプリンタで印刷
複数文書(PDFやTIFF)の指定されたページを単一の印刷ジョブとして指定されたプリンタで印刷
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
pPrinter = PDFPrnCreateObject();
// プリンタをオープン
if (!PDFPrnOpenPrinter(pPrinter, szPrinterName))
{
_tprintf(_T("プリンタ %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 印刷ジョブ開始
if (!PDFPrnBeginDocument(pPrinter, _T("My print job.")))
{
_tprintf(_T("プリンタに接続できません。 %s (エラーコード: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 全文書を繰り返す
for (int i = 0; i < nInputPaths; i++)
{
// 入力ファイルをオープン
if (!PDFPrnOpen(pPrinter, szInputPaths[i], _T("")))
{
_tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
szInputPaths[i], PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// オープンしたファイルの全ページを繰り返す
for (int iPage = 1; iPage <= PDFPrnGetPageCount(pPrinter); iPage++)
{
// オープンしたファイルのページを印刷
if (!PDFPrnPrintPage(pPrinter, iPage))
{
_tprintf(_T("ページ %d をプリンタ %s で印刷できません。 %s (エラーコード: 0x%08x).\n"),
iPage, szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
}
// 入力ファイルをクローズ
PDFPrnClose(pPrinter);
}
// 印刷ジョブ終了
if (!PDFPrnEndDocument(pPrinter))
{
_tprintf(_T("印刷ジョブを正しく終了できません。 %s (エラーコード: 0x%08x)."),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
cleanup:
_tprintf(_T("終了"));
| PDFPrnCreateObject | 印刷オブジェクト生成 |
| PDFPrnOpenPrinter | 印刷先プリンタをオープン 第一引数:印刷オブジェクト 第二引数:出力プリンタ名 |
| PDFPrnBeginDocument | 印刷ジョブを開始 第一引数:印刷オブジェクト 第二引数:印刷ジョブ名 |
| PDFPrnOpen | 入力ファイルをオープン 第一引数:印刷オブジェクト 第二引数:入力ファイルのパス名 第三引数:暗号化のパスワード |
| PDFPrnGetPageCount | 入力ファイルのページ数を取得 第一引数:印刷オブジェクト |
| PDFPrnPrintPage | 印刷するページを指定 第一引数:印刷オブジェクト 第二引数:ページ番号 |
| PDFPrnClose | 入力ファイルをクローズ 第一引数:印刷オブジェクト |
| PDFPrnEndDocument | 印刷ジョブを終了 第一引数:印刷オブジェクト |
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
using (Printer printer = new Printer())
{
// プリンタをオープン
if (!printer.OpenPrinter(printerName))
throw new Exception(String.Format("プリンタ {0} をオープンできません。 " +
"{1} (エラーコード: 0x{2:x}).", printerName, printer.ErrorMessage, printer.ErrorCode));
// 印刷ジョブ開始
if (!printer.BeginDocument("My print job."))
throw new Exception(String.Format("プリンタに接続できません。 " +
"{0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
// 全文書を繰り返す
foreach (string path in inputPaths)
{
// 入力ファイルをオープン
if (!printer.Open(path, ""))
throw new Exception(String.Format("入力ファイル {0} をオープンできません。 {1} " +
"(エラーコード: 0x{2:x}).", path, printer.ErrorMessage, printer.ErrorCode));
// オープンしたファイルの全ページを繰り返す
for (int pageNo = 1; pageNo <= printer.PageCount; pageNo++)
{
// オープンしたファイルのページを印刷
if (!printer.PrintPage(pageNo))
throw new Exception(String.Format("ページ {0} をプリンタ {1} で印刷できません。" +
" {2} (ErrorCode: 0x{3:x}).", pageNo, printerName,
printer.ErrorMessage, printer.ErrorCode));
}
// 入力ファイルをクローズ
printer.Close();
}
// 印刷ジョブ終了
if (!printer.EndDocument())
throw new Exception(String.Format("The print job could not be completed or the " +
"connection could not be closed. {0} (ErrorCode: 0x{1:x}).", printer.ErrorMessage,
printer.ErrorCode));
}
Console.WriteLine("終了");
| Printer | 印刷オブジェクト |
| OpenPrinter | 印刷先プリンタをオープン 第一引数:出力プリンタ名 |
| BeginDocument | 印刷ジョブを開始 第一二引数:印刷ジョブ名 |
| Open | 入力ファイルをオープン 第一引数:入力ファイルのパス名 第二引数:暗号化のパスワード |
| PageCount | 入力ファイルのページ数 |
| PrintPage | 印刷するページを指定 第一引数:ページ番号 |
| Close | 入力ファイルをクローズ |
| EndDocument | 印刷ジョブを終了 |
| C# | C/C++ | Python | ダウンロード |
import PdfPrinter
# オブジェクト生成
try:
prn = PdfPrinter.PrinterInterface("1-RnbGT-ntGEK3a-KNNK7dh-ahgtRGF")
except Exception as e:
print("Error: ", e)
exit()
# プリンタをオープン
if not prn.OpenPrinter(printerName):
print('プリンタ',printerName,'をオープンできません。', prn.ErrorMessage)
# 印刷ジョブ開始
if not prn.BeginDocument('My print job'):
print('プリンタに接続できません。', prn.ErrorMessage)
# 全文書を繰り返す
for path in inputPaths:
# 入力ファイルをオープン
if not prn.Open(path,''):
print('入力ファイル', path, 'をオープンできません。', prn.ErrorMessage)
else:
# オープンしたファイルの全ページを繰り返す
for pageNo in range(1, prn.PageCount+1):
prn.PrintPage(pageNo)
# 入力ファイルをクローズ
prn.Close()
# 印刷ジョブ終了
if not prn.EndDocument():
print('印刷ジョブを正常に終了できませんでした。')
else:
print("終了")
| PrinterInterface | 印刷オブジェクト 引数にライセンスキーを指定します。 |
| OpenPrinter | 印刷先プリンタをオープン 第一引数:出力プリンタ名 |
| BeginDocument | 印刷ジョブを開始 第一二引数:印刷ジョブ名 |
| Open | 入力ファイルをオープン 第一引数:入力ファイルのパス名 第二引数:暗号化のパスワード |
| PageCount | 入力ファイルのページ数 |
| PrintPage | 印刷するページを指定 第一引数:ページ番号 |
| Close | 入力ファイルをクローズ |
| EndDocument | 印刷ジョブを終了 |
単一のPDF文書やTIFF画像を複数のプリンタで印刷
単一の文書(PDFやTIFF)を複数のプリンタで印刷します。
このサンプルでは、文書の指定されたページをあるプリンタで印刷し、2ページ以降を別のプリンタで印刷します。
このサンプルでは、文書の指定されたページをあるプリンタで印刷し、2ページ以降を別のプリンタで印刷します。
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
pPrinter = PDFPrnCreateObject();
// 入力ファイルをオープン
if (!PDFPrnOpen(pPrinter, szInputPath, _T("")))
{
_tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
szInputPath, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
}
// 最初のプリンタをオープン
if (!PDFPrnOpenPrinter(pPrinter, szFirstPrinterName))
{
_tprintf(_T("プリンタ %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
szFirstPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 最初の印刷ジョブを開始
if (!PDFPrnBeginDocument(pPrinter, _T("My first print job.\n")))
{
_tprintf(_T("プリンタに接続できません。 %s (ErrorCode: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 入力ファイルの指定されたページを印刷
if (!PDFPrnPrintPage(pPrinter, iPageNumber))
{
_tprintf(_T("ファイル %s の %d ページをプリンタ %s に印刷できません。 %s (エラーコード: 0x%08x).\n"),
szInputPath, iPageNumber, szFirstPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 最初の印刷ジョブを終了
if (!PDFPrnEndDocument(pPrinter))
{
_tprintf(_T("プリンタ %s での印刷ジョブを正しく終了できませんでした。 %s (エラーコード: 0x%08x).\n"),
szFirstPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 最初のプリンタをクローズ
PDFPrnClosePrinter(pPrinter);
// 2番目のプリンタをオープン
if (!PDFPrnOpenPrinter(pPrinter, szSecondPrinterName))
{
_tprintf(_T("プリンタ %s をオープン できません。%s (エラーコード: 0x%08x).\n"),
szSecondPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 2番目印刷ジョブを開始
if (!PDFPrnBeginDocument(pPrinter, _T("My second print job.")))
{
_tprintf(_T("プリンタに接続できません。 %s (エラーコード: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 2ページ目(もし存在すれば)から最終ページまでを繰り返す
for (int iPage = 2; iPage < PDFPrnGetPageCount(pPrinter); iPage++)
{
// 入力ファイルの指定されたページを印刷
if (!PDFPrnPrintPage(pPrinter, iPage))
{
_tprintf(_T("ページ %d をプリンタ %s に印刷できません。 %s (エラーコード: 0x%08x).\n"),
iPage, szSecondPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
}
// 2番目の印刷ジョブを終了
if (!PDFPrnEndDocument(pPrinter))
{
_tprintf(_T("次の印刷ジョブを正しく終了できませんでした。 %s (エラーコード: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 2番目のプリンタをクローズClose second printer
PDFPrnClosePrinter(pPrinter);
// 入力ファイルをクローズ
PDFPrnClose(pPrinter);
cleanup:
_tprintf(_T("終了"));
| PDFPrnCreateObject | 印刷オブジェクト生成 |
| PDFPrnOpen | 入力ファイルをオープン 第一引数:印刷オブジェクト 第二引数:入力ファイルのパス名 第三引数:暗号化のパスワード |
| PDFPrnOpenPrinter | 印刷先プリンタをオープン 第一引数:印刷オブジェクト 第二引数:出力プリンタ名 |
| PDFPrnBeginDocument | 印刷ジョブを開始 第一引数:印刷オブジェクト 第二引数:印刷ジョブ名 |
| PDFPrnPrintPage | 印刷するページを指定 第一引数:印刷オブジェクト 第二引数:ページ番号 |
| PDFPrnEndDocument | 印刷ジョブを終了 第一引数:印刷オブジェクト |
| PDFPrnClosePrinter | 印刷先プリンタをオープン 第一引数:印刷オブジェクト |
| PDFPrnGetPageCount | 入力ファイルのページ数を取得 第一引数:印刷オブジェクト |
| PDFPrnClose | 入力ファイルをクローズ 第一引数:印刷オブジェクト |
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
using (Printer printer = new Printer())
{
// 入力ファイルをオープン
if (!printer.Open(inputPath, ""))
throw new Exception(String.Format("入力ファイル {0} をオープンできません。 " +
"{1} (エラーコード: 0x{2:x}).", inputPath, printer.ErrorMessage, printer.ErrorCode));
// 最初のプリンタをオープン
if (!printer.OpenPrinter(firstPrinterName))
throw new Exception(String.Format("プリンタ {0} をオープンできません。 {1} " +
"(エラーコード: 0x{2:x}).", firstPrinterName, printer.ErrorMessage, printer.ErrorCode));
// 最初の印刷ジョブを開始
if (!printer.BeginDocument("My first print job."))
throw new Exception(String.Format("プリンタに接続できません。 " +
"{0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
// 入力ファイルの指定されたページを印刷
if (!printer.PrintPage(pageNumber))
throw new Exception(String.Format("入力ファイル {1} の {0} ページをプリンタ {2} に印刷できません。" +
" {3} (エラーコード: 0x{4:x}).", pageNumber, inputPath, firstPrinterName,
printer.ErrorMessage, printer.ErrorCode));
// 最初の印刷ジョブを終了
if (!printer.EndDocument())
throw new Exception(String.Format("印刷ジョブを正しく終了できませんでした。" +
" {0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
// 最初のプリンタをクローズ
printer.ClosePrinter();
// 2番目のプリンタをオープン
if (!printer.OpenPrinter(secondPrinterName))
throw new Exception(String.Format("プリンタ {0} をオープンできません。 {1} " +
"(エラーコード: 0x{2:x}).", secondPrinterName, printer.ErrorMessage, printer.ErrorCode));
// 2番目の印刷ジョブを開始
if (!printer.BeginDocument("My second print job."))
throw new Exception(String.Format("プリンタに接続できません。 " +
"{0} (エラーコード: 0x{2:x}).", printer.ErrorMessage, printer.ErrorCode));
// 2ページ目(もし存在すれば)から最終ページまでを繰り返す
for (int pageNo = 2; pageNo < printer.PageCount; pageNo++)
{
// 入力ファイルの指定されたページを印刷
if (!printer.PrintPage(pageNo))
throw new Exception(String.Format("ページ {0} をプリンタ {1} に印刷できません。" +
" {2} (エラーコード: 0x{3:x}).", pageNo, secondPrinterName,
printer.ErrorMessage, printer.ErrorCode));
}
// 2番目の印刷ジョブを終了
if (!printer.EndDocument())
throw new Exception(String.Format("印刷ジョブを正しく終了できませんでした。" +
" {0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
// 2番目のプリンタをクローズ
printer.ClosePrinter();
// 入力ファイルをクローズ
printer.Close();
}
Console.WriteLine("終了");
| Printer | 印刷オブジェクト |
| Open | 入力ファイルをオープン 第一引数:入力ファイルのパス名 第二引数:暗号化のパスワード |
| OpenPrinter | 印刷先プリンタをオープン 第一引数:出力プリンタ名 |
| BeginDocument | 印刷ジョブを開始 第一引数:印刷ジョブ名 |
| PrintPage | 印刷するページを指定 第一引数:ページ番号 |
| EndDocument | 印刷ジョブを終了 |
| ClosePrinter | 印刷先プリンタをオープン |
| PageCount | 入力ファイルのページ数 |
| Close | 入力ファイルをクローズ |
| C# | C/C++ | Python | ダウンロード |
import PdfPrinter
# printerオブジェクト生成
prn = PdfPrinter.PrinterInterface("1-RnbGT-ntGEK3a-KNNK7dh-ahgtRGF")
if not prn.LicenseIsValid:
print('License is Not valid.')
exit()
# 入力ファイルをオープン
if not prn.Open(inputPath,''):
print('入力ファイル', inputPath, 'をオープンできません。', prn.ErrorMessage)
else:
# 最初のプリンタをオープン
if not prn.OpenPrinter(firstPrinterName):
print('プリンタ', firstPrinterName, 'をオープンできません。', prn.ErrorMessage)
else:
# 最初の印刷ジョブを開始
if not prn.BeginDocument('My first print job'):
print('プリンタに接続できません。', prn.ErrorMessage)
else:
# 入力ファイルの指定されたページを印刷
if not prn.PrintPage(1):
print(inputPath, 'のページ(1)を', firstPrinterName, 'に印刷できません。', prn.ErrorMessage)
# 最初のプリンタをクローズ
if not prn.EndDocument():
print('印刷ジョブを正しく終了できませんでした。', prn.ErrorMessage)
# 最初のプリンタをクローズ
prn.ClosePrinter()
# 2番目のプリンタをオープン
if not prn.OpenPrinter(secondPrinterName):
print('プリンタ', secondPrinterName, 'をオープンできません。', prn.ErrorMessage)
else:
# 2番目の印刷ジョブを開始
if not prn.BeginDocument('My second print job'):
print('', prn.ErrorMessage)
else:
# 2ページ目(もし存在すれば)から最終ページまでを繰り返す
for (pageNo in range(1, pageCount+1)):
if not prn.PrintPage(pageNo):
print('ページ', pageNo, 'をプリンタ', secondPrinterName, 'に印刷できません。', prn.ErrorMessage)
# 2番目の印刷ジョブを終了
if not prn.EndDocument():
print('印刷ジョブを正しく終了できませんでした。', prn.ErrorMessage)
# 2番目のプリンタをクローズ
prn.ClosePrinter()
# 入力ファイルをクローズ
prn.Close()
print("終了")
| PrinterInterface | 印刷オブジェクト 引数にライセンスキーを指定します。 |
| Open | 入力ファイルをオープン 第一引数:入力ファイルのパス名 第二引数:暗号化のパスワード |
| OpenPrinter | 印刷先プリンタをオープン 第一引数:出力プリンタ名 |
| BeginDocument | 印刷ジョブを開始 第一引数:印刷ジョブ名 |
| PrintPage | 印刷するページを指定 第一引数:ページ番号 |
| EndDocument | 印刷ジョブを終了 |
| ClosePrinter | 印刷先プリンタをオープン |
| PageCount | 入力ファイルのページ数 |
| Close | 入力ファイルをクローズ |
PDF文書をファイルに印刷
スプールファイルをプリンタに替わってファイルに保存します。
使用するプリンタドライバに応じて、PostScript、PCL、その他形式のファイルを作成します。
使用するプリンタドライバに応じて、PostScript、PCL、その他形式のファイルを作成します。
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
pPrinter = PDFPrnCreateObject();
// プリンタをオープン
if (!PDFPrnOpenPrinter(pPrinter, szPrinterName))
{
_tprintf(_T("プリンタ %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 印刷データを出力するファイル名
PDFPrnSetOutput(pPrinter, szOutputPath);
// 印刷ジョブ開始
if (!PDFPrnBeginDocument(pPrinter, _T("My print job.")))
{
_tprintf(_T("プリンタに接続できません。 %s (エラーコード: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 入力ファイルをオープン
if (!PDFPrnOpen(pPrinter, szInputPath, _T("")))
{
_tprintf(_T("入力ファイル %s をオープンできません。 %s (ErrorCode: 0x%08x).\n"),
szInputPath, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 入力ファイルの全てのページを繰り返す
for (int iPage = 1; iPage lt;= PDFPrnGetPageCount(pPrinter); iPage++)
{
// 入力ファイルの指定されたページを印刷
if (!PDFPrnPrintPage(pPrinter, iPage))
{
_tprintf(_T("ページ %d をプリンタ %s で印刷できません。 %s (エラーコード: 0x%08x).\n"),
iPage, szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
}
// 入力ファイルをクローズ
PDFPrnClose(pPrinter);
// 印刷ジョブ終了
if (!PDFPrnEndDocument(pPrinter))
{
_tprintf(_T("印刷ジョブを正しく終了できませんでした。 %s (ErrorCode: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
cleanup:
_tprintf(_T("終了"));
| PDFPrnCreateObject | 印刷オブジェクト生成 |
| PDFPrnOpenPrinter | 印刷先プリンタをオープン 第一引数:印刷オブジェクト 第二引数:出力プリンタ名 |
| PDFPrnSetOutput | 印刷データを出力するファイルを設定 第一引数:印刷オブジェクト 第二引数:出力先ファイルパス名 |
| PDFPrnBeginDocument | 印刷ジョブを開始 第一引数:印刷オブジェクト 第二引数:印刷ジョブ名 |
| PDFPrnOpen | 入力ファイルをオープン 第一引数:印刷オブジェクト 第二引数:入力ファイルのパス名 第三引数:暗号化のパスワード |
| PDFPrnGetPageCount | 入力ファイルのページ数を取得 第一引数:印刷オブジェクト |
| PDFPrnPrintPage | 印刷するページを指定 第一引数:印刷オブジェクト 第二引数:ページ番号 |
| PDFPrnClose | 入力ファイルをクローズ 第一引数:印刷オブジェクト |
| PDFPrnEndDocument | 印刷ジョブを終了 第一引数:印刷オブジェクト |
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
using (Printer printer = new Printer())
{
// プリンタをオープン
if (!printer.OpenPrinter(printerName))
throw new Exception(String.Format("プリンタ {0} をオープンできません。 " +
"{1} (エラーコード: 0x{2:x}).", printerName, printer.ErrorMessage, printer.ErrorCode));
// 印刷データを出力するファイル名
printer.Output = outputPath;
// 印刷ジョブ開始
if (!printer.BeginDocument("My print job."))
throw new Exception(String.Format("プリンタに接続できません。 " +
"{0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
// 入力ファイルをオープン
if (!printer.Open(inputPath, ""))
throw new Exception(String.Format("入力ファイル {0} をオープンできません。 " +
"{1} (エラーコード: 0x{2:x}).", inputPath, printer.ErrorMessage, printer.ErrorCode));
// 入力ファイルの全てのページを繰り返す
for (int pageNo = 1; pageNo lt;= printer.PageCount; pageNo++)
{
// 入力ファイルの指定されたページを印刷
if (!printer.PrintPage(pageNo))
throw new Exception(String.Format("ページ {0} をプリンタ {1} で印刷できません。" +
" {2} (エラーコード: 0x{3:x}).", pageNo, printerName, printer.ErrorMessage, printer.ErrorCode));
}
// 入力ファイルをクローズ
printer.Close();
// 印刷ジョブ終了
if (!printer.EndDocument())
throw new Exception(String.Format("印刷ジョブを正しく終了できませんでした。 " +
" {0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
}
Console.WriteLine("終了");
| Printer | 印刷オブジェクト |
| OpenPrinter | 印刷先プリンタをオープン 第一引数:印刷オブジェクト 第二引数:出力プリンタ名 |
| Output | 印刷データを出力するファイルパス名を指定 |
| BeginDocument | 印刷ジョブを開始 第一引数:印刷ジョブ名 |
| Open | 入力ファイルをオープン 第一引数:入力ファイルのパス名 第二引数:暗号化のパスワード |
| PageCount | 入力ファイルのページ数 |
| PrintPage | 印刷するページを指定 第一引数:ページ番号 |
| Close | 入力ファイルをクローズ |
| EndDocument | 印刷ジョブを終了 |
| C# | C/C++ | Python | ダウンロード |
import PdfPrinter
# printerオブジェクト生成
prn = PdfPrinter.PrinterInterface("1-RnbGT-ntGEK3a-KNNK7dh-ahgtRGF")
if not prn.LicenseIsValid:
print('License is Not valid.')
exit()
# プリンタをオープン
if not prn.OpenPrinter(printerName):
print('プリンタ', printerName, 'をオープンできません。', prn.ErrorMessage)
else:
# 印刷データを出力するファイル名
prn.Output = "out.dat"
# 印刷ジョブ開始
if not prn.BeginDocument('My print job'):
print('プリンタに接続できません。', prn.ErrorMessage)
else:
# 入力ファイルをオープン
if not prn.Open(inputPath,''):
print('入力ファイル', inputPath, 'をオープンできません。', prn.ErrorMessage)
else:
# 入力ファイルの全てのページを印刷
for pageNo in range(1, prn.PageCount+1):
if not prn.PrintPage(pageNo):
print(ページ', pageNo, 'をプリンタ', printerName, 'で印刷できません。)
# 入力ファイルをクローズ
prn.Close()
# 印刷ジョブ終了
prn.EndDocument()
print("終了")
| PrinterInterface | 印刷オブジェクト 引数にライセンスキーを指定します。 |
| OpenPrinter | 印刷先プリンタをオープン 第一引数:印刷オブジェクト 第二引数:出力プリンタ名 |
| Output | 印刷データを出力するファイルパス名を指定 |
| BeginDocument | 印刷ジョブを開始 第一引数:印刷ジョブ名 |
| Open | 入力ファイルをオープン 第一引数:入力ファイルのパス名 第二引数:暗号化のパスワード |
| PageCount | 入力ファイルのページ数 |
| PrintPage | 印刷するページを指定 第一引数:ページ番号 |
| Close | 入力ファイルをクローズ |
| EndDocument | 印刷ジョブを終了 |
プリンタとそのプロパティをリスト
ローカルホストから利用できるすべてのプリンタのリストをテキストファイルに出力します。
リストされたプリンタについて利用できるデュプレックスモード、ビン、用紙サイズの数、プリンタでサポートされているメディアタイプの数などに関する情報を取得します。
リストされたプリンタについて利用できるデュプレックスモード、ビン、用紙サイズの数、プリンタでサポートされているメディアタイプの数などに関する情報を取得します。
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
pPrinter = PDFPrnCreateObject();
// ローカルホストで利用可能なプリンタのリストを出力するテキストファイルを生成
pTxtFile = _tfopen(szTextFilePath, _T("w"));
_ftprintf(pTxtFile, _T("ローカルホストで利用可能なプリンタ:\n"));
_ftprintf(pTxtFile, _T("----------------------------------------\n"));
// ローカルホストで利用可能なすべてのプリンタを繰り返す
for (int iPrinter = 0, nPrinters = PDFPrnGetPrinterCount(pPrinter, ""); iPrinter < nPrinters; iPrinter++)
{
TCHAR szPrinterName[256];
_tcscpy(szPrinterName, PDFPrnGetPrinter(pPrinter, iPrinter));
_ftprintf(pTxtFile, _T("プリンタ %d: %s\n"), iPrinter + 1, szPrinterName);
// プリンタをオープン
if (!PDFPrnOpenPrinter(pPrinter, szPrinterName))
{
_tprintf(_T("プリンタ %s をオープンできませんでした。 %s (エラーコード: 0x%08x).\n"),
szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
continue;
}
// プリンタのデュプレックスモード名をリスト
_ftprintf(pTxtFile, _T(" デュプレックスモード:\n"));
for (int j = 0, n = PDFPrnGetDuplexModeCount(pPrinter, szPrinterName); j < n; j++)
_ftprintf(pTxtFile, _T(" - %s\n"), PDFPrnGetDuplexMode(pPrinter, j));
// プリンタの印刷用紙トレー名をリスト
_ftprintf(pTxtFile, _T(" 用紙トレー:\n"));
for (int j = 0, n = PDFPrnGetBinCount(pPrinter, szPrinterName); j < n; j++)
_ftprintf(pTxtFile, _T(" - %s\n"), PDFPrnGetBin(pPrinter, j));
// プリンタの印刷用紙サイズ名をリスト
_ftprintf(pTxtFile, _T(" 用紙サイズ:\n"));
for (int j = 0, n = PDFPrnGetPaperCount(pPrinter, szPrinterName); j < n; j++)
_ftprintf(pTxtFile, _T(" - %s\n"), PDFPrnGetPaper(pPrinter, j));
// プリンタの印刷用メディアタイプ名をリスト
_ftprintf(pTxtFile, _T(" メディアタイプ:\n"));
for (int j = 0, n = PDFPrnGetMediaTypeCount(pPrinter, szPrinterName); j < ; j++)
_ftprintf(pTxtFile, _T(" - %s\n"), PDFPrnGetMediaTypeName(pPrinter, j));
// プリンタをクローズ
PDFPrnClosePrinter(pPrinter);
_ftprintf(pTxtFile, _T("----------------------------------------\n"));
}
_tprintf(_T("終了"));
| PDFPrnCreateObject | 印刷オブジェクト生成 |
| PDFPrnGetPrinterCount | 指定ホスト上のプリンタ数 第一引数:印刷オブジェクト 第二引数:ホスト名 ""の場合はローカルホスト |
| PDFPrnGetPrinter | プリンタ名を取得 第一引数:印刷オブジェクト 第二引数:プリンタのインデックス "PDFPrnGetPrinterCount"で指定されたホスト上のもの |
| PDFPrnOpenPrinter | プリンタをオープン 第一引数:印刷オブジェクト 第二引数:プリンタ名 |
| PDFPrnGetDuplexModeCount | デュプレックスモードの総数を取得 第一引数:印刷オブジェクト 第二引数:プリンタ名 |
| PDFPrnGetDuplexMode | デュプレックスモード名を取得 第一引数:印刷オブジェクト 第二引数:デュプレックスモードのインデックス |
| PDFPrnGetBinCount | 印刷用紙トレーの総数を取得 第一引数:印刷オブジェクト 第二引数:プリンタ名 |
| PDFPrnGetBin | 印刷用紙トレー名を取得 第一引数:印刷オブジェクト 第二引数:印刷用紙トレーのインデックス |
| PDFPrnGetPaperCount | 印刷用紙サイズの総数を取得 第一引数:印刷オブジェクト 第二引数:プリンタ名 |
| PDFPrnGetPaper | 印刷用紙サイズ名を取得 第一引数:印刷オブジェクト 第二引数:印刷用紙サイズのインデックス |
| PDFPrnGetMediaTypeCount | 印刷用メディアタイプの総数を取得 第一引数:印刷オブジェクト 第二引数:プリンタ名 |
| PDFPrnGetMediaTypeName | 印刷用メディアタイプ名を取得 第一引数:印刷オブジェクト 第二引数:印刷用メディアタイプのインデックス |
| PDFPrnClosePrinter | プリンタをクローズ 第一引数:印刷オブジェクト |
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
using (Printer printer = new Printer())
{
// ローカルホストで利用可能なプリンタのリストを出力するテキストファイルを生成
using (StreamWriter writer = new StreamWriter(txtFilePath))
{
writer.WriteLine("ローカルホストで利用可能なプリンタ:");
writer.WriteLine("----------------------------------------");
// ローカルホストで利用可能なすべてのプリンタを繰り返す
for (int printerNo = 0, printerCount = printer.GetPrinterCount(""); printerNo < printerCount; printerNo++)
{
string printerName = printer.GetPrinter(printerNo);
writer.WriteLine("Printer {0}: {1}", printerNo + 1, printerName);
// プリンタをオープン
if (!printer.OpenPrinter(printerName))
throw new Exception(String.Format("Printer {0} could not be opened. " +
"{1} (ErrorCode: 0x{2:x}).", printerName, printer.ErrorMessage, printer.ErrorCode));
// プリンタのデュプレックスモード名をリスト
writer.WriteLine(" デュプレックスモード:");
for (int i = 0, n = printer.GetDuplexModeCount(printerName); i < n; i++)
writer.WriteLine(" - {0}", printer.GetDuplexMode(i));
// プリンタの印刷用紙トレー名をリスト
writer.WriteLine(" 用紙トレー:");
for (int i = 0, n = printer.GetBinCount(printerName); i < n; i++)
writer.WriteLine(" - {0}", printer.GetBin(i));
// プリンタの印刷用紙サイズ名をリスト
writer.WriteLine(" 用紙サイズ:");
for (int i = 0, n = printer.GetPaperCount(printerName); i < n; i++)
writer.WriteLine(" - {0}", printer.GetPaper(i));
// プリンタの印刷用メディアタイプ名をリスト
writer.WriteLine(" メディアタイプ:");
for (int i = 0, n = printer.GetMediaTypeCount(printerName); i < n; i++)
writer.WriteLine(" - {0}", printer.GetMediaTypeName(i));
// プリンタをクローズ
printer.ClosePrinter();
writer.WriteLine("----------------------------------------");
}
}
}
Console.WriteLine("終了");
| Printer | 印刷オブジェクト |
| GetPrinterCount | 指定ホスト上のプリンタ数 第一引数:ホスト名 ""の場合はローカルホスト |
| GetPrinter | プリンタ名を取得 第一引数:プリンタのインデックス "GetPrinterCount"で指定されたホスト上のもの |
| OpenPrinter | プリンタをオープン 第一引数:プリンタ名 |
| GetDuplexModeCount | デュプレックスモードの総数を取得 第一引数:プリンタ名 |
| GetDuplexMode | デュプレックスモード名を取得 第一引数:デュプレックスモードのインデックス |
| GetBinCount | 印刷用紙トレーの総数を取得 第一引数:プリンタ名 |
| GetBin | 印刷用紙トレー名を取得 第一引数:印刷用紙トレーのインデックス |
| GetPaperCount | 印刷用紙サイズの総数を取得 第一引数:プリンタ名 |
| GetPaper | 印刷用紙サイズ名を取得 第一二引数:印刷用紙サイズのインデックス |
| GetMediaTypeCount | 印刷用メディアタイプの総数を取得 第一引数:プリンタ名 |
| GetMediaTypeName | 印刷用メディアタイプ名を取得 第一引数:印刷用メディアタイプのインデックス |
| ClosePrinter | プリンタをクローズ |
| C# | C/C++ | Python | ダウンロード |
import PdfPrinter
# printerオブジェクト生成
prn = PdfPrinter.PrinterInterface("1-RnbGT-ntGEK3a-KNNK7dh-ahgtRGF")
if not prn.LicenseIsValid:
print('License is Not valid.')
exit()
# ローカルホストで利用可能なプリンタのリストを出力するテキストファイルを生成
writer = open('out.txt', 'w')
writer.write("ローカルホストで利用可能なプリンタ:\n")
writer.write("----------------------------------------\n")
# ローカルホストで利用可能なすべてのプリンタを繰り返す
for printerNo in range(prn.GetPrinterCount("")):
printerName = prn.GetPrinter(printerNo)
writer.write("Printer {0}: {1}\n".format(printerNo+1, printerName))
# プリンタをオープン
if not prn.OpenPrinter(printerName):
print('プリンタ', printerName, 'をオープンできません。')
else:
# プリンタのデュプレックスモード名をリスト
writer.write(" デュプレックスモード:\n")
for i in range(prn.GetBinCount(printerName)):
writer.write(" - {0}\n".format(prn.GetBin(i)))
# プリンタの印刷用紙サイズ名をリスト
writer.write(" 用紙サイズ:\n")
for i in range(prn.GetPaperCount(printerName)):
writer.write(" - {0}\n".format(prn.GetPaper(i)));
# プリンタの印刷用メディアタイプ名をリスト
writer.write(" メディアタイプ:\n")
for i in range(prn.GetMediaTypeCount(printerName)):
writer.write(" - {0}\n".fprmat(prn.GetMediaTypeName(i)));
# プリンタをクローズ
prn.ClosePrinter();
writer.write("----------------------------------------\n");
writer.close()
print("終了")
| PrinterInterface | 印刷オブジェクト 引数にライセンスキーを指定します。 |
| GetPrinterCount | 指定ホスト上のプリンタ数 第一引数:ホスト名 ""の場合はローカルホスト |
| GetPrinter | プリンタ名を取得 第一引数:プリンタのインデックス "GetPrinterCount"で指定されたホスト上のもの |
| OpenPrinter | プリンタをオープン 第一引数:プリンタ名 |
| GetDuplexModeCount | デュプレックスモードの総数を取得 第一引数:プリンタ名 |
| GetDuplexMode | デュプレックスモード名を取得 第一引数:デュプレックスモードのインデックス |
| GetBinCount | 印刷用紙トレーの総数を取得 第一引数:プリンタ名 |
| GetBin | 印刷用紙トレー名を取得 第一引数:印刷用紙トレーのインデックス |
| GetPaperCount | 印刷用紙サイズの総数を取得 第一引数:プリンタ名 |
| GetPaper | 印刷用紙サイズ名を取得 第一二引数:印刷用紙サイズのインデックス |
| GetMediaTypeCount | 印刷用メディアタイプの総数を取得 第一引数:プリンタ名 |
| GetMediaTypeName | 印刷用メディアタイプ名を取得 第一引数:印刷用メディアタイプのインデックス |
| ClosePrinter | プリンタをクローズ |
透かしを追加
印刷の結果に透かし(ウォーターマーク;Watermark)を追加します。
サンプルでは、文書(PDFまたはTIFF)を印刷した用紙の1ページおきに透かしを追加します。
透かしの文字や位置などその外観は指定できます。
サンプルでは、文書(PDFまたはTIFF)を印刷した用紙の1ページおきに透かしを追加します。
透かしの文字や位置などその外観は指定できます。
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
pPrinter = PDFPrnCreateObject();
szPrinterName = PDFPrnGetDefaultPrinter(pPrinter);
if (szPrinterName == NULL || (_tcscmp(szPrinterName, "") == 0))
{
_tprintf(_T("既定のプリンタがありません。\n"));
iReturnValue = 1;
goto cleanup;
}
// 入力ファイルをオープン
if (!PDFPrnOpen(pPrinter, szInputPath, _T("")))
{
_tprintf(_T("入力ファイル %s をオープンできません。 %s (エラーコード: 0x%08x).\n"),
szInputPath, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// プリンタをオープン
if (!PDFPrnOpenPrinter(pPrinter, szPrinterName))
{
_tprintf(_T("プリンタ %s をオープンできません。 %s (エラーコード).\n"),
szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
// 印刷ジョブ開始
if (!PDFPrnBeginDocument(pPrinter, _T("透かし印刷。\n")))
{
_tprintf(_T("プリンタに接続できません。 %s (エラーコード: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
PDFPrnSetCenter(pPrinter, 1); // 印刷位置
PDFPrnSetPaperSize(pPrinter, -2); // 用紙サイズ
// 入力ファイルの全ページを印刷
for (int iPage = 1; iPage <= PDFPrnGetPageCount(pPrinter); iPage++)
{
// 先頭を含む奇数ページに透かしを追加
if (iPage % 2 == 1)
{
PDFPrnSetPageNo(pPrinter, iPage);
fWidth = PDFPrnGetPageWidth(pPrinter);
fHeight = PDFPrnGetPageHeight(pPrinter);
fFontSize = (float)sqrt(fWidth * fWidth + fHeight * fHeight) / _tcslen(szWatermarkText);
PDFPrnSetWatermarkBold(pPrinter, 1);
PDFPrnSetWatermarkOutline(pPrinter, 1);
PDFPrnSetWatermarkFontName(pPrinter, _T("Courier"));
PDFPrnSetWatermarkFontSize(pPrinter, fFontSize);
PDFPrnSetWatermarkColor(pPrinter, 0xCCCCCC);
PDFPrnSetWatermarkXPos(pPrinter, fWidth / 5);
PDFPrnSetWatermarkYPos(pPrinter, (fHeight - fHeight / 5 + fFontSize / 2));
PDFPrnSetWatermarkAngle(pPrinter, (float)atan((double)fHeight / fWidth));
PDFPrnAddWatermarkText(pPrinter, szWatermarkText);
}
else
{
// 設定済みの透かし設定を削除
PDFPrnDeleteWatermarks(pPrinter);
}
// ページを印刷
if (!PDFPrnPrintPage(pPrinter, iPage))
{
_tprintf(_T("ファイル %s の %d ページをプリンタ %s に印刷できません。 %s (エラーコード: 0x%08x).\n"),
szInputPath, iPage, szPrinterName, PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
}
// 入力ファイルをクローズ
PDFPrnClose(pPrinter);
// 印刷ジョブ終了
if (!PDFPrnEndDocument(pPrinter))
{
_tprintf(_T("印刷ジョブを正しく終了できませんでした。 %s (エラーコード: 0x%08x).\n"),
PDFPrnGetErrorMessage(pPrinter), PDFPrnGetErrorCode(pPrinter));
iReturnValue = 1;
goto cleanup;
}
cleanup:
_tprintf(_T("終了"));
| C# | C/C++ | Python | ダウンロード |
// printerオブジェクト生成
using (Printer printer = new Printer())
{
string printerName = printer.GetDefaultPrinter();
if (String.IsNullOrEmpty(printerName))
throw new Exception(String.Format("既定のプリンタがありません。"));
// 入力ファイルをオープン
if (!printer.Open(inputPath, ""))
throw new Exception(String.Format("入力ファイル {0} をオープンできません。 " +
"{1} (エラーコード: 0x{2:x}).", inputPath, printer.ErrorMessage, printer.ErrorCode));
// プリンタをオープン
if (!printer.OpenPrinter(printerName))
throw new Exception(String.Format("プリンタ {0} をオープンできません。 " +
"{1} (エラーコード: 0x{2:x}).", printerName, printer.ErrorMessage, printer.ErrorCode));
// 印刷ジョブ開始
if (!printer.BeginDocument("透かし印刷。\n"))
throw new Exception(String.Format("プリンタに接続できません。 " +
"{0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
printer.Center = true; // 印刷位置
printer.PaperSize = -2; // 用紙サイズ
// 入力ファイルの全ページを印刷
for (int pageNo = 1; pageNo <= printer.PageCount; pageNo++)
{
// 先頭を含む奇数ページに透かしを追加
if (pageNo % 2 == 1)
{
printer.PageNo = pageNo;
float width = printer.PageWidth;
float height = printer.PageHeight;
float fontSize = (float)Math.Sqrt(width * width + height * height) /
watermarkText.Length;
printer.WatermarkBold = true;
printer.WatermarkOutline = true;
printer.WatermarkFontName = "Courier";
printer.WatermarkFontSize = fontSize;
printer.WatermarkColor = 0xCCCCCC;
printer.WatermarkXPos = width / 5;
printer.WatermarkYPos = (height - height / 5 + fontSize / 2);
printer.WatermarkAngle = (float)Math.Atan((double)height / width);
printer.AddWatermarkText(watermarkText);
}
else
{
// 設定済みの透かし設定を削除
printer.DeleteWatermarks();
}
// ページを印刷
if (!printer.PrintPage(pageNo))
throw new Exception(String.Format("ファイル {1} の {0} ページをプリンタ {2} で印刷できません。" +
" {3} (エラーコード: 0x{4:x}).", pageNo, inputPath, printerName,
printer.ErrorMessage, printer.ErrorCode));
}
// 入力ファイルをクローズ
printer.Close();
// 印刷ジョブ終了
if (!printer.EndDocument())
throw new Exception(String.Format("印刷ジョブを正しく終了できませんでした。" +
" {0} (エラーコード: 0x{1:x}).", printer.ErrorMessage, printer.ErrorCode));
}
Console.WriteLine("終了");
| C# | C/C++ | Python | ダウンロード |
import PdfPrinter
# printerオブジェクト生成
prn = PdfPrinter.PrinterInterface("1-RnbGT-ntGEK3a-KNNK7dh-ahgtRGF")
if not prn.LicenseIsValid:
print('License is Not valid.')
exit()
printerName = prn.GetDefaultPrinter()
watermarkText = 'TrustSoftwareSystem'
# 入力ファイルをオープン
if not prn.Open(inputPath, ''):
print('入力ファイル', inputPath, 'をオープンできません。')
else:
# プリンタをオープン
if not prn.OpenPrinter(printerName):
print('プリンタ', printerName, 'をオープンできません。')
else:
# 印刷ジョブ開始
if not prn.BeginDocument('Watermark'):
print('プリンタに接続できません。')
else:
prn.Center = True // 印刷位置
prn.PaperSize = -2 // 用紙サイズ
# 入力ファイルの全ページを印刷
for pageNo in range(1, prn.PageCount+1):
# 先頭を含む奇数ページに透かしを追加
if pageNo % 2 == 1:
prn.PageNo = pageNo
width = prn.PageWidth
height = prn.PageHeight
fontSize = math.sqrt(width * width + height * height) / len(watermarkText)
prn.WatermarkBold = True
prn.WatermarkOutline = False
prn.WatermarkFontName = "Courier"
prn.WatermarkFontSize = fontSize
prn.WatermarkColor = 0xCCCCCC
prn.WatermarkXPos = width / 5
prn.WatermarkYPos = (height - height / 5 + fontSize / 2)
prn.WatermarkAngle = math.atan(height / width)
prn.AddWatermarkText(watermarkText)
else:
# 設定済みの透かし設定を削除
prn.DeleteWatermarks()
# ページを印刷
if not prn.PrintPage(pageNo):
print('ファイル', inputPath, 'の', pageNo, 'ページをプリンタ', printerName, 'で印刷できません。')
# 印刷ジョブ終了
prn.EndDocument()
# 入力ファイルをクローズ
prn.Close()
print('終了')