私はPDFファイルを1つにマージする必要があります。私は一度にすべてのPDFファイルを持っている場合、これは問題ではありません。しかし、PDFファイルは段階的に導入され、ワークフローのために、それらが到着したときにそれらをマージする必要があります。ITEXTSharpはPDFファイルをディスク上の既存のファイルに追加します
だから、ワークフローは次のようになります。
1:なしPDFファイルは、1つを作成し、近くに新しいPDFファイルにページの最初のセットをマージ存在しない場合。
2:PDFが既に存在する場合は、それを開き、新しいページをターゲットPDFファイルにマージします。閉じる。
3:繰り返し。
以下はコードですが、以前に挿入されたページを上書きするだけで、私の質問はPDFSmartCopyを使用して既存のPDFファイルにPDFファイルを挿入する方法です。
私はフォントを最適化する必要があるので、PDFSmartCopyを使用する必要があります。 私はStackOverflowにこの良い文書を見つけましたが、どのように追加するかを示していますが、PDFSmartCopy以外のさまざまなテクニックを使用しています。
注:ターゲットPDFページを保持し、ターゲットPDFを削除して中間PDFをターゲットPDFとして保存するために中間PDFファイルを作成する必要があるかどうかはわかりません。しかし、私がそれをやる前に、私は中間ステップなしでそれを行う方法があるのだろうと思っていました。
using (FileStream stream = new FileStream(targetFile, FileMode.OpenOrCreate))
{
Document pdfDoc = new Document(PageSize.LETTER);
PdfSmartCopy pdf = new PdfSmartCopy(pdfDoc, stream);
pdfDoc.Open();
foreach (string file in files)
{
PdfReader reader = new PdfReader(file);
pdf.AddDocument(reader);
pdf.FreeReader(reader) ;
reader.Close();
}
}
私は、これはあなたが[iTextSharp PdfSmartCopyクラスの編集DirectContent](http://stackoverflow.com/a/12741148/1851377)探しているものだと思います。そうでなければ、これはあなたが行く必要がある方向にあなたを得るでしょう。私は 'PdfSmartCopy'を使用していません。それが役に立てば幸い。 – Eric
こんにちはエリック、ありがとうございますが、私は同じ問題に終わるでしょう。ファイルは新しいデータで上書きされ、古いデータは失われます。 .. – Mike
私はpdfsを一緒にマージすると私はオリジナルとすべてをマージするファイルを持つサブフォルダを作成します。私はパン粉を作るので、何かが間違っている場合、私はまだ最初からすべてを持っています。 – Eric