PDFsharp没有阅读正确的页面大小
我想开发一个应用程序来加密PDF的。我遇到了以正确格式保存PDF文档的问题。PDFsharp没有阅读正确的页面大小
我注意到一些文档在拉入时会将页面大小读为一件事,但是当我去保存文档时,它的一部分会被截断。例如,我在792x612点的横向上保存了一个与字母大小相关的文档。但是,当以字母保存时,会将部分页面切断。我注意到,如果我将文档保存在A1中,整个文档就会出现。这里是我的代码:
Dim gfx As XGraphics = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append)
gfx.RotateTransform(-90)
Dim font As XFont = New XFont("Times New Romans", 6, XFontStyle.Bold)
Dim tf As XTextFormatter = New XTextFormatter(gfx)
Dim rect As XRect = New XRect(-550, 500, 250, 150)
gfx.DrawRectangle(XBrushes.Transparent, rect)
tf.DrawString(Text, font, XBrushes.Red, rect)
page.Size = PdfSharp.PageSize.A1
page.Orientation = PdfSharp.PageOrientation.Landscape
Doc.save(strFileSaveLocation)
是否有任何理由可能会发生这种情况?我正在阅读page.height和page.width,并在继续之前确认这些是正确的。
在处理横向格式的页面时,PDFsharp中存在一个已知的错误。此错误出现在PDFsharp 1.50 beta 3b中,但应在下一版本中解决。
看到PDFsharp论坛讨论:在PdfPage.cs
http://forum.pdfsharp.net/viewtopic.php?p=9591#p9591
建议的修复:
internal PdfPage(PdfDictionary dict)
: base(dict)
{
// Set Orientation depending on /Rotate.
//int rotate = Elements.GetInteger(InheritablePageKeys.Rotate);
//if (Math.Abs((rotate/90)) % 2 == 1)
// _orientation = PageOrientation.Landscape;
}
如果你不想修改PDFsharp,也许尝试从第一篇文章的解决方法:
http://forum.pdfsharp.net/viewtopic.php?p=9587#p9587
谢谢。似乎在一定程度上解决了储蓄问题。好奇,如果你知道,但有一个PDFpage.size和PDFpage.width错误?我认为,一旦页面方向被修复,我就可以阅读页面大小,但是一些文档显示为具有清晰肖像尺寸的风景,并且我能够保存它们的能力正在妨碍知道它是否是肖像或景观。你可能知道另一种方法来了解文本的方向吗? – user2823955
@ user2823955在创建新页面时,页面的大小和方向可以工作,但在打开现有页面时不起作用。 'Size'和'Orientation'确定一个页面的大小,但只有'Width'和'Height'保留在PDF文件中。 –
对于遇到与我相同问题的其他人,答案是简单地设置方向肖像。这由于某种原因会触发文档保存正确。 PDFsharp新手的答案将允许您在一定程度上修复您的代码,但如果您像我一样,并且需要知道方向以处理页面,则解决方案将方向设置回肖像。您可能还需要重置页面宽度和高度。
代码:
page.Orientation = PdfSharp.PageOrientation.Portrait
page.Width = dblPageWidth
page.Height = dblPageHeight
请不要编辑溶液注入* *的问题,而是让它在自己的权利的*答案*,当你被允许尽快接受它。 – mkl