2つのpdfファイルをマージする必要があります。レターヘッド(source.pdf)とpdfページ(overlay.pdf)で生成されたコードです。レターヘッドはスキャンまたはデジタルコピーにすることができます。私はここで見つけたコードを使用した:https://social.msdn.microsoft.com/Forums/vstudio/en-US/e78ccbbf-3d00-4612-b342-269eb0075982/make-a-pdf-as-a-background-of-another-pdf?forum=csharpgeneral 。私の問題は、レターヘッドがスキャンされている場合、レターヘッドがデジタルコピーなどである場合、overlay.pdfからのテキストが表示されないことです。しかし、テキストはそこにあります。私はそれを選択することができます。 output.pdf with invisible text 誰もが考えてくれることを願っています。ありがとうございます。C#itextsharpレターヘッドで作業する
答えて
私はJavaの開発者ですので、C#の詳細について詳しくは分かりません。それにもかかわらず、私はC#を書くつもりです。そのコードがすぐに機能しない場合は、疑似コードのように扱います。原則は正しい。構文にエラーが含まれる可能性があります。
// Actual content
PdfReader overlay = new PdfReader("overlay.pdf");
int n = overlay.NumberOfPages;
PdfStamper stamper = new PdfStamper(overlay,
new FileStream("result.pdf", FileMode.Create);
// Company stationery (letter head)
PdfReader stationery = new PdfReader("source.pdf");
PdfImportedPage page = stamper.GetImportedPage(stationery, 1);
// Add stationery page to each page of real content
PdfContentByte background;
for (int i = 1; i <= n; i++) {
background = stamper.GetUnderContent(i);
background.AddTemplate(page, 0, 0);
}
// Close the stamper
stamper.Close();
私のコメントで説明したように、PdfWriter
を使用する必要はありません。実際の内容で既存のPDFを取り、レターヘッド付きの単一ページのPDFを追加し、それをバックグラウンドに追加します。
更新
あなたoverlay.pdf
が不透明である場合は、その内容がカバーされるように、あなたがsource.pdf
を見ていないということだけで正常です。その場合、透明度の使用を検討することがあります。
// Actual content
PdfReader overlay = new PdfReader("overlay.pdf");
int n = overlay.NumberOfPages;
PdfStamper stamper = new PdfStamper(overlay,
new FileStream("result.pdf", FileMode.Create);
// Company stationery (letter head)
PdfReader stationery = new PdfReader("source.pdf");
PdfImportedPage page = stamper.GetImportedPage(stationery, 1);
// Add stationery page to each page of real content
PdfContentByte foreground;
PdfGState state = new PdfGState();
state.FillOpacity = 0.6f;
for (int i = 1; i <= n; i++) {
foreground = stamper.GetOverContent(i);
foreground..SaveState();
foreground.SetGState(state);
foreground.AddTemplate(page, 0, 0);
foreground.RestoreState();
}
// Close the stamper
stamper.Close();
これは最適な結果ではない可能性があります。 0.6
の塗りつぶしの不透明度を変更することはできますが、奇妙な人があなたに不透明なレターヘッドのPDFを渡すと得られる最良の結果です(は行われていません。;これを行う人はまったくプロフェッショナルではありません)。
透明の代わりに、opはブレンドモード** Darken **を試みることもできます。多くの場合、これにより出力が向上します。 (オーバーレイされたコンテンツにもよりますが、出力には望ましくないアーティファクトも含まれる可能性があります。したがって、プレックスは実際に運用前にテストしてください)。 – mkl
- 1. C#|プロセスヘルプで作業する
- 2. ITextSharp - イメージを使用して作業する
- 3. iTextSharp VS2017 c#
- 4. C#リストビューの作業
- 5. AzureでiTextSharpでPDFを作成する
- 6. iTextSharpおよびC#
- 7. テーブルをitextsharpで作成するpdf
- 8. iTextSharpでマルチシートページを作成するには?
- 9. C#.Netで作業ディレクトリを探す
- 10. C++ pqxx作業トランザクションがクラッシュする
- 11. C/C++でenumを使用して作業する
- 12. C#でSVGファイルを作成し、iTextSharpでファイルをインポートする方法pdf?
- 13. C#HtmlAgilityPack作業のHtmlNodeCollection
- 14. C#の作業ネットワークパスは?
- 15. itextsharp c#.netのページ番号
- 16. MVC iTextSharpヘッダーとフッターc#
- 17. プロデューサーとコンシューマー、Cのsempahoreで作業
- 18. C#Async CTPチームでのインストールと作業
- 19. Amazon S3 API with Cでの作業
- 20. C++の構造体のマップで作業
- 21. iTextSharpは壊れたPDFファイルを作成しています。C#
- 22. C#でiTextSharpを使用して目次を作成する方法
- 23. itextsharp C#でPDFファイルにテキストを挿入
- 24. 目次とインデントを作成する(itextsharp)
- 25. C#動的でIEnumerableコレクションで作業する
- 26. C#/ Excel:グラフ上で最大シリーズサイズで作業する
- 27. C# - すべてのページのitextSharp小計
- 28. 文字列で作業するときのSegフォルトCプログラム/ Popen
- 29. 多対多の関係で作業するC#
- 30. obj-Cで配列 "loop"を再開して作業する
ええと...あなたは完全には正しくない例を使用しています。 'overlay.pdf'で' PdfStamper'を使用し、バックグラウンドで 'source.pdf'を追加してください。 'PdfWriter'を使う理由はありません。あなたは公式文書を見ましたか?具体的には:http://developers.itextpdf.com/question/how-superimpose-pages-existing-documents-another-document –
あなたの答えは「答えではありません」と書いてあります。これは、あなたの答え(実際にはコメント)がおそらくすぐに消えることを意味します。 –