Aspose.pdf 将原有pdf里面的每页设置A4纸大小,内容也要A4纸大小。

Aspose.pdf 如何将原有pdf里面的每页设置A4纸大小,内容也要A4纸大小,感谢技术大哥帮忙查看。

源文件:pdflj.pdf (7.8 MB)
将原有pdf页面设置成A4成功,但是里面的内容没有缩小如下截图。

QQ截图20190907170112.jpg (25.5 KB)
复制代码便可使用: 请技术大牛提供内容缩小到A4纸大小的源代码,万分感谢。

    Aspose.Pdf.Document pdfDocument6 = new Aspose.Pdf.Document(pdflj);
     for (int i = 1; i <= pdfDocument6 .Pages.Count; i++)
            {
                //将原有pdf页面设置成A4成功,但是里面的内容没有缩小。
                Aspose.Pdf.Page page = pdfDocument3.Pages[i];
                page.SetPageSize(Aspose.Pdf.PageSize.A4.Width, Aspose.Pdf.PageSize.A4.Height);
                
                
            }
     pdfDocument6.Save("cc.pdf");

@fhn123456

感谢您与支持人员联系。

我们正在检查您的方案,并会尽快回复您。

我也遇到了同样的问题,请问有解决方法了吗?

你好,当时ASPOSE的技术人员给我以下代码,确实可以调整内容的大小,但是我无法掌握数值的多少,所以没有用ASPOSE第三方实现。我的需求是在A4纸循环插入表格数据,使用的是Spire.Pdf可以实现。

以下代码可以调整页面内容的大小:

           Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("cc.pdf");
            /* //指定用于调整大小的参数
             PdfFileEditor fileEditor = new PdfFileEditor();
             //list转数组类型
             int[] pages = sz.ToArray();
            PdfFileEditor.ContentsResizeParameters parameters = new 
                              PdfFileEditor.ContentsResizeParameters(
             PdfFileEditor.ContentsResizeValue.Percents(1), //leftmargin左边缘
             null,                                            //contentswidth 目录宽度
             PdfFileEditor.ContentsResizeValue.Percents(-170),//rightmargin 右边缘
             PdfFileEditor.ContentsResizeValue.Percents(-170),//topmargin 顶边距
                                                              //PdfFileEditor.ContentsResizeValue.Percents(900),
             null,                                            // contentHeight 高度
             PdfFileEditor.ContentsResizeValue.Percents(0));// Bottom margin  底边距

             //调整页面内容的大小
             fileEditor.ResizeContents(pdfDocument, pages, parameters);*/

            //设置第一页目录的大小和第二页相同
            //pdfDocument.Pages[1].SetPageSize(pdfDocument.Pages[2].Rect.Width, 
            pdfDocument.Pages[2].Rect.Height);
            /*double height = pdfDocument.Pages[2].GetPageRect(false).Height;
            double width = pdfDocument.Pages[2].GetPageRect(false).Width;
            pdfDocument.Pages[1].SetPageSize(width, height);*/

以下是ASPOSE技术人员给的代码,希望能帮助到您。

int[] pages = { 1 };

// Create PdfFileEditor Object
PdfFileEditor fileEditor = new PdfFileEditor();

// Open PDF Document
Document doc = new Document(dataDir + “cc (1).pdf”);

// Specify Parameter to be used for resizing
PdfFileEditor.ContentsResizeParameters parameters = new PdfFileEditor.ContentsResizeParameters(
PdfFileEditor.ContentsResizeValue.Percents(0), null,
PdfFileEditor.ContentsResizeValue.Percents(0),
PdfFileEditor.ContentsResizeValue.Percents(0), null,
PdfFileEditor.ContentsResizeValue.Percents(-30));

// Resize Page Contents
fileEditor.ResizeContents(doc, pages ,parameters);

// Save document into new location.
doc.Save(dataDir + “ResizePageContents_19.8.pdf”);

1 Like

非常感谢,还是没有解决我的问题,可能我们的目的不太一样,我是想将一个有着大尺寸图片的PDF中的图片缩小以减小页面的大小,但是我把图片提取出来并缩小再替换进去,图片是小了,图片的区域并没有减小,区域还是那么大,把图片给放大了,没有达到缩小的目的

我认为你的需求是,想将pdf里面的图片缩小或放大到 A4纸大小。
所有我使用了一个比较笨的办法,先从pdf里面提取照片,然后获取pdf页面的大小,照片=pdf页面大小

注意:
以下代码是简单的测试,还有很多不完善的地方,请根据自己的需求更改。

以下是代码,复制使用:

        PdfExtractor pdfExtractor = new PdfExtractor();
        pdfExtractor.BindPdf("C:\\Users\\fhn\\Desktop\\新建文档.pdf");
        // 提取所有图像
        pdfExtractor.ExtractImage();
        int imageCount = 1;
        // 得到所有提取的图像
        while (pdfExtractor.HasNextImage())
        {
            //调用GetNextImage方法将图像存储为文件
            pdfExtractor.GetNextImage("C:\\Users\\fhn\\Desktop\\1\\6.jpg");
            //递增图像计数器变量
            imageCount++;
  
        }

        ImageStamp imageStamp = new ImageStamp("C:\\Users\\fhn\\Desktop\\1\\6.jpg");

        Aspose.Pdf.Document cc = new Aspose.Pdf.Document();

         cc.Pages.Add();
        //将新创建pdf页面设置成A4大小
        Aspose.Pdf.Page page = cc.Pages[1];
        page.SetPageSize(Aspose.Pdf.PageSize.A4.Width, Aspose.Pdf.PageSize.A4.Height);


        var Height = cc.Pages[1].GetPageRect(false).Height;
        var Width = cc.Pages[1].GetPageRect(false).Width;

        imageStamp.Height = Height;
        imageStamp.Width = Width;

        cc.Pages[1].AddStamp(imageStamp);

        //将文档保存到新位置。
        cc.Save("C:\\Users\\fhn\\Desktop\\1\\66.pdf");

@fhn123456

感谢您分享建议。

很高兴知道您已经成功解决了问题。

@icejd

您能否与我们分享您的样本PDF文档。我们将在我们的环境中测试该场景并相应地解决它。

太感谢了,感谢你的无私帮助,我用下面的方法完美实现了,
共享一下
PdfFileEditor fileEditor = new PdfFileEditor();
PdfFileEditor.ContentsResizeParameters parameters = new PdfFileEditor.ContentsResizeParameters(
// Left margin = 10% of page width
PdfFileEditor.ContentsResizeValue.Percents(0),
// New contents width calculated automatically as width - left margin - right margin (100% - 10% - 10% = 80%)
PdfFileEditor.ContentsResizeValue.Units(Aspose.Pdf.PageSize.A4.Width),
// Right margin is 10% of page
PdfFileEditor.ContentsResizeValue.Percents(0),
// Top margin = 10% of height
PdfFileEditor.ContentsResizeValue.Percents(0),
// New contents height is calculated automatically (similar to width)
PdfFileEditor.ContentsResizeValue.Units(Aspose.Pdf.PageSize.A4.Height),
// Bottom margin is 10%
PdfFileEditor.ContentsResizeValue.Percents(0)
);
fileEditor.ResizeContents(document, parameters);
PdfPageEditor pageEditor = new PdfPageEditor(document);
pageEditor.Zoom = 1.0f;
pageEditor.PageSize = PageSize.A4;
pageEditor.Save(txtpicDir.Text + “.pdf”);

@icejd

很高兴知道您已经达到要求。请继续使用我们的API,如果您遇到任何问题,请随时告诉我们。

@icejd

很高兴知道您已经达到要求。请继续使用我们的API,如果您遇到任何问题,请随时告诉我们。