我正在尝试使用Java和PDFBox将一些文本绘制到PDF文件,并为文本设置背景颜色.我知道如何绘制文本和绘制填充的矩形,但是当我尝试在与矩形相同的位置绘制文本时,文本永远不会显示.例:
//draw rectangle
content.setNonStrokingColor(200, 200, 200); //gray background
content.fillRect(cursorX, cursorY, 100, 50);
//draw text
content.setNonStrokingColor(0, 0, 0); //black text
content.beginText();
content.setFont(family, fontPt);
content.moveTextPositionByAmount(cursorX, cursorY);
content.drawString("Test Data");
content.endText();
Run Code Online (Sandbox Code Playgroud)
文字永远不会出现.它总是被矩形覆盖.有关如何在矩形顶部绘制文本的任何想法?
编辑:正如Mkl在回答中提到的,我提供的代码实际上是有效的.我的问题最终是代码处于循环中,为每一行绘制背景,但背景是绘制在前一行,而不是当前行,覆盖以前的文本.我只需要在循环中改变事件的顺序.这个问题应该删除吗?其他人似乎不太可能觉得它有用.
我创建了简单的.NET Web服务(ASMX),我从.NET Web应用程序调用它.该服务和Web应用程序都使用Windows身份验证.
com.mydomain.MyWebService webSrvc = new com.mydomain.MyWebService();
string output = webSrvc.MyServiceMethod();
Run Code Online (Sandbox Code Playgroud)
我现在用C#创建Windows应用程序,并希望从那里调用相同的Web服务.我在项目中添加了一个Web引用到服务中,我可以毫无问题地调用服务Web方法.问题是,在Web方法中,我试图检索用户的Windows用户名.
string username = User.Identity.Name; //always blank
Run Code Online (Sandbox Code Playgroud)
这在我从我的网络应用程序调用Web服务时有效,但是当我从我的Windows应用程序调用它时,它总是返回空白,并且User.Identity.IsAuthenticated始终为false,如果这是相关的.我在这里想念的是什么 我只需要获取运行控制台应用程序的Windows用户用户名,即调用Web服务.我已尝试将webSrvc的凭据设置为ClientCache默认凭据,但这并不能解决问题.
更新:我不知道这是否有用,但我了解到如果我使用Environment.UserName,它将提供"NETWORK_SERVICE",然后如果我启用模拟,它将给出"IUSR_ [host_name]".看起来我只是缺少一些非常简单的东西.我只是想获得当前运行windows应用程序(调用Web服务)的Windows用户.
我试图在c#中检查SharePoint用户的权限,我遇到了以下似乎有效的代码:
isGranted = spweb.DoesUserHavePermissions(userlogin, SPBasePermissions.EmptyMask | SPBasePermissions.ViewPages);
Run Code Online (Sandbox Code Playgroud)
第一个参数是用户检查权限.第二个参数是检查用户是否拥有的权限.
我的问题是,bitmask或在emptymask和viewpages权限之间的结果是什么?这实际上是在检查什么权限?