我正在尝试开发一个水印PDF的应用程序。我在以正确的格式保存PDF文档时遇到问题。
我注意到拉入的某些文档会将页面大小视为一件事,但是当我去保存文档时,它会被截断。例如,我有一个以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,并在继续之前确认这些是正确的。
答案 0 :(得分:1)
在处理横向格式的页面时,PDFsharp中存在一个已知错误。此错误出现在PDFsharp 1.50 beta 3b之前,但应在下一版本中修复。
参见PDFsharp论坛中的讨论:
http://forum.pdfsharp.net/viewtopic.php?p=9591#p9591
PdfPage.cs中的建议修复:
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
答案 1 :(得分:0)
对于遇到与我相同问题的其他人,答案是简单地将方向设置为肖像。由于某种原因,这将触发文档正确保存。 PDFsharp新手的答案将允许您在某种程度上修复您的代码,但如果您喜欢我并且需要知道方向以处理页面,解决方案是将方向设置回纵向。您可能还需要重置页面宽度和高度。
代码:
page.Orientation = PdfSharp.PageOrientation.Portrait
page.Width = dblPageWidth
page.Height = dblPageHeight