私はiTextSharpで比較的簡単なことをしようとしていますが、私はいつも非常に混乱していると感じています。iTextSharp - ファイルを開き、PdfDestinationとPdfActionを保存する
私が使用するサードパーティ製の製品ではPDFが生成されますが、初期表示設定(ズーム、幅に合わせるなど)は設定できません。
私は、私はiTextSharpでこれを行うことができますいくつかのコードを発見した: -
私は仕事ができないビットが既に存在するファイルにこれを適用する方法である - これはいるようだが新しいファイルやiTextSharpで作成しているものであれば問題ありませんが、既存のPDFではできません。これをやり遂げる方法はありますか?どのようにそれを行うことができますか?
事前に多くのおかげで、
アダム
PSは - すでにこれに対する答えを見つけた... StackOverflowのは私はしかし自分の質問をクローズさせていないのだろうか?ビットダフトようだが、いずれにせよ、このようにそれを行う -
PdfReader reader = new PdfReader(new FileStream(fileName, FileMode.Open, FileAccess.Read));
Rectangle size = reader.GetPageSizeWithRotation(1);
using (Document document = new Document(size))
{
using (PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Path.Combine(Path.GetDirectoryName(fileName), "Zoom" + Path.GetFileName(fileName)), FileMode.Create, FileAccess.ReadWrite)))
{
//open our document
document.Open();
PdfContentByte cb = writer.DirectContent;
//this creates a new destination to send the action to when the document is opened.
PdfDestination pdfDest = new PdfDestination(PdfDestination.FITH, reader.GetPageSize(1).Top);
//create a new action to send the document to our new destination.
PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer);
for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++)
{
//need to change page size for landscape/portrait
document.SetPageSize(reader.GetPageSizeWithRotation(pageNumber));
document.NewPage();
PdfImportedPage page = writer.GetImportedPage(reader, pageNumber);
cb.AddTemplate(page, 0, 0);
}
//set the page mode
int PageMode = 0;
PageMode += PdfWriter.PageLayoutOneColumn;
//set the open action for our writer object
writer.SetOpenAction(action);
writer.ViewerPreferences = PageMode;
writer.SetFullCompression();
//finally, close our document
document.Close();
}
}
こんにちはTim、これは私が上記のコードを見つけた場所です。応答ありがとう –