3

私は、大きな PDF ファイルを生成する PHP プロジェクトを継承したばかりで、通常、数千ページと数ギガのサーバー メモリの後に停止します。プロジェクトは PDFLib を使用してこれらのファイルを「メモリ内」に生成していました。

私はこれを修正する任務を負っていたので、最初にしたことは、メモリにビルドする代わりに、PDFLib 出力をファイルに送信することでした。問題は、まだ PDF メモリを構築しているように見えることです。また、メモリの多くが OS に返されることはないようです。最終的に、すべてが窒息して死にます。

大きな PDF のスニペットのみを作成するプログラムを実行すると、end_document() でデータがファイルに完全にフラッシュされていないようです。エラーは発生しませんが、PDF を読み取ることができず、16 進エディターで開くと、ストリームが不完全であることが明らかになります。

誰かが同じような困難を経験したことを願っています。

4

2 に答える 2

2

解決しました!各テキストフローで PDF_delete_textflow() を呼び出す必要がありました。これは、ドキュメント スコープが与えられ、ドキュメントが閉じられるまで消えないためです。これは、その時点より前に利用可能なすべてのメモリが使い果たされたため、決してありませんでした。

于 2009-06-05T23:35:16.997 に答える
1

ドキュメントを閉じるだけでなく、各ページを閉じることも確認する必要があります。これは、書き込まれたすべてのページの最後で「end_page_ext」を呼び出すことによって行われます。

さらに、別の PDF からページをインポートする場合は、インポートされた各ページの後に「close_pdi_page」を呼び出す必要があり、インポートされた各ドキュメントが完了したら「close_pdi_document」を呼び出す必要があります。

于 2009-06-05T15:14:53.677 に答える