-1

我的代码从 Pdf 中读取文本并将其写入另一个 Pdf 并进行一些修改,但是第二个 Pdf 中的格式不一样,那么我怎样才能保持相同的格式和样式?

我的代码是:

string newFile = @"D:\Result.pdf";
            string file = @"D:\Source.pdf";

            string imagepath = @"D:\logo.jpg";
            Console.WriteLine("Welcome");

            string content="";
            // open the reader
            PdfReader reader = new PdfReader(file);
            iTextSharp.text.Rectangle size = reader.GetPageSizeWithRotation(1);
            Document document = new Document(size);

            FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
            PdfWriter writer = PdfWriter.GetInstance(document, fs);

            int n = reader.NumberOfPages;

            bool addimage = false;
            if (!File.Exists(file))
            {
                file = Path.GetFullPath(file);
                if (!File.Exists(file))
                {
                    Console.WriteLine("Please give in the path to the PDF file.");
                }
            }
            document.Open();
            for (int i = 1; i < n; i++)
            {
                while (addimage == false)
                {
                    iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance(imagepath);
                    pic.ScaleToFit(100f, 100f);
                    //pic.ScalePercent(24f);
                    pic.SetAbsolutePosition(document.PageSize.Width - 100f - 100f, document.PageSize.Height + 100f - 225f);
                    document.Add(pic);
                    addimage = true;
                }
                content=PdfTextExtractor.GetTextFromPage(reader, i);
                document.Add(new Paragraph(content));
                PdfContentByte cb = writer.DirectContent;
                cb.MoveTo(document.PageSize.Width / 2, document.PageSize.Height / 2);
                cb.LineTo(document.PageSize.Width / 2, document.PageSize.Height);
                cb.Stroke();
            }
            document.Close(); 
        }
4

1 回答 1

2

请下载我的书第 6 章并查看表 6.1。你会发现你使用了错误的类来复制内容。您应该使用PdfStamper,或者PdfCopy如果您只想添加一个额外的页面作为现有 PDF 的封面(这就是我解释您的代码的方式)。但是,如果您的目的是按照您想要的内容编辑 PDF reflow,请阅读第 6 章的介绍:PDF 不是一种专为编辑而设计的格式。

请注意,本书中的示例是用 Java 编写的。我们已在SourceForge 上发布了这些示例的 C# 版本。

于 2013-02-03T10:01:52.027 回答