当前位置: 首页 > 知识库问答 >
问题:

使用 PDF 竖框旋转 PDF 而不截断内容

夏锐藻
2023-03-14

旋转到纵向视图后,如何确保所有内容都可见(在页面范围内)?

当旋转90度时,PDFSharp会截断我的页面,但当旋转-90度时不会截断。

PdfDocument outputDocument = new PdfDocument();
XPdfForm old = XPdfForm.FromFile(in_filename);
PdfPage newP = outputDocument.AddPage();

if (old.Page.Orientation == PageOrientation.Landscape)
{
    old.Page.Rotate= (old.Page.Rotate - 90) % 360;
    old.Page.Orientation = PageOrientation.Portrait;
}

newP.Height = old.Page.Height;
newP.Width = old.Page.Width;

// Get a graphics object for page1
XGraphics gfx = XGraphics.FromPdfPage(newP);

// Draw the page identified by the page number like an image
gfx.DrawImage(old, new XRect(0, 0, old.PointWidth, old.PointHeight));

以上对一些pdf测试案例有效,但我怀疑这是巧合/运气

我使用的是1.50 Beta版的PDF夏普。

共有2个答案

娄德运
2023-03-14

我最后做了以下事情:(注意,这只适用于风景到肖像)

        var output = new PdfDocument();
        var outputPage = output.AddPage();            

        using (var stream = new MemoryStream(Convert.FromBase64String(pdfBase64String)))
        {
            using (var input = XPdfForm.FromStream(stream))
            {
                outputPage.Height = input.PointWidth;
                outputPage.Width = input.PointHeight;

                using (var graphics = XGraphics.FromPdfPage(outputPage))
                {
                    graphics.RotateAtTransform(90, new XPoint(input.PointHeight / 2, input.PointHeight / 2));
                    graphics.DrawImage(input, new XRect(0, 0, input.PointWidth, input.PointHeight));

                }

            }
        }
钱焕
2023-03-14

PDFsharp 1.50 beta在导入旋转pdf方面存在一个已知问题。那个问题仍在调查中。

PDF文件有许多不同的变体,因此很难确保代码在所有情况下都能正常工作。

 类似资料:
  • 我想生产一个PDF的网页在景观。虽然可以使用以下方法将页面大小设置为横向: 这并没有达到我想要的,因为我添加的任何内容仍然是面向左->右的,而我希望它是底部->顶部的。 即。这就是我得到的: 我已经能够实现所需的输出打开PDF后,它已经创建并使用iText旋转它,但我想要一个解决方案,让我旋转后立即与iText添加内容。

  • 我使用以下代码使用iText库缩小现有pdf的每一页(顶部和底部)。 代码工作正常。但现在,如果我处理结果pdf,则每个页面的旋转值为0,而旧pdf也有其他旋转(即90度)。 我想保持旋转,但做不到。 我使用下面的代码来缩小页面 怎么办?所以轮换还是这样。 我正在获取的另一个问题是,无法保留内部超链接。 实际pdf页面: 收缩后(缩小内容):

  • 我使用飞碟和itext将html转换为pdf,为了以垂直方向编写文本,我尝试了简单的css: 浏览器的变换旋转: 但没有成功...:( 同一个知道如何旋转html文本,飞碟和itext? 感谢提前:)

  • 我尝试使用iTextSharp创建一个多页pdf文档。我有一个包含自身方向(横向或纵向)的对象。当第一个对象包含需要横向模式的信息时,我用< code > Document doc = new Document(PageSize。A4.Rotate(),10f,10f,10f,0f)。这工作得很好,直到下一个元素是肖像模式!如果一个元素处于纵向模式,我再次设置页面大小:< code>doc。Set

  • 目前我正在尝试将PDF转换为PDF/A。 然而,不知何故,我不知道我是否可以转换色彩空间,有没有办法这样做? 这是我的代码,然而: 色彩空间被添加但是在验证我得到: 对于每个页面/元素,它都经常出现。 我能做点什么来反对它吗?比如转换颜色空间?使用她的图书馆?

  • 我已经用所有3种可用的字体试过了;TimesNewRoman、Courier和Helvitica三家公司都出现了相同的例外情况。 但是当您查看apcahe pdfBox源代码中的WIN_ANSI_ENCODING_TABLE时, 我们可以看到定义了下面的非破缺空间。 在pdf规范文档中也引用了以下内容: 空格字符在MacRomanEncoding中也应编码为312,在WinAnsiEncoding