如何把PDF文件的内容分页显示并打印

如何把PDF文件的内容分页显示并打印,第1张

工具/材料:Microsoft Office Word2016版,PDF文件

1、首选在桌面上,选中PDF文件,双击打开。

2、继续在Microsoft Office Word窗口上,点击顶部的“阅读”分页栏。

3、再者在Microsoft Office Word窗口上,点击顶部的“双页”图标。

4、继续在Microsoft Office Word窗口上,PDF文件内容成功分页显示。

5、再者在Microsoft Office Word界面窗口上,点击左上角“文件”图标里的“打印”选项。

6、继续在Microsoft Office Word界面窗口上,选择打印方式为“一张多页”和“每张页数”为2张。

7、最后在Microsoft Office Word窗口上,点击“打印”按钮即可。

public void writeLog(string sMessage)

        {

            //FileStream fs = new FileStream(Server.MapPath("pagetohtml.htm"), FileMode.Append)

            try

            {

                StreamWriter swriter = File.CreateText(Server.MapPath("pagetohtml.htm"))

                swriter.WriteLine(sMessage)

                swriter.Close()

            }

            catch

            { }

        }

        private System.Drawing.Bitmap bitmap

        private string url

        private int w = 760, h = 900

        public void setBitmap()

        {

            using (WebBrowser wb = new WebBrowser())

            {

                wb.Width = w

                wb.Height = h

                wb.ScrollBarsEnabled = false

                wb.Navigate(url)

                //确保页面被解析完全

                while (wb.ReadyState != WebBrowserReadyState.Complete)

                {

                    System.Windows.Forms.Application.DoEvents()

                }

                bitmap = new System.Drawing.Bitmap(w, h)

                wb.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, w, h))

                wb.Dispose()

            }

        }

        private void CreatPdf()

        {

            Document doc = new Document(PageSize.A4, 9, 18, 36, 36)//左右上下

            MemoryStream ms = new MemoryStream()

            try

            {

                PdfWriter writer = PdfWriter.GetInstance(doc, ms)

                writer.CloseStream = false

                doc.Open()

                url = Server.MapPath("pagetohtml.htm")

                Thread thread = new Thread(new ThreadStart(setBitmap))

                thread.SetApartmentState(ApartmentState.STA)

                thread.Start()

                while (thread.IsAlive)

                    Thread.Sleep(100)

                bitmap.Save(Server.MapPath("pagetohtml.bmp"))

                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(bitmap, System.Drawing.Imaging.ImageFormat.Bmp)

                img.ScalePercent(75)//560 630

                doc.Add(img)

            }

            catch (Exception err)

            {

                throw new Exception(err.Message)

            }

            finally

            {

                doc.Close()

                using (FileStream fs = new FileStream(Server.MapPath("pagetohtml.pdf"), FileMode.Create))

                {

                    ms.Position = 0

                    byte[] bit = new byte[ms.Length]

                    ms.Read(bit, 0, (int)ms.Length)

                    fs.Write(bit, 0, bit.Length)

                }

                ViewPdf(ms)

            }

        }

        private void ViewPdf(Stream fs)

        {

            Response.Clear()

            //中文名的话

            //Response.AppendHeader("Content-Disposition", "attachmentfilename=" +

            //             HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + "charset=GB2312")

            Response.AddHeader("Content-Disposition", "attachmentFileName=pagetohtml.pdf")

            Response.AddHeader("Content-Length", fs.Length.ToString())

            Response.ContentType = "application/pdf"

            long fileLength = fs.Length

            int size = 10240

            byte[] readData = new byte[size]

            if (size > fileLength)

                size = Convert.ToInt32(fileLength)

            long fPos = 0

            bool isEnd = false

            while (!isEnd)

            {

                if ((fPos + size) >= fileLength)

                {

                    size = Convert.ToInt32(fileLength - fPos)

                    isEnd = true

                }

                readData = new byte[size]

                fs.Position = fPos

                fs.Read(readData, 0, size)

                Response.BinaryWrite(readData)

                Response.OutputStream.Flush()

                fPos += size

            }

            fs.Close()

            Response.OutputStream.Close()

            Response.End()

            Response.Close()

        }更多0


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7102339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存