我在pdf中,测试右上角插入一个表格,但不知道为什么总是会出现在左侧,而且还是竖着的,不是横着的

111111111.pdf (39.6 KB)
测试插入表格到PDF.pdf (4.3 KB)
微信截图_20220402185757.png (31.4 KB)

/// <summary>
    /// 插入表格到PDF
    /// </summary>
    public static void TestPdfToTable()
    {
        // The path to the documents directory.
        string dataDir = @"C:\Users\Administrator\Desktop\新建文件夹\插入前\测试插入表格到PDF.pdf";
        // Load source PDF document
        APDF.Document doc = new APDF.Document(dataDir);
        MarginInfo marginInfo = new MarginInfo()
        {
            Top = 0,
            Left = 0,
            Right = 0,
            Bottom = 0,
        };            
        // Initializes a new instance of the Table
        APDF.Table table = new APDF.Table();
        //table.Top = 50;
        //table.Left = 200;
        //table.VerticalAlignment = APDF.VerticalAlignment.Center;
        //table.HorizontalAlignment = APDF.HorizontalAlignment.Center;
        // Set the table border color as LightGray
        table.Border = new APDF.BorderInfo(APDF.BorderSide.All, 1.2f, APDF.Color.FromRgb(System.Drawing.Color.Red));
        // Set the border for table cells
        table.DefaultCellBorder = new APDF.BorderInfo(APDF.BorderSide.All, 1.2f, APDF.Color.FromRgb(System.Drawing.Color.Red));
        table.ColumnWidths = "50 50 50";
        //table.DefaultColumnWidth = "50";
        table.DefaultCellTextState = new TextState()
        {
            FontSize = 10F,
            Font = FontRepository.FindFont("Arial"),
            HorizontalAlignment = APDF.HorizontalAlignment.Center,
        };
        table.DefaultCellPadding = new MarginInfo(5, 5, 5, 5);
        // Create a loop to add 10 rows
        for (int row_count = 1; row_count < 3; row_count++)
        { //Add row to table
            Aspose.Pdf.Row row = table.Rows.Add();
            row.FixedRowHeight = 25;
            //row.VerticalAlignment = APDF.VerticalAlignment.Center;
            row.DefaultCellTextState.HorizontalAlignment = APDF.HorizontalAlignment.Center;
            // Add table cells
            row.Cells.Add(" (" + row_count + ", 1)");
            row.Cells.Add(" (" + row_count + ", 2)");
            row.Cells.Add(" (" + row_count + ", 3)");
        }
        // Add table object to first page of input document
        double pageWidth = doc.Pages[1].GetPageRect(false).Width;
        double pageHeight = doc.Pages[1].GetPageRect(false).Height;
        double tableWidth = table.GetWidth();            
        table.Top = 10;
        table.Left = (float)(pageWidth - tableWidth - 10);
        doc.Pages[1].PageInfo = new PageInfo()
        {
            Margin = marginInfo,
            Height = pageHeight,
            Width = pageWidth,
        };            
        Console.WriteLine("pageWidth:" + pageWidth+ "pageHeight:" + pageHeight);
        doc.Pages[1].Paragraphs.Add(table);
        string dataoDir = @"C:\Users\Administrator\Desktop\新建文件夹\插入后\111111111.pdf";
        // Save updated document containing table object
        doc.Save(dataoDir);
    }

以上是我写的测试代码,我只是想把表格插入到右上角的固定位置横向显示,但不知道为什么总是会在左侧,并且是竖着的,有什么好办法解决吗?
我写的是C#代码,麻烦帮我用C#代码测试一下,看看是哪里出的问题,非常感谢!

@joyoes

该表格已添加到 PDF 中的正确位置。但是,如果您检查页面旋转,您会注意到它旋转了 270 度角。这就是为什么您会在左侧看到桌子。如果在 PDF 中添加表格之前添加以下行,表格将正确显示在右侧:

doc.Pages[1].Rotate = Rotation.None;

附件是在添加表格之前使用上述代码行后生成的输出PDF。 output.pdf (76.2 KB)

111111111.jpg (216.6 KB)
我想最后实现的效果是这样的!
我加了这句doc.Pages[1].Rotate = Rotation.None;代码了之后,还是没达到这个效果呢

@joyoes

您能否分享预期输出 PDF 的图像或样本,以便我们可以尝试在我们的环境中生成类似的,并相应地与您分享我们的反馈。

预期插入表格并输出 PDF的样板 .pdf (31.0 KB)
我想要预期插入表格并输出PDF的样本上传上来了!不知道为什么使用我写的这个代码为什么不能产生我想要的预期效果呢
等待插入表格的PDF文件样板如下:
测试插入表格到PDF.pdf (4.3 KB)

@joyoes

我们正在检查它,并会尽快回复您。

@joyoes

为了进一步分析,我们在我们的问题跟踪系统中记录了一份调查票 PDFNET-51602。我们将调查问题的详细信息,并在票证解决后立即通知您。请耐心等待,给我们一些时间。对此造成的不便,我们表示歉意。

我通过分析,觉得可能是这个原因:图片对象的大小已经把表格插入的位置占用了,所以导致表格无法插入到正确的位置,表格才会被挤在了另外一边。不知道我分析的对不对哈

@joyoes

如前所述,由于页面的指定旋转,表格正在显示在另一侧。您也可以检查页面旋转,您会发现它旋转了 270 角。如果将页面旋转设置为无,表格将显示在右侧,但图像会受到干扰。为了解决这种情况并调查一些解决方法,我们已经记录了工单,并在我们有一些更新后通知您。请给我们一些时间。

1 Like

非常感谢!我在思考是否有另外一种解决办法,就是把表格插入到顶层,就不会出现这种情况了!有没有这个设置顶层的API接口没?

@joyoes

为了调查同一场景的解决方法,我们已经记录了故障单,并且一旦故障单解决,我们一定会通知您。我们非常感谢您在这方面的耐心。请给我们一些时间。