- PR -

PDFlibでPDFファイルの上にPDFファイルを差込み印字したい。

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-03-10 18:30
こんにちは。

現在、VS2005 C# で、PDFlib7.0.3を使い、PDFファイルに印字しております。
現在は、@一枚のPDFファイルを裏面として印字し、実現できていますが、
この@のPDFとは、別のPDFファイルの中身を座標を指定して印字したいです。

PDFlib pdf; //@のPDFのオブジェクト

....
String _backpdf = "C:/image/image.pdf";
PDFlib backpdf = new PDFlib();
nt bb = 0;
//オープン
bb = backpdf.open_pdi_document(_backpdf, "");
if (bb == -1) {
//エラー
}

//@のPDFに「backpdf」のイメージをx:30 y:30の座標でセットしているつもりです。
pdf.fit_pdi_page(backpdf.open_pdi_page(bb, 1, ""), 30.0, 30.0, "");

//開放
backpdf.close_pdi_document(bb);

イメージとしては、PDFファイルをpng等のイメージ素材として、pdfファイルを印字対象としています。

このまま印字するとこのようなエラーが返されます。
Function must not be called in 'object' scope

お分かりになりましたら、よろしくお願いします。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-03-11 12:37
追記です。

このようにやってみましたが、今度はdocumentが開かなくなってしまいました。

****************************************

PDFlib pdf; //@のPDFのオブジェクト
....
String _backpdf = "c:/test.pdf";
string errmsg = "";
PDFlib backpdf = new PDFlib();
backpdf.set_parameter("compatibility", "1.4");
//ドキュメントオープン
int doc = backpdf.open_pdi_document(_backpdf, "");
if (doc == -1)
errmsg = backpdf.get_errmsg();

//ページオープン
int pgdoc = backpdf.open_pdi_page(doc, 1, "");
if (pgdoc == -1)
errmsg = backpdf.get_errmsg();

//印字
pdf.fit_pdi_page(pgdoc, 30, 30, "");

//クローズ
backpdf.close_pdi_page(pgdoc);
backpdf.close_pdi_document(doc);
****************************************

エラーはこのように出ているのですが、PDFファイルの互換性が無いといってるんでしょうか?
"During Xref rebuild: No trailer found in file 'c:/test.pdf'"

お分かりになりましたら、よろしくお願いします。

下記のようにしても、症状は同じでした。
int doc = backpdf.open_pdi_document(_backpdf, "infomode=false repair=force");

[ メッセージ編集済み 編集者: 未記入 編集日時 2009-03-11 12:49 ]
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2009-03-11 13:07
PDFLibで差込・・・とかいうから、「PDFLibだけじゃなくて、PDIを使わないとできないよ」と書こうとしたら・・・
PDIは使えている訳ですか?

# なんだか検索したら、PDFLib HOWTOが分かりやすそうな
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2009-03-11 13:23
ありがとうございます。

紹介いただいたページでも同じように確認しましたが、PHPですね。
そのソースを参考にしたのですが、API利用時、オプションを渡していないようでした。
ドキュメントを読むと「infomode=false 」でページを開かないとfit_pdi_page()は使えないとあり、多少違うのかと思いました。

と言いましても、このエラーは元ファイルが互換性の無いものなのか・・、どうやって調べれば、どう変換すれば良いのか分からない状態です。。

お分かりになりましたら、よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)