//PDF Brief drucken Button private void Button_Click(object sender, RoutedEventArgs e) { // Abfrage ob man die PDF speichern möchte SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Files(*.pdf)|*.pdf"; saveFileDialog.AddExtension = true; saveFileDialog.DefaultExt = ".pdf"; if (saveFileDialog.ShowDialog() == true) { string path = saveFileDialog.FileName; //writer instanzieren PdfWriter writer = new PdfWriter(path); //pdfdocument erzeugen PdfDocument pdf = new PdfDocument(writer); //Document erzeugen using (Document document = new Document(pdf, PageSize.A4)) { //Einfügen in das document Image logo = new Image(ImageDataFactory.CreateJpeg(new Uri($"{Directory.GetCurrentDirectory()}\\logo.jpg", UriKind.Absolute))); logo.ScaleAbsolute(180f, 50f); logo.SetFixedPosition(400f, 750f); document.Add(logo); document.Add(new Paragraph(TB_vname.Text + " " + TB_nname.Text).SetFixedPosition(45f, 780f, 800f)); document.Add(new Paragraph(TB_strasse.Text + " " + TB_hsnr.Text).SetFixedPosition(45f, 760f, 800f)); document.Add(new Paragraph(TB_plz.Text + " " + TB_ort.Text).SetFixedPosition(45f, 740f, 800)); document.Add(new Paragraph(Betreff.Text).SetFixedPosition(45f, 600f, 800f)); document.Add(new Paragraph(Anrede.Text).SetFixedPosition(90f, 500f, 800f)); Image inhalt = new Image(ImageDataFactory.CreateJpeg(new Uri($"{Directory.GetCurrentDirectory()}\\inhalt.jpg", UriKind.Absolute))); inhalt.ScaleAbsolute(400f, 400f); inhalt.SetFixedPosition(70f, 100f); document.Add(inhalt); } pdf.Close(); //writer schliesen writer.Close(); //öffnen des documentes Process.Start(path); } else { } }
public virtual void CreatePdf(String dest) { PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); Document document = new Document(pdf); // raw byte[] data = new byte[256 * 3]; for (int i = 0; i < 256; i++) { data[i * 3] = (byte)(255 - i); data[i * 3 + 1] = (byte)(255 - i); data[i * 3 + 2] = (byte)i; } ImageData raw = ImageDataFactory.Create(256, 1, 3, 8, data, null); iText.Layout.Element.Image img = new iText.Layout.Element.Image(raw); img.ScaleAbsolute(256, 10); document.Add(img); // JPEG2000 iText.Layout.Element.Image img1 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST1)); document.Add(img1); document.Add(new AreaBreak()); // BMP iText.Layout.Element.Image img2 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST2)); img2.SetMarginBottom(10); document.Add(img2); // PNG iText.Layout.Element.Image img3 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST3)); img3.SetMarginBottom(10); document.Add(img3); // Transparent PNG iText.Layout.Element.Image img4 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST4)); img4.SetBorderLeft(new SolidBorder(6)); document.Add(img4); // GIF iText.Layout.Element.Image img5 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST5)); img5.SetBackgroundColor(ColorConstants.LIGHT_GRAY); document.Add(img5); // System.Drawing.Image System.Drawing.Image systemDrawingImage = System.Drawing.Image.FromFile(TEST5); iText.Layout.Element.Image awt = new iText.Layout.Element.Image(ImageDataFactory.Create(systemDrawingImage, System.Drawing.Color.Yellow)); awt.SetMarginTop(10); document.Add(awt); // JBIG2 iText.Layout.Element.Image img6 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST6)); document.Add(img6); // TIFF iText.Layout.Element.Image img7 = new iText.Layout.Element.Image(ImageDataFactory.Create(TEST7)); document.Add(img7); document.Close(); }
public Tuple <float, float> AddDependentVowelPage(string c, PdfDocument pdf, Document document, string sIndex) { const String FONT = @"C:\Windows\Fonts\STKAITI.TTF"; PdfFont fontKaiti = PdfFontFactory.CreateFont(FONT, PdfEncodings.IDENTITY_H, PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED, true); //GENERAR CARACTER Tuple <float, float> textSize = SaveBitmapfromFontCharVowel(c, "Kaiti", FontStyle.Regular, sIndex); PdfCanvas pdfCanvas = new PdfCanvas(pdf.AddNewPage()); Canvas canvas = new Canvas(pdfCanvas, pdf, document.GetPageEffectiveArea(pdf.GetDefaultPageSize())); //Layer 1 PdfLayer pdflayer1 = new PdfLayer("Layer 1", pdf); pdflayer1.SetOn(true); pdfCanvas.BeginLayer(pdflayer1); ///Template IMG string template = @"D:\Portada\Cuadernos\PNG A4\Mizige DIN A4 Template HSK - Pie Descripcion 2 lines more.png"; ImageData data = ImageDataFactory.Create(template); iText.Layout.Element.Image img = new iText.Layout.Element.Image(ImageDataFactory.Create(template)) .ScaleToFit(PageSize.A4.GetWidth(), PageSize.A4.GetHeight()) .SetFixedPosition(0, 0); canvas.Add(img); pdfCanvas.EndLayer(); //Layer 2 CARACTER GRANDE PdfLayer pdflayer2 = new PdfLayer("Layer 2", pdf); pdflayer2.SetOn(true); pdfCanvas.BeginLayer(pdflayer2); int LeftMarginMiZige = 114 * 72 / 300 - 20; int UpMarginMiZige = 114 * 72 / 300 - 5; // int CaracterSize = 180; int CaracterSize = 200; //Este es el path con el que se ha grabado la imagen previamente string path = @"D:\KH\KhmerWorkbook\Chars\" + c.ToString() + ".png"; iText.Layout.Element.Image MainCaracter = new iText.Layout.Element.Image(ImageDataFactory.Create(path)) .SetFixedPosition(LeftMarginMiZige, PageSize.A4.GetHeight() - CaracterSize - UpMarginMiZige) .ScaleAbsolute(CaracterSize, CaracterSize) .SetTextAlignment(TextAlignment.CENTER); canvas.Add(MainCaracter); pdfCanvas.EndLayer(); //Layer 4 CARACTER PEQUEÑOS FOR PdfLayer pdflayer4 = new PdfLayer("Layer 4", pdf); pdflayer4.SetOn(true); pdfCanvas.BeginLayer(pdflayer4); int MiniCaracterSize = 30; int MaxColumns = 17; int MaxRows = 17; float width = 30.6F; float height = 30.7F; int UpMarginMiZigeMini = 22; float left = 0; float bottom = 0; iText.Layout.Element.Image MiniCaracter = new iText.Layout.Element.Image(ImageDataFactory.Create(path)); MiniCaracter.ScaleAbsolute(MiniCaracterSize, MiniCaracterSize); MiniCaracter.SetTextAlignment(TextAlignment.CENTER); for (int col = 0; col < MaxColumns; col++) { for (int row = 0; row < MaxRows; row++) { //No se imprimen donde esta en caracter grande situado if (!(row < 5 && col < 5)) { left = 35 + col * width; bottom = PageSize.A4.GetHeight() - MiniCaracterSize - 2 - UpMarginMiZigeMini - row * height; MiniCaracter.SetFixedPosition(left, bottom); canvas.Add(MiniCaracter); } } } pdfCanvas.EndLayer(); //INFORMACION CARACTER document.SetFont(fontKaiti); var dimensionsColumns = new float[] { 1, 1, 1, 1, 1, 1 }; Table table = new Table(UnitValue.CreatePercentArray(dimensionsColumns)); table.UseAllAvailableWidth(); PdfLayer pdflayerInfo = new PdfLayer("pdflayerInfo", pdf); pdflayerInfo.SetOn(true); pdfCanvas.BeginLayer(pdflayerInfo); int repeticion = 0; List <Paragraph> pGlobals = new List <Paragraph>(); foreach (Word_HSK word in includedWords) { //Add row to table if (word.Character.Contains(c)) { repeticion++; Paragraph pGlobal = new Paragraph(word.Character + "\t (" + word.Pinyin + ") , " + word.Type + " , " + word.Description).SetFont(fontKaiti).SetFontSize(10); pGlobals.Add(pGlobal); } } if (repeticion > Maxrepeticion) { Maxrepeticion = repeticion; repeticion = 0; int checkLevel = Level; } int rowspan = 1; int colspan; int PalabrasPorFila = 0; if (pGlobals.Count <= 4) { colspan = 6; PalabrasPorFila = 1; } else if ((pGlobals.Count > 4) && (pGlobals.Count <= 8)) { colspan = 3; PalabrasPorFila = 2; } else { colspan = 2; PalabrasPorFila = 3; } //En blanco antes del numero de pagina double Count = pGlobals.Count; double doubleplarba = PalabrasPorFila; int NumeroFilas = (int)Math.Ceiling(Count / PalabrasPorFila); int nwhite = 4 - NumeroFilas; int Height = 14; int Columns = 6; //Se utiliza para graduar al colspan anterior //Celdas en blanco hasta el final del documento int FilasBlancasAntesdepalabras = 33 + 4; //Al añadir dos filas mas a la plantilla for (int x = 0; x < FilasBlancasAntesdepalabras * Columns; x++) { Cell cellWhite = new Cell(); // Creating a cell cellWhite.SetHeight(Height).Add(new Paragraph(" ")); table.AddCell(cellWhite); // Adding cell to the table } foreach (Paragraph p in pGlobals) { Cell cellGlobal = new Cell(rowspan, colspan); cellGlobal.SetHeight(Height).Add(p); table.AddCell(cellGlobal); } RemoveBorder(table); canvas.Add(table); Table tableNumberPage = new Table(UnitValue.CreatePercentArray(new float[] { 100 })); tableNumberPage.UseAllAvailableWidth(); for (int x = 0; x < nwhite; x++) { Cell cellWhite = new Cell(); // Creating a cell cellWhite.SetHeight(Height).Add(new Paragraph(" ").SetHeight(Height)); tableNumberPage.AddCell(cellWhite); // Adding cell to the table } Cell cellNumberPage = new Cell(); // Creating a cell cellNumberPage.SetHeight(Height).Add(new Paragraph(sIndex).SetFontSize(10).SetTextAlignment(TextAlignment.CENTER).SetFont(fontKaiti)); tableNumberPage.AddCell(cellNumberPage); // Adding cell to the table RemoveBorder(tableNumberPage); canvas.Add(tableNumberPage); pdfCanvas.EndLayer(); return(textSize); }
public void AddCaracterPage(string c, PdfDocument pdf, Document document, string sIndex) { //GENERAR CARACTER SaveBitmapfromFontChar(c, "Kaiti", FontStyle.Regular, sIndex); PdfCanvas pdfCanvas = new PdfCanvas(pdf.AddNewPage()); Canvas canvas = new Canvas(pdfCanvas, pdf, document.GetPageEffectiveArea(pdf.GetDefaultPageSize())); //Layer 1 PdfLayer pdflayer1 = new PdfLayer("Layer 1", pdf); pdflayer1.SetOn(true); pdfCanvas.BeginLayer(pdflayer1); ///Template IMG string template = @"D:\Portada\Cuadernos\PNG A4\Mizige DIN A4 Template HSK - Pie Descripcion 2 lines more.png"; ImageData data = ImageDataFactory.Create(template); iText.Layout.Element.Image img = new iText.Layout.Element.Image(ImageDataFactory.Create(template)) .ScaleToFit(PageSize.A4.GetWidth(), PageSize.A4.GetHeight()) .SetFixedPosition(0, 0); canvas.Add(img); pdfCanvas.EndLayer(); //Layer 2 CARACTER GRANDE PdfLayer pdflayer2 = new PdfLayer("Layer 2", pdf); pdflayer2.SetOn(true); pdfCanvas.BeginLayer(pdflayer2); //Para poner una imagen con 300 ppp, use una escala de 72 / 300 = 24 % .Por ejemplo: //si tiene una imagen de 5 x 5 pulgadas que escanea a 300 ppp, la //imagen resultante es de 1500 x 1500 píxeles(5 x 300 = 1500).Cuando coloca esta imagen en //el pdf con una escala del 24 % (72 / 300 = 0.24), la imagen en el pdf será de //5X5 pulgadas con 1500X1500 píxeles a 300 dpi.La imagen siempre será de //1500X1500 píxeles sea cual sea el tamaño. int LeftMarginMiZige = 114 * 72 / 300 - 20; int UpMarginMiZige = 114 * 72 / 300 - 5; int CaracterSize = 180; //Este es el path con el que se ha grabado la imagen previamente string path = @"D:\HSKBooklet\" + sIndex + "_" + c.ToString() + ".png"; iText.Layout.Element.Image MainCaracter = new iText.Layout.Element.Image(ImageDataFactory.Create(path)) .SetFixedPosition(LeftMarginMiZige, PageSize.A4.GetHeight() - CaracterSize - UpMarginMiZige) .ScaleAbsolute(CaracterSize, CaracterSize) .SetTextAlignment(TextAlignment.CENTER); canvas.Add(MainCaracter); pdfCanvas.EndLayer(); //Layer 4 CARACTER PEQUEÑOS FOR PdfLayer pdflayer4 = new PdfLayer("Layer 4", pdf); pdflayer4.SetOn(true); pdfCanvas.BeginLayer(pdflayer4); //int MaxColumns = 17; //int MaxRows = 26; int MiniCaracterSize = 30; int MaxColumns = 17; int MaxRows = 17; float width = 30.6F; float height = 30.7F; int InitialLeftMargin = 35; int UpMarginMiZigeMini = 22; float left = 0; float bottom = 0; iText.Layout.Element.Image MiniCaracter = new iText.Layout.Element.Image(ImageDataFactory.Create(path)); MiniCaracter.ScaleAbsolute(MiniCaracterSize, MiniCaracterSize); MiniCaracter.SetTextAlignment(TextAlignment.CENTER); MiniCaracter.SetTextAlignment(TextAlignment.CENTER); for (int col = 0; col < MaxColumns; col++) { for (int row = 0; row < MaxRows; row++) { //No se imprimen donde esta en caracter grande situado if (!(row < 5 && col < 5)) { left = 35 + col * width; bottom = PageSize.A4.GetHeight() - MiniCaracterSize - 2 - UpMarginMiZigeMini - row * height; //iText.Layout.Element.Image MiniCaracter = new iText.Layout.Element.Image(ImageDataFactory.Create(path)) MiniCaracter.SetFixedPosition(left, bottom); canvas.Add(MiniCaracter); } } } pdfCanvas.EndLayer(); //INFORMACION CARACTER //Se incluyen los caracteres no las palabras List <Word> arrayIncluded = ToList(includedWords); document.SetFont(fontKaiti); var dimensionsColumns = new float[] { 1, 1, 1, 1, 1, 1 }; Table table = new Table(UnitValue.CreatePercentArray(dimensionsColumns)); table.UseAllAvailableWidth(); PdfLayer pdflayerInfo = new PdfLayer("pdflayerInfo", pdf); pdflayerInfo.SetOn(true); pdfCanvas.BeginLayer(pdflayerInfo); int repeticion = 0; List <Paragraph> pGlobals = new List <Paragraph>(); foreach (Word_HSK word in arrayIncluded) { //Add row to table if (word.Character.Contains(c)) { repeticion++; Paragraph pGlobal = new Paragraph(word.Character + "\t (" + word.Pinyin + ") , " + word.Description).SetFont(fontKaiti).SetFontSize(10); pGlobals.Add(pGlobal); } } if (repeticion > Maxrepeticion) { Maxrepeticion = repeticion; repeticion = 0; int checkLevel = Level; } int rowspan = 1; int colspan; int PalabrasPorFila = 0; if (pGlobals.Count <= 4) { colspan = 6; PalabrasPorFila = 1; } else if ((pGlobals.Count > 4) && (pGlobals.Count <= 8)) { colspan = 3; PalabrasPorFila = 2; } else { colspan = 2; PalabrasPorFila = 3; } //En blanco antes del numero de pagina double Count = pGlobals.Count; double doubleplarba = PalabrasPorFila; int NumeroFilas = (int)Math.Ceiling(Count / PalabrasPorFila); int nwhite = 4 - NumeroFilas; int Height = 14; int Columns = 6; //Se utiliza para graduar al colspan anterior //Celdas en blanco hasta el final del documento int FilasBlancasAntesdepalabras = 33 + 4; //Al añadir dos filas mas a la plantilla for (int x = 0; x < FilasBlancasAntesdepalabras * Columns; x++) { Cell cellWhite = new Cell(); // Creating a cell cellWhite.SetHeight(Height).Add(new Paragraph(" ")); table.AddCell(cellWhite); // Adding cell to the table } foreach (Paragraph p in pGlobals) { Cell cellGlobal = new Cell(rowspan, colspan); cellGlobal.SetHeight(Height).Add(p); table.AddCell(cellGlobal); } RemoveBorder(table); canvas.Add(table); Table tableNumberPage = new Table(UnitValue.CreatePercentArray(new float[] { 100 })); tableNumberPage.UseAllAvailableWidth(); for (int x = 0; x < nwhite; x++) { Cell cellWhite = new Cell(); // Creating a cell cellWhite.SetHeight(Height).Add(new Paragraph(" ").SetHeight(Height)); tableNumberPage.AddCell(cellWhite); // Adding cell to the table } Cell cellNumberPage = new Cell(); // Creating a cell cellNumberPage.SetHeight(Height).Add(new Paragraph(sIndex).SetFontSize(10).SetTextAlignment(TextAlignment.CENTER).SetFont(fontKaiti)); tableNumberPage.AddCell(cellNumberPage); // Adding cell to the table RemoveBorder(tableNumberPage); canvas.Add(tableNumberPage); pdfCanvas.EndLayer(); }
public void PreparePdfPage() { // 创建新的一页 var leftWhite = (_document.GetPdfDocument().GetDefaultPageSize().GetWidth() - _paperColumn * _envelopeResponse.ProductWidth.MMtoPix()) / 2; var topWhite = (_document.GetPdfDocument().GetDefaultPageSize().GetHeight() - _paperRow * _envelopeResponse.ProductHeight.MMtoPix()) / 2; // 添加辅助线 var pdfCanvas = new PdfCanvas(_document.GetPdfDocument(), FrontPageNumber); pdfCanvas.SetLineDash(10).SetColor(new DeviceGray(1), true); // 画竖线 for (var i = 0; i <= _paperColumn; i++) { pdfCanvas .MoveTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), 0) .LineTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), topWhite - 5) .MoveTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), _document.GetPdfDocument().GetDefaultPageSize().GetHeight()) .LineTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - topWhite + 5); } for (var j = 0; j <= _paperRow; j++) { pdfCanvas .MoveTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: 0) .LineTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: leftWhite - 5) .MoveTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: _document.GetPdfDocument().GetDefaultPageSize().GetWidth()) .LineTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: _document.GetPdfDocument().GetDefaultPageSize().GetWidth() - leftWhite + 5); } pdfCanvas.Stroke(); var fontPath = ""; if (Process.GetCurrentProcess().MainModule is ProcessModule processModule) { fontPath = new FileInfo(processModule.FileName).DirectoryName + @"/STKAITI.TTF"; } // 添加水印 var pdfFont = PdfFontFactory.CreateFont(fontPath, PdfEncodings.IDENTITY_H, false); // 列 // 上方的水印 _document.Add(new Paragraph(_waterMark) .SetFont(pdfFont) .SetFontSize(8) .SetFontColor(_urgent ? DeviceRgb.RED : DeviceRgb.BLACK) .SetPageNumber(FrontPageNumber) .SetFixedPosition( leftWhite + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - topWhite, _document.GetPdfDocument().GetDefaultPageSize().GetWidth() - leftWhite - 10)); // 左下方的水印 _document.Add(new Paragraph(_waterMark) .SetFont(pdfFont) .SetFontSize(8) .SetRotationAngle(Math.PI / 2) .SetFontColor(_urgent ? DeviceRgb.RED : DeviceRgb.BLACK) .SetPageNumber(FrontPageNumber) .SetFixedPosition( leftWhite, topWhite + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - leftWhite - 10)); if (_envelopeResponse.DoubleSide) { _document.Add(new Paragraph("反面样式【" + _envelopeResponse.BackStyle + "】") .SetFont(pdfFont) .SetFontSize(8) .SetFontColor(DeviceRgb.BLACK) .SetPageNumber(BackPageNumber) .SetFixedPosition( leftWhite + (_paperColumn - 1) * _envelopeResponse.ProductWidth.MMtoPix() + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - topWhite, _document.GetPdfDocument().GetDefaultPageSize().GetWidth() - leftWhite - 10)); // 左下方的水印 _document.Add(new Paragraph("反面样式【" + _envelopeResponse.BackStyle + "】") .SetFont(pdfFont) .SetFontSize(8) .SetRotationAngle(Math.PI / 2) .SetFontColor(DeviceRgb.BLACK) .SetPageNumber(BackPageNumber) .SetFixedPosition( leftWhite, topWhite + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - leftWhite - 10)); } // 正面 // 行 for (var i = 0; i < _paperRow; i++) { // 列 for (var j = 0; j < _paperColumn; j++) { var currentIndex = i * _paperColumn + j; if (currentIndex >= _postCardResponses.Count) { continue; } var postCard = _postCardResponses[currentIndex]; // 正面 var fileId = postCard.ProductFileId; if (!string.IsNullOrEmpty(fileId)) { var frontFile = new FileInfo(_templateDirectoryInfo.FullName + "/" + fileId); if (!frontFile.Exists) { frontFile = FileApi.DownloadFileByFileId(fileId, frontFile); } var frontImage = new Image(ImageDataFactory.Create(frontFile.FullName)); // 转化尺寸 frontImage.ScaleAbsolute(_envelopeResponse.ProductWidth.MMtoPix(), _envelopeResponse.ProductHeight.MMtoPix()); frontImage.SetPageNumber(FrontPageNumber); // 坐标po frontImage.SetFixedPosition( leftWhite + j * _envelopeResponse.ProductWidth.MMtoPix(), topWhite + i * _envelopeResponse.ProductHeight.MMtoPix()); _document.Add(frontImage); } // 反面 var backFileId = postCard.BackProductFileId; if (!string.IsNullOrEmpty(backFileId)) { var backFileInfo = new FileInfo(_templateDirectoryInfo.FullName + "/" + backFileId); if (!backFileInfo.Exists) { FileApi.DownloadFileByFileId(backFileId, backFileInfo); } var backImage = new Image(ImageDataFactory.Create(backFileInfo.FullName)); // 转化尺寸 backImage.ScaleAbsolute(_envelopeResponse.ProductWidth.MMtoPix(), _envelopeResponse.ProductHeight.MMtoPix()); backImage.SetPageNumber(BackPageNumber); // 坐标po backImage.SetFixedPosition( leftWhite + (_paperColumn - j - 1) * _envelopeResponse.ProductWidth.MMtoPix(), topWhite + i * _envelopeResponse.ProductHeight.MMtoPix()); _document.Add(backImage); } } } }