void SavePDF() { iTextSharp.text.Document document = new iTextSharp.text.Document(); using (var stream = new MemoryStream()) { var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, stream); writer.CloseStream = false; document.Open(); foreach (Pixbuf pix in vimageslist1.Images) { if (pix.Width > pix.Height) { document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); } else { document.SetPageSize(iTextSharp.text.PageSize.A4); } document.NewPage(); var image = iTextSharp.text.Image.GetInstance(pix.SaveToBuffer("jpeg")); image.SetAbsolutePosition(0, 0); image.ScaleToFit(document.PageSize.Width, document.PageSize.Height); document.Add(image); } document.Close(); stream.Position = 0; File = stream.ToArray(); } }
private void SavePdf(string inputPath, string pathSaveFile) { // Create a new PDF document var doc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4); var fs = new FileStream(pathSaveFile, FileMode.Create); var wPdf = PdfWriter.GetInstance(doc, fs); doc.Open(); if (File.Exists(inputPath)) { //se arquivo unico var img = iTextSharp.text.Image.GetInstance(inputPath); doc.SetPageSize(new iTextSharp.text.Rectangle(img.Width, img.Height)); doc.NewPage(); img.SetAbsolutePosition(0, 0); wPdf.DirectContent.AddImage(img); } else { var imageFiles = Directory.GetFiles(inputPath, "*.*"); //.Where(f => fileExtensions.Contains(Path.GetExtension(f).ToLower())); //Array.Sort(imageFiles.ToArray(), new AlphanumComparatorFast()); //importing the images in the pdf foreach (string imageFile in imageFiles) { //checking file extension //string ext = Path.GetExtension(imageFile).ToLower(); //if ((string.Compare(ext, ".jpg") == 0) || (string.Compare(ext, ".jpeg") == 0) || (string.Compare(ext, ".png") == 0) || (string.Compare(ext, ".bmp") == 0) || (string.Compare(ext, ".new") == 0)) //{ var img = iTextSharp.text.Image.GetInstance(imageFile); doc.SetPageSize(new iTextSharp.text.Rectangle(img.Width, img.Height)); doc.NewPage(); img.SetAbsolutePosition(0, 0); wPdf.DirectContent.AddImage(img); //} } } //save file doc.Close(); doc.Dispose(); fs.Close(); fs.Dispose(); wPdf.Close(); wPdf.Dispose(); }
/* ----------------------------------------------------------------- */ /// /// CreateFromImage /// /// <summary> /// 画像ファイルから PdfReader オブジェクトを生成します。 /// </summary> /// /// <param name="src">画像ファイルのパス</param> /// <param name="io">入出力用オブジェクト</param> /// /// <returns>PdfReader オブジェクト</returns> /// /* ----------------------------------------------------------------- */ public static PdfReader CreateFromImage(string src, IO io) { using (var ms = new System.IO.MemoryStream()) using (var ss = io.OpenRead(src)) using (var image = Image.FromStream(ss)) { Debug.Assert(image != null); Debug.Assert(image.FrameDimensionsList != null); Debug.Assert(image.FrameDimensionsList.Length > 0); var doc = new iTextSharp.text.Document(); var writer = PdfWriter.GetInstance(doc, ms); doc.Open(); var guid = image.FrameDimensionsList[0]; var dim = new FrameDimension(guid); for (var i = 0; i < image.GetFrameCount(dim); ++i) { image.SelectActiveFrame(dim, i); var scale = PdfFile.Point / image.HorizontalResolution; var w = image.Width * scale; var h = image.Height * scale; doc.SetPageSize(new iTextSharp.text.Rectangle(w, h)); doc.NewPage(); doc.Add(image.GetItextImage()); } doc.Close(); writer.Close(); return(new PdfReader(ms.ToArray())); } }
/// <summary> /// Rubber stamps an image based PDF as a PDF/A-1B pdf. /// </summary> /// <param name="oldFile">The original pdf file.</param> /// <param name="newFile">The new pdf file.</param> public void ConvertPDF(FileInfo oldFile, FileInfo newFile) { using (FileStream fs = new FileStream(newFile.FullName, FileMode.Create, FileAccess.Write)) using (PdfReader pdf = new PdfReader(oldFile.FullName)) using (iTextSharp.text.Document doc = new iTextSharp.text.Document(pdf.GetPageSizeWithRotation(1))) using (PdfAWriter writer = PdfAWriter.GetInstance(doc, fs, PdfAConformanceLevel.PDF_A_1B)) { doc.Open(); ICC_Profile icc = ICC_Profile.GetInstance(Environment.GetEnvironmentVariable("SystemRoot") + @"\System32\spool\drivers\color\sRGB Color Space Profile.icm"); writer.SetOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc); PdfContentByte contentByte = writer.DirectContent; for (int i = 1; i <= pdf.NumberOfPages; i++) { doc.SetPageSize(pdf.GetPageSizeWithRotation(i)); doc.NewPage(); PdfImportedPage page = writer.GetImportedPage(pdf, i); contentByte.AddTemplate(page, 0, 0); } writer.CreateXmpMetadata(); doc.Close(); } OnPdfConverted(oldFile); }
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ internal bool CreatePDF(string PDFPath, ProgressBar PBar) { try { if (Tabs.Count > 0) { PBar.Invoke(new Action(() => { PBar.Maximum = Tabs.Count; PBar.Value = 0; PBar.Visible = true; PBar.Style = ProgressBarStyle.Marquee; })); if (File.Exists(PDFPath)) { File.Delete(PDFPath); } var CurDocument = new iTextSharp.text.Document(); var CurPdfWriter = PdfWriter.GetInstance(CurDocument, new FileStream(PDFPath, FileMode.Create, FileAccess.Write, FileShare.None)); CurPdfWriter.SetFullCompression(); Tabs = Tabs.OrderBy(o => o.Index).ToList(); for (int i = 0; i < Tabs.Count; i++) { var CurImage = Tabs[i].ScannedImage; var CurRectangle = new iTextSharp.text.Rectangle(CurImage.Width, CurImage.Height); CurDocument.SetPageSize(CurRectangle); CurDocument.SetMargins(0, 0, 0, 0); if (i == 0) { CurDocument.Open(); } if (i < (Tabs.Count - 1)) { CurDocument.NewPage(); } CurDocument.Add(iTextSharp.text.Image.GetInstance(CurImage, (iTextSharp.text.BaseColor)null)); PBar.Invoke(new Action(() => { PBar.Style = ProgressBarStyle.Continuous; PBar.Value++; })); } CurDocument.Close(); } else { MessageBox.Show("Keine Scanns vorhanden"); } GC.Collect(); return(true); } catch (Exception ex) { Program.MeldeFehler(ex.Message + "\n" + ex.StackTrace); Environment.Exit(1); return(false); } }
private bool EncryptPDF(String strPath, String StrDesPath, String strOpenPassWord, String strOwnerPassWord) { try { PdfReader itextPdfReader = new PdfReader(strPath); iTextSharp.text.Document document = new iTextSharp.text.Document(); FileStream fileStream = new FileStream(StrDesPath, FileMode.Create); PdfWriter pdfWriter = PdfWriter.GetInstance(document, fileStream); String strOpenPas, strOwnerPas; strOpenPas = this.OpenFilPassWText.Text; strOwnerPas = this.PerrmisionPassText.Text; pdfWriter.SetEncryption(PdfWriter.STRENGTH40BITS, strOpenPas, strOwnerPas, PdfWriter.AllowCopy); document.Open(); //Setting PDF file enctyption page count document.SetPageSize(iTextSharp.text.PageSize.LEDGER.Rotate()); iTextSharp.text.pdf.PdfContentByte oDirectContent = pdfWriter.DirectContent; int iNUmberOfPages = itextPdfReader.NumberOfPages; int iPage = 0; while (iPage < iNUmberOfPages) { iPage += 1; document.SetPageSize(itextPdfReader.GetPageSizeWithRotation(iPage)); document.NewPage(); iTextSharp.text.pdf.PdfImportedPage oPdfImportedPage = pdfWriter.GetImportedPage(itextPdfReader, iPage); int iRotation = itextPdfReader.GetPageRotation(iPage); if (iRotation == 90 || iRotation == 270) { oDirectContent.AddTemplate(oPdfImportedPage, 0, -1.0F, 1.0F, 0, 0, itextPdfReader.GetPageSizeWithRotation(iPage).Height); } else { oDirectContent.AddTemplate(oPdfImportedPage, 1.0F, 0, 0, 1.0F, 0, 0); } } document.Close(); return(true); }catch (Exception e) { //e.ToString(); return(false); } }
//image to pdf method public void Convert(string dir) { System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(dir); System.IO.FileInfo[] pngfiles = di.GetFiles("*.png", System.IO.SearchOption.AllDirectories); System.IO.FileInfo[] jpgfiles = di.GetFiles("*.jpg", System.IO.SearchOption.AllDirectories); Console.WriteLine(pngfiles.Length); Console.WriteLine(jpgfiles.Length); string[] paths = new string[pngfiles.Length + jpgfiles.Length]; Console.WriteLine(paths.Length); var i = -1; foreach (var p in pngfiles) { i++; paths[i] = dir + "/" + p.ToString(); } foreach (var p in jpgfiles) { i++; paths[i] = dir + "/" + p.ToString(); } iTextSharp.text.Rectangle pageSize = null; using (var srcImage = new Bitmap(paths[0].ToString())) { pageSize = new iTextSharp.text.Rectangle(0, 0, srcImage.Width, srcImage.Height); } using (var ms = new MemoryStream()) { var document = new iTextSharp.text.Document(pageSize, 0, 0, 0, 0); iTextSharp.text.pdf.PdfWriter.GetInstance(document, ms).SetFullCompression(); document.Open(); //progress.Maximum = paths.Length; //progress.Value = 0; var prg = 0; foreach (var ii in paths) { label.Content = ii; var image = iTextSharp.text.Image.GetInstance(ii.ToString()); document.SetPageSize(new iTextSharp.text.Rectangle(0, 0, image.Width, image.Height)); document.Add(image); //progress.Value = prg; } document.Close(); File.WriteAllBytes(dir + ".pdf", ms.ToArray()); label.Content = "Conversion complete !"; } }
void CreatePdf(string input_path, IList<int> pages, string output_path) { // open a reader for the source file PdfReader reader = new PdfReader(input_path); try { reader.RemoveUnusedObjects(); // get output file using (var fs = new FileStream(output_path, FileMode.Create, FileAccess.Write)) { // create input document var input_doc = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(pages[0])); // create the writer PdfWriter writer = PdfWriter.GetInstance(input_doc, fs); try { writer.SetFullCompression(); input_doc.Open(); try { // for each page copy the page directly from the reader into the writer PdfContentByte cb = writer.DirectContent; foreach (int page_number in pages) { input_doc.SetPageSize(reader.GetPageSizeWithRotation(page_number)); input_doc.NewPage(); PdfImportedPage page = writer.GetImportedPage(reader, page_number); int rotation = reader.GetPageRotation(page_number); if (rotation == 90 || rotation == 270) cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(page_number).Height); else cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); } } finally { input_doc.Close(); } } finally { writer.Close(); } } } finally { reader.Close(); } }
protected void OnButtonPDFClicked(object sender, EventArgs e) { FileChooserDialog fc = new FileChooserDialog("Укажите файл для сохранения документа", this, FileChooserAction.Save, "Отмена", ResponseType.Cancel, "Сохранить", ResponseType.Accept); fc.CurrentName = DocInfo.Name + " " + entryNumber.Text + ".pdf"; fc.Show(); if (fc.Run() == (int)ResponseType.Accept) { fc.Hide(); iTextSharp.text.Document document = new iTextSharp.text.Document(); using (var stream = new FileStream(fc.Filename, FileMode.Create, FileAccess.Write, FileShare.None)) { iTextSharp.text.pdf.PdfWriter.GetInstance(document, stream); document.Open(); foreach (DocumentImage img in Images) { if (img.Image.Width > img.Image.Height) { document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); } else { document.SetPageSize(iTextSharp.text.PageSize.A4); } document.NewPage(); var image = iTextSharp.text.Image.GetInstance(img.file); image.SetAbsolutePosition(0, 0); image.ScaleToFit(document.PageSize.Width, document.PageSize.Height); document.Add(image); } document.Close(); } } fc.Destroy(); }
static private string WriteCompatiblePdf(string sFilename) { // string s = System.IO.Path.GetTempPath(); string sNewPdf = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf"; sNewPdfs.Add(sNewPdf); iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(sFilename); // we retrieve the total number of pages int n = reader.NumberOfPages; // step 1: creation of a document-object iTextSharp.text.Document document = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(1)); // step 2: we create a writer that listens to the document iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(sNewPdf, FileMode.Create)); //write pdf that pdfsharp can understand writer.SetPdfVersion(iTextSharp.text.pdf.PdfWriter.PDF_VERSION_1_4); // step 3: we open the document document.Open(); iTextSharp.text.pdf.PdfContentByte cb = writer.DirectContent; iTextSharp.text.pdf.PdfImportedPage page; int rotation; int i = 0; while (i < n) { i++; document.SetPageSize(reader.GetPageSizeWithRotation(i)); document.NewPage(); page = writer.GetImportedPage(reader, i); rotation = reader.GetPageRotation(i); if (rotation == 90 || rotation == 270) { cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height); } else { cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); } } // step 5: we close the document document.Close(); return(sNewPdf); }
/// <summary> /// Combines a collection of PDF's into a single file /// </summary> /// <param name="paths">The string collection of PDF file paths to combine.</param> /// <returns>A string file path to the new PDF file</returns> private static string MergePdfFiles(IEnumerable <string> paths) { var tempFile = Path.GetTempFileName(); using (var fileStream = new FileStream(tempFile, FileMode.Append)) { using (var newDocument = new Document()) { using (var writer = PdfWriter.GetInstance(newDocument, fileStream)) { newDocument.Open(); var contentByte = writer.DirectContent; PdfImportedPage newPage = null; foreach (var sourceFile in paths) { if (string.IsNullOrWhiteSpace(sourceFile)) { continue; } var sourcePdfReader = new PdfReader(sourceFile); var numberOfSourcePages = sourcePdfReader.NumberOfPages; for (var i = 1; i <= numberOfSourcePages; i++) { newPage = writer.GetImportedPage(sourcePdfReader, i); newDocument.SetPageSize(sourcePdfReader.GetPageSize(i)); newDocument.NewPage(); contentByte.AddTemplate(newPage, 0, 0); } } if (newPage == null) { return(null); } newDocument.Close(); } } } return(tempFile); }
/// <summary> /// from http://forum.pdfsharp.net/viewtopic.php?p=2069 /// uses itextsharp to convert any pdf to 1.4 compatible pdf /// </summary> static private string WritePdf1pt4Version(string inputPath) { var tempFileName = Path.GetTempFileName(); File.Delete(tempFileName); string outputPath = tempFileName + ".pdf"; iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(inputPath); // we retrieve the total number of pages int n = reader.NumberOfPages; // step 1: creation of a document-object iTextSharp.text.Document document = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(1)); // step 2: we create a writer that listens to the document iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(outputPath, FileMode.Create)); //write pdf that pdfsharp can understand writer.SetPdfVersion(iTextSharp.text.pdf.PdfWriter.PDF_VERSION_1_4); // step 3: we open the document document.Open(); iTextSharp.text.pdf.PdfContentByte cb = writer.DirectContent; iTextSharp.text.pdf.PdfImportedPage page; int rotation; int i = 0; while (i < n) { i++; document.SetPageSize(reader.GetPageSizeWithRotation(i)); document.NewPage(); page = writer.GetImportedPage(reader, i); rotation = reader.GetPageRotation(i); if (rotation == 90 || rotation == 270) { cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height); } else { cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); } } // step 5: we close the document document.Close(); return(outputPath); }
public static void Convert(List <Tiff.PageInfo> il, string dstPath) { using (var file_stream = new FileStream(dstPath, FileMode.Create, FileAccess.Write, FileShare.None)) using (var document = new iTextSharp.text.Document()) using (PdfWriter pdfWriter = PdfWriter.GetInstance(document, file_stream)) { document.SetMargins(0, 0, 0, 0); document.Open(); foreach (Tiff.PageInfo info in il) { try { bool needRotate = info.Image.Width > info.Image.Height; if (needRotate) { info.Image.RotateFlip(RotateFlipType.Rotate90FlipNone); } Image gif = Image.GetInstance(info.Image, ImageFormat .Png); gif.ScaleAbsolute((float)(info.Image.Width * (72.0 / info.Image.HorizontalResolution)), (float)(info.Image.Height * (72.0 / info.Image.VerticalResolution))); gif.SetAbsolutePosition(1, 1); document.SetPageSize(new Rectangle(gif.ScaledWidth, gif.ScaledHeight)); document.NewPage(); pdfWriter.DirectContent.AddImage(gif); if (needRotate) { pdfWriter.AddPageDictEntry(PdfName.ROTATE, new PdfNumber(270)); } } catch (Exception ex) { Data.Env.WriteToLog(ex); return; } } document.Close(); } }
public static void SaveImages(List <ParsedImage> images, string outputFile) { var doc = new iTextSharp.text.Document(); try { var writer = PdfWriter.GetInstance(doc, new FileStream(outputFile, FileMode.Create)); writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_5); writer.CompressionLevel = PdfStream.BEST_COMPRESSION; doc.Open(); foreach (var parsedImage in images) { var image = iTextSharp.text.Image.GetInstance(parsedImage.Image, parsedImage.Format); var width = parsedImage.Width; var height = parsedImage.Height; if ((parsedImage.PerformedRotation == RotateFlipType.Rotate90FlipNone) || (parsedImage.PerformedRotation == RotateFlipType.Rotate270FlipNone)) { var temp = width; width = height; height = temp; } var size = new iTextSharp.text.Rectangle(width, height); image.ScaleAbsolute(width, height); image.CompressionLevel = PdfStream.BEST_COMPRESSION; doc.SetPageSize(size); doc.NewPage(); image.SetAbsolutePosition(0, 0); doc.Add(image); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { doc.Close(); } }
public static void convertJpegToPDFUsingItextSharp() { List <string> path = imagePath; if (path.Count != 0) { iTextSharp.text.Document document = new iTextSharp.text.Document(); PdfWriter write = PdfWriter.GetInstance(document, new FileStream(@"H:\temp\1.pdf", FileMode.Append, FileAccess.Write)); document.Open(); for (int i = 0; i < path.Count; i++) { Bitmap b = new System.Drawing.Bitmap(path[i]); document.SetPageSize(new iTextSharp.text.Rectangle(b.Width + 72f, b.Height + 72f)); iTextSharp.text.Image a = iTextSharp.text.Image.GetInstance(b, ImageFormat.Png); document.NewPage(); document.Add(a); b.Dispose(); } document.Close(); } }
private bool Add2Pdf(Stream instream, Stream outstream) { try { instream.Position = 0; PdfReader reader = new PdfReader(instream); int n = reader.NumberOfPages; // add content, page-by-page PdfImportedPage page; for (int p = 0; p < n; p++) { document.SetPageSize(reader.GetPageSizeWithRotation(p + 1)); document.NewPage(); page = copier.GetImportedPage(reader, p + 1); copier.AddPage(page); } reader.Close(); } catch (Exception ex) { System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); string methodName = st.GetFrame(0).GetMethod().Name; string innerMsg = ""; if (ex.InnerException != null) { innerMsg = ex.InnerException.Message; } Log(methodName, ex.Message, innerMsg); return(false); } return(true); }
/// <summary> /// Generate the pdf from the images /// </summary> private void GeneratePdf() { // Create a new PDF document var document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4); string filename = temporaryDir + ".pdf"; var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create)); document.Open(); string[] imageFiles = Directory.GetFiles(temporaryDir); //count for progression bar CurOneStep = imageFiles.Count(); int divider; if (DataAccess.Instance.g_ReduceSize) divider = 33; else divider = 50; CurOneStep = divider / CurOneStep; //importing the images in the pdf foreach (string imageFile in imageFiles) { if (DataAccess.Instance.g_Processing) { try { //updating progress bar DataAccess.Instance.g_curProgress += CurOneStep; evnt_UpdateCurBar(); if (IsSingleFile) { DataAccess.Instance.g_totProgress = DataAccess.Instance.g_curProgress; evnt_UpdatTotBar(this, e); } //checking file extension string ext = Path.GetExtension(imageFile).ToLower(); if ((string.Compare(ext, ".jpg") == 0) || (string.Compare(ext, ".jpeg") == 0) || (string.Compare(ext, ".png") == 0) || (string.Compare(ext, ".bmp") == 0) || (string.Compare(ext, ".new") == 0)) { //var size = iTextSharp.text.PageSize.A4; var img = iTextSharp.text.Image.GetInstance(imageFile); //img.ScaleToFit(iTextSharp.text.PageSize.A4.Width, iTextSharp.text.PageSize.A4.Height); document.SetPageSize(new iTextSharp.text.Rectangle(img.Width, img.Height)); // Create an empty page document.NewPage(); img.SetAbsolutePosition(0, 0); writer.DirectContent.AddImage(img); } } catch (Exception e) { evnt_ErrorNotify(this, imageFile + " : " + e.Message.ToString()); } } } //saving file document.Close(); }
public static void SaveImages(List<ParsedImage> images, string outputFile) { var doc = new iTextSharp.text.Document(); try { var writer = PdfWriter.GetInstance(doc, new FileStream(outputFile, FileMode.Create)); writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_5); writer.CompressionLevel = PdfStream.BEST_COMPRESSION; doc.Open(); foreach (var parsedImage in images) { var image = iTextSharp.text.Image.GetInstance(parsedImage.Image, parsedImage.Format); var width = parsedImage.Width; var height = parsedImage.Height; if ((parsedImage.PerformedRotation == RotateFlipType.Rotate90FlipNone) || (parsedImage.PerformedRotation == RotateFlipType.Rotate270FlipNone)) { var temp = width; width = height; height = temp; } var size = new iTextSharp.text.Rectangle(width, height); image.ScaleAbsolute(width, height); image.CompressionLevel = PdfStream.BEST_COMPRESSION; doc.SetPageSize(size); doc.NewPage(); image.SetAbsolutePosition(0, 0); doc.Add(image); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { doc.Close(); } }
/// <summary> /// Generate the pdf from the images /// </summary> private void GeneratePdf() { // Create a new PDF document var document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4); string filename = temporaryDir + ".pdf"; var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create)); document.Open(); string[] imageFiles = Directory.GetFiles(temporaryDir); //count for progression bar CurOneStep = imageFiles.Count(); int divider; if (DataAccess.Instance.g_ReduceSize) { divider = 33; } else { divider = 50; } CurOneStep = divider / CurOneStep; //importing the images in the pdf foreach (string imageFile in imageFiles) { if (DataAccess.Instance.g_Processing) { try { //updating progress bar DataAccess.Instance.g_curProgress += CurOneStep; evnt_UpdateCurBar(); if (IsSingleFile) { DataAccess.Instance.g_totProgress = DataAccess.Instance.g_curProgress; evnt_UpdatTotBar(this, e); } //checking file extension string ext = Path.GetExtension(imageFile).ToLower(); if ((string.Compare(ext, ".jpg") == 0) || (string.Compare(ext, ".jpeg") == 0) || (string.Compare(ext, ".png") == 0) || (string.Compare(ext, ".bmp") == 0) || (string.Compare(ext, ".new") == 0)) { //var size = iTextSharp.text.PageSize.A4; var img = iTextSharp.text.Image.GetInstance(imageFile); //img.ScaleToFit(iTextSharp.text.PageSize.A4.Width, iTextSharp.text.PageSize.A4.Height); document.SetPageSize(new iTextSharp.text.Rectangle(img.Width, img.Height)); // Create an empty page document.NewPage(); img.SetAbsolutePosition(0, 0); writer.DirectContent.AddImage(img); } } catch (Exception e) { evnt_ErrorNotify(this, imageFile + " : " + e.Message.ToString()); } } } //saving file document.Close(); }
/// <summary> /// 把多个PDF文件、word文件、JPG/PNG/jpge图合并成一个PDF文档 /// </summary> /// <param name="fileList">需要合并文件的完整路径列表</param> /// <param name="outMergeFile">输出文件完整路径</param> /// <param name="msg">警告或错误消息</param> public void MergePDFFile(List <string> fileList, string outMergeFile, ref string msg) { PdfReader reader; PdfImportedPage newPage; PdfWriter pw; iTextSharp.text.Document document = new iTextSharp.text.Document(); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outMergeFile, FileMode.Create)); document.Open(); PdfContentByte cb = writer.DirectContent; iTextSharp.text.Rectangle re; foreach (var itemFile in fileList) { string fileName = Path.GetFileName(itemFile); var ext = Path.GetExtension(itemFile).ToLower(); if (!File.Exists(itemFile)) { msg += string.Format("文件打印合并__{0} 文件不存在", fileName); continue; } FileInfo fInfo = new FileInfo(itemFile); if (fInfo.Length < 1) { msg += string.Format("文件打印合并__文件内容为空,无法打印,{0}", fileName); return; } if (".pdf".Equals(ext)) { reader = new PdfReader(itemFile); int iPageNum = reader.NumberOfPages; for (int j = 1; j <= iPageNum; j++) { //获取Reader的pdf页的打印方向 re = reader.GetPageSize(reader.GetPageN(j)); //设置合并pdf的打印方向 document.SetPageSize(re); document.NewPage(); newPage = writer.GetImportedPage(reader, j); cb.AddTemplate(newPage, 0, 0); } } else if (".doc".Equals(ext) || ".docx".Equals(ext)) { Aspose.Words.Document doc = new Aspose.Words.Document(itemFile); string newPdf = Path.GetDirectoryName(itemFile) + "\\" + Path.GetFileNameWithoutExtension(itemFile) + ".pdf"; doc.Save(newPdf, SaveFormat.Pdf); reader = new PdfReader(newPdf); int iPageNum = reader.NumberOfPages; for (int j = 1; j <= iPageNum; j++) { //获取Reader的pdf页的打印方向 re = reader.GetPageSize(reader.GetPageN(j)); //设置合并pdf的打印方向 document.SetPageSize(re); document.NewPage(); newPage = writer.GetImportedPage(reader, j); cb.AddTemplate(newPage, 0, 0); } } else if (".jpg".Equals(ext) || ".jpeg".Equals(ext) || ".png".Equals(ext) || ".bmp".Equals(ext)) { FileStream rf = new FileStream(itemFile, FileMode.Open, FileAccess.Read); int size = (int)rf.Length; byte[] imext = new byte[size]; rf.Read(imext, 0, size); rf.Close(); iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imext); //调整图片大小,使之适合A4 var imgHeight = img.Height; var imgWidth = img.Width; if (img.Height > iTextSharp.text.PageSize.A4.Height - 30) { imgHeight = iTextSharp.text.PageSize.A4.Height - 30; } if (img.Width > iTextSharp.text.PageSize.A4.Width - 30) { imgWidth = iTextSharp.text.PageSize.A4.Width - 30; } img.ScaleToFit(imgWidth, imgHeight); //调整图片位置,使之居中 img.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE; document.NewPage(); document.Add(img); } } document.Close(); }
protected void OnButtonPDFClicked(object sender, EventArgs e) { FileChooserDialog fc= new FileChooserDialog("Укажите файл для сохранения документа", this, FileChooserAction.Save, "Отмена",ResponseType.Cancel, "Сохранить",ResponseType.Accept); fc.CurrentName = DocInfo.TypeName + " " + entryNumber.Text + ".pdf"; fc.Show(); if(fc.Run() == (int) ResponseType.Accept) { fc.Hide(); iTextSharp.text.Document document = new iTextSharp.text.Document(); using (var stream = new FileStream(fc.Filename, FileMode.Create, FileAccess.Write, FileShare.None)) { iTextSharp.text.pdf.PdfWriter.GetInstance(document, stream); document.Open(); foreach(DocumentImage img in Images) { if(img.Image.Width > img.Image.Height) document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); else document.SetPageSize(iTextSharp.text.PageSize.A4); document.NewPage(); var image = iTextSharp.text.Image.GetInstance(img.file); image.SetAbsolutePosition(0,0); image.ScaleToFit(document.PageSize.Width, document.PageSize.Height); document.Add(image); } document.Close(); } } fc.Destroy(); }
private static void MergeFiles(string destinationFile, string[] sourceFiles) { if (System.IO.File.Exists(destinationFile)) { System.IO.File.Delete(destinationFile); } string[] sSrcFile; sSrcFile = new string[sourceFiles.Count()]; string[] arr = new string[sourceFiles.Count()]; for (int i = 0; i <= sourceFiles.Length - 1; i++) { if (sourceFiles[i] != null) { if (sourceFiles[i].Trim() != "") { arr[i] = sourceFiles[i].ToString(); } } } if (arr != null) { sSrcFile = new string[sourceFiles.Count()]; for (int ic = 0; ic <= arr.Length - 1; ic++) { sSrcFile[ic] = arr[ic].ToString(); } } try { int f = 0; iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(sSrcFile[f]); int n = reader.NumberOfPages; using (iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4)) { iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(destinationFile, FileMode.Create)); document.Open(); iTextSharp.text.pdf.PdfContentByte cb = writer.DirectContent; iTextSharp.text.pdf.PdfImportedPage page; int rotation; while (f < sSrcFile.Length) { int i = 0; while (i < n) { i++; document.SetPageSize(iTextSharp.text.PageSize.A4); document.NewPage(); page = writer.GetImportedPage(reader, i); rotation = reader.GetPageRotation(i); if (rotation == 90 || rotation == 270) { cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height); } else { cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); } //Response.Write("\n Processed page " + i); } f++; if (f < sSrcFile.Length) { reader = new iTextSharp.text.pdf.PdfReader(sSrcFile[f]); n = reader.NumberOfPages; // Response.Write("There are " + n + " pages in the original file."); } } // Response.Write("Success"); document.Close(); } } catch (Exception e) { // Response.Write(e.Message); } }
static void Read_GVD(BinaryReaderBE br, sGVD gvd, string folderOut) { br.BaseStream.Position = gvd.offset; // Read header byte[] header = br.ReadBytes(0x10); // GVEW0100JPEG0100 gvd.bigSize = new Size(br.ReadInt32(), br.ReadInt32()); // Size of the biggest quality Console.Write("\t\tHeader:\t"); Show_String(header); Console.WriteLine("\t\tBiggest size: {0}", gvd.bigSize.ToString() + " px"); // Read first BLK_ section (contains TOC) BLK_Header blk1 = new BLK_Header(); blk1.type = br.ReadUInt32(); if (blk1.type != 0x424C4B5F) { Console.WriteLine("Error Invalid header! BLK_"); return; } blk1.size = br.ReadUInt32(); blk1.id = br.ReadUInt32(); blk1.padding = br.ReadUInt32(); // Unknown values, inside the BLK_ section br.ReadUInt32(); // Unknown: Always 0x20 br.ReadUInt32(); // Unknown: Always 0x04 // Start of the TOC section uint num_entries = blk1.size / BlockImage.ENTRY_SIZE; uint curroffset = gvd.offset + blk1.size + sGVD.HEADER_SIZE + 2 * BLK_Header.HEADER_SIZE; uint entry_offset = gvd.offset + sGVD.HEADER_SIZE + BLK_Header.HEADER_SIZE + 0x08; // 0x08 = unknown values Page[] page = new Page[BlockImage.MAX_QUALITY]; for (int i = 0; i < page.Length; i++) { page[i].blocks = new List <BlockImage>(); } // Read each TOC entry into a BlockImage structure for (int i = 0; i < num_entries; i++) { br.BaseStream.Position = entry_offset + i * BlockImage.ENTRY_SIZE; BlockImage bi = new BlockImage(); bi.posX = br.ReadUInt32(); bi.posY = br.ReadUInt32(); bi.quality = br.ReadUInt32(); bi.data_size = br.ReadUInt32(); bi.unk1 = br.ReadUInt32(); bi.padding = br.ReadUInt32(); bi.width = br.ReadUInt32(); bi.height = br.ReadUInt32(); // Get image data, it could be compressed in a GVMP structure // for blocked and unblocked images br.BaseStream.Position = curroffset; bi.data = new byte[1][]; bi.data[0] = br.ReadBytes((int)bi.data_size); if (Encoding.ASCII.GetString(bi.data[0], 0, 4) == "GVMP") { bi.data = Decompress_GVMP(bi.data[0]); } if (bi.data == null) { continue; } page[bi.quality].blocks.Add(bi); // Pad size and add to the current offset curroffset += bi.data_size; if (curroffset % 0x10 != 0) { curroffset += 0x10 - (curroffset % 0x10); } } // Draw and save page for (int i = 0; i < page.Length; i++) { if (quality != -1 && quality != i) { continue; } if (page[i].blocks.Count == 0) { continue; } // For blocked and unblocked for (int j = 0; j < page[i].blocks[0].data.Length; j++) { // Check if we should extract that page bool extract = (page[i].blocks[0].data.Length == 1); // Only if there are blocked and unblocked pages if (blocked == 0) { extract = true; } else if (blocked == 1 && j == 0) { extract = true; } else if (blocked == 2 && j == 1) { extract = true; } if (!extract) { continue; } string img_out = Path.Combine(folderOut, gvd.name + '_' + i.ToString()); if (j != 0) { img_out += "_unblocked"; } img_out += ".jpg"; Bitmap bmp = Draw_Page(page[i], j); if (bmp != null) { if (File.Exists(img_out)) { File.Delete(img_out); } bmp.Save(img_out, System.Drawing.Imaging.ImageFormat.Jpeg); // Add it to the pdf if (convert == 1) { pdf.SetPageSize(new iTextSharp.text.Rectangle(0, 0, bmp.Width, bmp.Height)); pdf.NewPage(); iTextSharp.text.Image jpg = iTextSharp.text.Jpeg.GetInstance(img_out); //jpg.Alignment = iTextSharp.text.Image.ORIGINAL_JPEG; jpg.SetAbsolutePosition(0, 0); pdf.Add(jpg); } bmp.Dispose(); bmp = null; } } page[i].blocks.Clear(); } page = null; }
/// <summary> /// Merge CV and covering letter and return pdf location /// </summary> /// <param name="filesToMerge"></param> /// <param name="outputFilename"></param> /// <param name="result"></param> public static void MergePdf(IEnumerable<BulkPrintDocEntry> filesToMerge, string outputFilename, ref BulkPrintCvResult result) { result.ErrorCvs = new List<BulkPrintErrorCvs>(); var bulkPrintDocEntries = filesToMerge as BulkPrintDocEntry[] ?? filesToMerge.ToArray(); if (!bulkPrintDocEntries.Any()) return; var document = new iTextSharp.text.Document(); // initialize pdf writer var writer = PdfWriter.GetInstance(document, new FileStream(outputFilename, FileMode.Create)); // open document to write document.Open(); var content = writer.DirectContent; foreach (var docEntry in bulkPrintDocEntries) { var sCoveringLetterHtml = docEntry.CoveringLetterHtml; // create page document.NewPage(); // add styles var styles = new StyleSheet(); styles.LoadStyle("left", "width", "22%"); styles.LoadTagStyle("td", "valign", "top"); styles.LoadStyle("bordered", "border", "1"); var hw = new HTMLWorker(document, null, styles); hw.Parse(new StringReader(sCoveringLetterHtml)); var sFileName = docEntry.CvFileName.ToLower().Replace(".docx", ".pdf").Replace(".DOCX", ".pdf").Replace(".doc", ".pdf").Replace(".DOC", ".pdf").Replace(".rtf", ".pdf").Replace(".RTF", ".pdf"); if (!File.Exists(sFileName)) { //pdf file not exists result.ErrorCvs.Add(new BulkPrintErrorCvs { Error = "Pdf file does not exists. " + sFileName, ContactId = docEntry.ContactId, ContactName = new Contacts().GetCandidateName(docEntry.ContactId), Document = docEntry.Doc }); continue; } // Create pdf reader var reader = new PdfReader(sFileName); if (!reader.IsOpenedWithFullPermissions) { //pdf file does not have permission result.ErrorCvs.Add(new BulkPrintErrorCvs { Error = "Do not have enough permissions to read the file", ContactId = docEntry.ContactId, ContactName = new Contacts().GetCandidateName(docEntry.ContactId), Document = docEntry.Doc }); continue; } var numberOfPages = reader.NumberOfPages; // Iterate through all pages for (var currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++) { // Determine page size for the current page document.SetPageSize(reader.GetPageSizeWithRotation(currentPageIndex)); // Create page document.NewPage(); var importedPage = writer.GetImportedPage(reader, currentPageIndex); // Determine page orientation var pageOrientation = reader.GetPageRotation(currentPageIndex); switch (pageOrientation) { case 90: content.AddTemplate(importedPage, 0, -1, 1, 0, 0, reader.GetPageSizeWithRotation(currentPageIndex).Height); break; case 270: content.AddTemplate(importedPage, 0, 1, -1, 0, reader.GetPageSizeWithRotation(currentPageIndex).Width, 0); break; default: content.AddTemplate(importedPage, 1f, 0, 0, 1f, 0, 0); break; } } } document.Close(); }
public Boolean MergePdfFiles(String[] pdfFiles, String outputPath) { // Optional ByVal authorName As String = "", _ // Optional ByVal creatorName As String = "", _ // Optional ByVal subject As String = "", _ // Optional ByVal title As String = "", _ // Optional ByVal keywords As String = "") Boolean result = false; int pdfCount = 0; //'total input pdf file count int f = 0; //'pointer to current input pdf file string fileName = String.Empty; // 'current input pdf filename iTextSharp.text.pdf.PdfReader reader = null; int pageCount = 0; //'cureent input pdf page count iTextSharp.text.Document pdfDoc = null; // 'the output pdf document iTextSharp.text.pdf.PdfWriter writer = null; iTextSharp.text.pdf.PdfContentByte cb = null; // 'Declare a variable to hold the imported pages iTextSharp.text.pdf.PdfImportedPage page = null; int rotation = 0; bool unethicalreading = false; // 'Declare a font to used for the bookmarks iTextSharp.text.Font bookmarkFont = iTextSharp.text.FontFactory.GetFont(iTextSharp.text.FontFactory.HELVETICA, 12, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.BLUE); // Try pdfCount = pdfFiles.Length; if (pdfCount > 1) { // 'Open the 1st pad using PdfReader object fileName = pdfFiles[f]; reader = new iTextSharp.text.pdf.PdfReader(fileName); // reader. iTextSharp.text.pdf.PdfReader.unethicalreading = unethicalreading; // 'Get page count pageCount = reader.NumberOfPages; // 'Instantiate an new instance of pdf document and set its margins. This will be the output pdf. // 'NOTE: bookmarks will be added at the 1st page of very original pdf file using its filename. The location // 'of this bookmark will be placed at the upper left hand corner of the document. So you'll need to adjust // 'the margin left and margin top values such that the bookmark won't overlay on the merged pdf page. The // 'unit used is "points" (72 points = 1 inch), thus in this example, the bookmarks' location is at 1/4 inch from // 'left and 1/4 inch from top of the page. pdfDoc = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(1), 18, 18, 18, 18); // 'Instantiate a PdfWriter that listens to the pdf document writer = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, new System.IO.FileStream(outputPath, System.IO.FileMode.Create)); //added system // 'Set metadata and open the document // With pdfDoc pdfDoc.AddAuthor(""); pdfDoc.AddCreationDate(); pdfDoc.AddCreator(""); pdfDoc.AddProducer(); pdfDoc.AddSubject(""); pdfDoc.AddTitle(""); pdfDoc.AddKeywords(""); pdfDoc.Open(); // End With // 'Instantiate a PdfContentByte object cb = writer.DirectContent; // 'Now loop thru the input pdfs while (f < pdfCount) { // 'Declare a page counter variable int i = 0; // 'Loop thru the current input pdf's pages starting at page 1 while (i < pageCount) { i += 1; // 'Get the input page size pdfDoc.SetPageSize(reader.GetPageSizeWithRotation(i)); // 'Create a new page on the output document pdfDoc.NewPage(); // 'If it is the 1st page, we add bookmarks to the page // 'If i = 1 Then // ' 'First create a paragraph using the filename as the heading // ' Dim para As New iTextSharp.text.Paragraph(IO.Path.GetFileName(fileName).ToUpper(), bookmarkFont) // ' 'Then create a chapter from the above paragraph // ' Dim chpter As New iTextSharp.text.Chapter(para, f + 1) // ' 'Finally add the chapter to the document // ' pdfDoc.Add(chpter) // 'End If // 'Now we get the imported page page = writer.GetImportedPage(reader, i); // 'Read the imported page's rotation rotation = reader.GetPageRotation(i); // 'Then add the imported page to the PdfContentByte object as a template based on the page's rotation if (rotation == 90) { cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(i).Height); } else if (rotation == 270) { cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(i).Width + 60, -30); } else { cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0); } } //End While 2 // 'Increment f and read the next input pdf file f += 1; if (f < pdfCount) { fileName = pdfFiles[f]; reader = new iTextSharp.text.pdf.PdfReader(fileName); pageCount = reader.NumberOfPages; } // End If } //end while 1 // 'When all done, we close the document so that the pdfwriter object can write it to the output file pdfDoc.Close(); result = true; }// End If Principal // Catch ex As Exception // Throw New Exception(ex.Message) // End Try return(result); }
public static bool AddPagesToPDF(string filename, List <Tiff.PageInfo> images, int page, int from, int to) { PdfReader pdfReader = null; try { string password = String.Empty; try { pdfReader = new PdfReader(filename); if (!pdfReader.IsOpenedWithFullPermissions) { throw new BadPasswordException(""); } } catch (BadPasswordException) { while (!pdfReader.IsOpenedWithFullPermissions) { pdfReader.Close(); if ( InputBox.Show(Environment.StringResources.GetString("DocControl_PDF_Encrypted"), Environment.StringResources.GetString("DocControl_PDF_EnterPass"), ref password) == DialogResult.Cancel) { return(false); } try { pdfReader = new PdfReader(filename, Encoding.ASCII.GetBytes(password)); } catch (BadPasswordException) { } catch (Exception ex) { Data.Env.WriteToLog(ex); } } } catch (Exception ex) { Data.Env.WriteToLog(ex); } if (pdfReader.NumberOfPages == 0) { throw new Exception("В документе отсутствуют страницы. Операция сохранения невозможна!"); } string tmpFileName = Path.GetTempFileName(); int imagesCount = images.Count; using (var mem_stream = new MemoryStream()) { using (var document = new iTextSharp.text.Document()) using (PdfWriter pdfWriter = PdfWriter.GetInstance(document, mem_stream)) { document.OpenDocument(); for (int j = 0; j < imagesCount; j++) { Tiff.PageInfo info = images[j]; bool needRotate = info.Image.Width > info.Image.Height; if (needRotate) { info.Image.RotateFlip(RotateFlipType.Rotate90FlipNone); } Image gif = Image.GetInstance(info.Image, ImageFormat.Png); gif.SetAbsolutePosition(0, 0); gif.ScaleAbsolute((float)(info.Image.Width * (72.0 / info.Image.HorizontalResolution)), (float)(info.Image.Height * (72.0 / info.Image.VerticalResolution))); gif.SetAbsolutePosition(1, 1); document.SetPageSize(new Rectangle(gif.ScaledWidth, gif.ScaledHeight)); document.NewPage(); pdfWriter.DirectContent.AddImage(gif); if (needRotate) { pdfWriter.AddPageDictEntry(PdfName.ROTATE, new PdfNumber(270)); } } images.Clear(); pdfWriter.CloseStream = false; document.CloseDocument(); } mem_stream.Position = 0; var addPageReader = new PdfReader(mem_stream); using (var file_stream = new FileStream(tmpFileName, FileMode.Create, FileAccess.Write, FileShare.None)) using (var document = new iTextSharp.text.Document(pdfReader.GetPageSize(1))) using (var pdfCopy = new PdfCopy(document, file_stream)) { document.Open(); if (-1 == page) { for (int j = 1; j <= imagesCount; j++) { PdfImportedPage pp = pdfCopy.GetImportedPage(addPageReader, j); pdfCopy.AddPage(pp); } } if (-2 == page) { page = pdfReader.NumberOfPages - 1; } for (int i = 1; i <= pdfReader.NumberOfPages; i++) { PdfImportedPage pp = pdfCopy.GetImportedPage(pdfReader, i); pdfCopy.AddPage(pp); if (i == page + 1) { for (int j = 1; j <= imagesCount; j++) { pp = pdfCopy.GetImportedPage(addPageReader, j); pdfCopy.AddPage(pp); } } } document.Close(); if (pdfReader != null) { pdfReader.Close(); pdfReader = null; } addPageReader.Close(); File.Copy(tmpFileName, filename, true); File.Delete(tmpFileName); return(true); } } } catch (Exception ex) { Data.Env.WriteToLog(ex); } finally { if (pdfReader != null) { pdfReader.Close(); } } return(false); }
public void MergePdf(string[] pdfFiles, string outputPath) { int pdfCount = 0; int f = 0; string filename = String.Empty; iTextSharp.text.pdf.PdfReader reader = null; int pageCount = 0; iTextSharp.text.Document pdfDoc = null; iTextSharp.text.pdf.PdfWriter writer = null; iTextSharp.text.pdf.PdfContentByte cb = null; iTextSharp.text.pdf.PdfImportedPage page = null; int rotation = 0; iTextSharp.text.Font bookmarkFont = iTextSharp.text.FontFactory.GetFont(iTextSharp.text.FontFactory.HELVETICA, 4, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.RED); try { pdfCount = pdfFiles.Length; if (pdfCount > 1) { filename = pdfFiles[f]; reader = new iTextSharp.text.pdf.PdfReader(filename); pageCount = reader.NumberOfPages; pdfDoc = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(1), 18, 18, 18, 18); writer = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, new System.IO.FileStream(outputPath, System.IO.FileMode.Create)); pdfDoc.AddAuthor("OPGK w Lublinie sp. z o. o. Sławomir Aleksak"); pdfDoc.AddCreator("Konwerter"); pdfDoc.Open(); cb = writer.DirectContent; while (f < pdfCount) { var i = 0; while (i < pageCount) { i += 1; pdfDoc.SetPageSize(reader.GetPageSizeWithRotation(i)); pdfDoc.NewPage(); if (i == 1) { iTextSharp.text.Paragraph para = new iTextSharp.text.Paragraph(System.IO.Path.GetFileName(filename).ToUpper(), bookmarkFont); iTextSharp.text.Chapter chpter = new iTextSharp.text.Chapter(para, f + 1); pdfDoc.Add(chpter); } page = writer.GetImportedPage(reader, i); rotation = reader.GetPageRotation(i); if (rotation == 90) { cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(i).Height); } if (rotation == 270) { cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(i).Width + 60, -30); } else { cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0); } } f += 1; if (f < pdfCount) { filename = pdfFiles[f]; reader = new iTextSharp.text.pdf.PdfReader(filename); pageCount = reader.NumberOfPages; } } pdfDoc.Close(); } } catch (Exception ex) { throw ex; } }
void SavePDF() { iTextSharp.text.Document document = new iTextSharp.text.Document(); using (var stream = new MemoryStream ()) { var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, stream); writer.CloseStream = false; document.Open(); foreach(Pixbuf pix in vimageslist1.Images) { if(pix.Width > pix.Height) document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); else document.SetPageSize(iTextSharp.text.PageSize.A4); document.NewPage(); var image = iTextSharp.text.Image.GetInstance(pix.SaveToBuffer ("jpeg")); image.SetAbsolutePosition(0,0); image.ScaleToFit(document.PageSize.Width, document.PageSize.Height); document.Add(image); } document.Close(); stream.Position = 0; File = stream.ToArray (); } }