ABCpdf只渲染第一页

时间:2015-10-12 20:44:46

标签: c# abcpdf9

当我尝试使用ABCpdf将每个页面保存为GIF时,只保存第一页。

例如:我有一个有3页的PDF。我使用ABCpdf将每个页面呈现为一个流,该流被保存到磁盘。当我打开目标文件夹中的文件时,所有3个文件都显示第一页内容。

这是我的代码:

using (Doc theDoc = new Doc())
{
    XReadOptions options = new XReadOptions { ReadModule = ReadModuleType.Pdf };
    theDoc.Read(inputbytearray, options);

    using (MemoryStream ms = new MemoryStream())
    {
        theDoc.Rendering.DotsPerInch = 150;
        int n = theDoc.PageCount;

        for (int i = 1; i <= n; i++)
        {
            Guid FileName = Guid.NewGuid();

            theDoc.Rect.String = theDoc.CropBox.String;
            theDoc.Rendering.SaveAppend = (i != 1);
            theDoc.Rendering.SaveCompression = XRendering.Compression.G4;
            theDoc.PageNumber = i;



                theDoc.Rendering.Save(string.Format("{0}.gif", FileName), ms);

                using (var streamupload = new MemoryStream(ms.GetBuffer(), writable: false))
                {
                    _BlobStorageService.UploadfromStream(FileName.ToString(), streamupload, STR_Gif, STR_Imagegif);
                }



        }
        // theDoc.Clear();
    }
}

1 个答案:

答案 0 :(得分:0)

Rendering.SaveAppend属性仅在保存TIFF图像时适用。对于GIF,您需要为每个PDF页面保存单独的图像。

private void button1_Click(object sender, System.EventArgs e)
            {
                string theDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + @"\files\";

                // Create test PDF

                using (Doc doc = new Doc())
                {
                    for (int i = 1; i <= 3; i++)
                    {
                        doc.Page = doc.AddPage();
                        doc.AddHtml("<font size=24>PAGE " + i.ToString());
                    }
                    doc.Save(Path.Combine(theDir, "test.pdf"));
                }

                // Save PDF pages to GIF streams

                using (Doc doc = new Doc())
                {
                    doc.Read(Path.Combine(theDir, "test.pdf"));
                    for (int i = 1; i <= doc.PageCount; i++)
                    {
                        doc.PageNumber = i;
                        doc.Rect.String = doc.CropBox.String;
                        using (MemoryStream ms = new MemoryStream())
                        {
                            doc.Rendering.Save("dummy.gif", ms);
                            using (FileStream fs = File.Create(Path.Combine(theDir, "p" + i.ToString() + ".gif")))
                            {
                                ms.Seek(0, SeekOrigin.Begin);
                                ms.CopyTo(fs);
                            }
                        }
                    }
                }
            }