我编写了一个应用程序,以编程方式从数据库中填写PDF模板中的表格并将结果保存到磁盘。除了未按预期呈现的任何多行文本字段之外,所有内容均正常运行。它们应该在顶部,并在行与行之间保持无间隔。
我得到的结果是在这里:

但是,当我使用任何PDF阅读器单击表单字段时,该字段都会根据我的期望进行自我更正。见:

我使用的代码非常漂亮。
PdfStamper stamper = new PdfStamper(reader, ms, '\0', false);
AcroFields form = stamper.AcroFields;
List<DocumentField> fields = GetData(id);
foreach (DocumentField field in fields)
{
form.SetField(field.FieldName, field.Value);
}
stamper.FormFlattening = true;
stamper.Close();
reader.Close();
Run Code Online (Sandbox Code Playgroud)
我System.Environment.NewLine用来添加回程报酬。有谁知道是什么原因导致这种现象,以及解决方案使左上角对齐而没有大的间隙。谢谢。
更新解决方案
我删除了该字段并重新添加它,它的行为符合预期。实际上似乎是问题出在,我使用的是一种名为“ Cambria”的字体,如果我将该字段设置回使用该字体,则会返回该行为。
我想以编程方式从我的Meteor应用发送短信/短信;很多人为此推荐twilio,并且有几种Meteor Twilio软件包(可通过大气和/或谷歌搜索/ bing找到)。我不知道这些软件包中的一个是否绝对比另一个软件包更好,但是至少到目前为止,我正在使用abhiaayer:meteor-twilio软件包。
我担心的是,当您创建Twilio帐户时,他们会为您分配一个“发件人”电话号码(您显然不能使用自己的电话号码)。也许我误会了它的工作原理,但是在我走得太远之前,我想知道SMS的发送者(我的应用程序用户IOW)是否可以将其电话号码用作“来自” /发件人的电话号码。
毕竟,我的应用程序的全部目的是允许用户向朋友/家人发送多个相同的文本(例如“你在哪里?”或“你还好吗?”),然后从他们那里得到答复。 (通过他的电话,而不是Twilio提供的号码)。
如果可以将Twilio与您自己的电话号码一起用作“发件人” /发送号码,是否有人对Meteor软件包的首选项(abhiaayer,andreioprisan,DispatchMe)有任何建议,以及如何从Meteor做到这一点?
我想像,无论使用什么软件包,基本代码都差不多。例如,这是andreioprisan包中的一个示例
twilio = Twilio(ACCOUNT_SID, AUTH_TOKEN);
twilio.sendSms({
to:'+16515556677', // Any number Twilio can deliver to
from: '+14506667788', // A number you bought from Twilio and can use for outbound communication
body: 'word to your mother.' // body of the SMS message
}, function(err, responseData) { //this function is executed when a response is received from Twilio
if (!err) { // "err" is an error …Run Code Online (Sandbox Code Playgroud) 我有这门课:
public class ItemsForMonthYear
{
public String ItemDescription { get; set; }
public String monthYr { get; set; }
public int TotalPackages { get; set; }
public Decimal TotalPurchases { get; set; }
public Decimal AveragePrice { get; set; }
public Double PercentOfTotal { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
...我正在其中存储数据。我有一个用于存储其中 N 个的通用列表:
List<ItemsForMonthYear> itemsForMonthYearList;
Run Code Online (Sandbox Code Playgroud)
...然后我后来从该列表中读取以填充电子表格,这非常简单:
totPackagesCell.Value2 = ifmy.TotalPackages;
totPurchasesCell.Value2 = ifmy.TotalPurchases;
avgPriceCell.Value2 = ifmy.AveragePrice;
Run Code Online (Sandbox Code Playgroud)
...但所需的下一个单元格 val 是基于给定月年的所有 TotalPurchases 值计算得出的值。所以我需要计算所有 ItemsForMonthYear“记录”的“总百分比”值,具有相同的monthYr值。在 SQL 我可以做这样的事情:
SELECT SUM(TotalPurchases) FROM ItemsForMonthYear WHERE monthYr = 'Apr 14' …Run Code Online (Sandbox Code Playgroud) 我有以下行动
public async Task<ActionResult> Cart(bool refresh = false, bool mobile = false)
{
var user = await Auth.GetUserAsync();
//rest of the code
}
Run Code Online (Sandbox Code Playgroud)
由2个ajax调用同时调用两次(一个用于呈现移动局部,其他正常页面).
$(document).ready(function () {
$("basket").html('<i class="fa fa-spinner fa-spin"></i>');
$('basket').load(PartialURL + "/Cart");
$('MobileBasket').load(PartialURL + "/Cart?mobile=true");
Run Code Online (Sandbox Code Playgroud)
});
真正的问题出现在Auth.GetUserAsync()功能上.
码:
public static async Task<User> GetUserAsync()
{
if (HttpContext.Current == null || HttpContext.Current.Request == null
|| HttpContext.Current.User == null || HttpContext.Current.Request.IsAuthenticated == false)
return null;
//if session does not exist, but user is logged in, fill session information
if …Run Code Online (Sandbox Code Playgroud) 我一直在试图让一个简单的ContentDialog用TextBox关闭当用户点击Enter,同时仍然在TextBox.可悲的是TextBox,即使ContentDialog响应,它甚至没有a也无法工作Esc.
我希望有一种方法可以在KeyDownHandler中设置一个Result TextBox,但是看起来ContentDialog缺少这个?!
使用此代码(QtyShipped和QtyOrdered是整数,_percentageOfQtyShipped是双精度):
_percentageOfQtyShipped = frbdcbl.QtyShipped / frbdcbl.QtyOrdered;
Run Code Online (Sandbox Code Playgroud)
...我得到了一些"div by 0"错误,所以我重构了它:
double _percentageOfQtyShipped = 0.0;
if ((frbdcbl.QtyShipped != 0) && (frbdcbl.QtyOrdered != 0))
{
_percentageOfQtyShipped = frbdcbl.QtyShipped/frbdcbl.QtyOrdered;
}
Run Code Online (Sandbox Code Playgroud)
......但现在我收到了来自Resharper的警告," 可能会失去分数 "
然而,与Resharper通常的方法相反,它没有提供修复它的方法(而不是在标记的代码行的阴沟中的黄色灯泡,我得到一个灰色的扳手); 那么我需要对此代码进行哪些更改以防止"可能丢失分数"?
我使用了Secret Agent Man#1666620的代码,并乘以100来获得62.5而不是0.625之类的值,如下所示:
double _percentageOfQtyShipped = 0.0;
if ((frbdcbl.QtyShipped != 0) && (frbdcbl.QtyOrdered != 0))
{
_percentageOfQtyShipped = (frbdcbl.QtyShipped / (double)frbdcbl.QtyOrdered)*100;
}
Run Code Online (Sandbox Code Playgroud) 我有这个代码将字典的值分配给组合框:
private void PopulateComboBoxWithSchedulableWeeks()
{
int WEEKS_TO_OFFER_COUNT = 13;
BindingSource bs = new BindingSource();
Dictionary<String, DateTime> schedulableWeeks =
GetWeekBeginningsDict(WEEKS_TO_OFFER_COUNT);
bs.DataSource = schedulableWeeks;
comboBoxWeekToSchedule.DataSource = bs;
comboBoxWeekToSchedule.DisplayMember = "Key";
comboBoxWeekToSchedule.ValueMember = "Value";
}
public static Dictionary<String, DateTime> GetWeekBeginningsDict(int
countOfWeeks)
{
DateTime today = DateTime.Today;
int daysUntilMonday = ((int)DayOfWeek.Monday - (int)today.DayOfWeek + 7)
% 7;
DateTime nextMonday = today.AddDays(daysUntilMonday);
Dictionary<String, DateTime> mondays = new Dictionary<String, DateTime>
();
if (!IsAssemblyOrConventionWeek(nextMonday))
{
mondays.Add(nextMonday.ToLongDateString(), nextMonday);
}
for (int i = 0; i < countOfWeeks; i++) …Run Code Online (Sandbox Code Playgroud) 我的int(List<List<int>>)嵌套列表出现了一个非常奇怪的问题.在我放入超过100万个列表之后的某个时刻,他们都松散了它们的价值,即它们中有0个元素.真的很奇怪吧?我怀疑我在里面放了太多的清单.但是我推出了一个if语句,它将检查嵌套列表长度是否正好是100万,并在其中添加了一个断点.它最终超出了嵌套列表的能力并非如此,它完全是我头脑中的混乱.我将在这里发布代码,以便我可以尝试解释
//it will iterate 8^8 times - 16.7 million times
private static List<List<int>> minMinatRed = new List<List<int>>();
private static List<List<int>> minMinataKolona = new List<List<int>>();
var tempHodove = new List<Tuple<bool, int[]>>();
int novMinatRed = red;
int novaMinataKolona = kolona;
for (int i = 0; i < numberOfVariations; i++)
{
tempHodove.Clear();
var hodove = UpdateList(novMinatRed, novaMinataKolona);
int x = i;
for (int j = 0; j < size; ++j)
{
result[j] = tempArr[x % size];
x /= size;
}
for …Run Code Online (Sandbox Code Playgroud) 我可以使用此处的信息将包含多个子报表的报表导出到 Excel,并将每个子报表放在单独的选项卡/工作表上(将每个子报表放置在 Rectangle 控件中并将其 PageBreak 属性设置为“Start”)。
我希望设置矩形的PageName属性会将工作表名称设置为我在那里指定的名称,但没有 - 它们只是“ Sheet 2 ”、“ Sheet 3 ”等。
那么,如何为工作表名称分配特定值,以便在将 SSRS 报表及其子报表导出到 Excel 时使用这些值?
尝试汉诺威拳头的建议,我设置了矩形的 PageName 属性:
...但该文件仍然是使用通用工作表名称创建的:
我有一个使用 Excel Interop 生成 Excel 电子表格的 Winforms 应用程序。
当我尝试以这种方式保存工作表时:
_xlBook.SaveAs(filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Run Code Online (Sandbox Code Playgroud)
...它会失败,告诉我,“ System.Runtime.InteropServices.InvalidComObjectException 未处理 HResult=-2146233049 Message=COM 对象已与其底层 RCW 分离,无法使用。 ”
不过,这没有多大意义——我并没有对线程之类的东西做任何花哨的事情;这是一个非常简单的香草实用程序。代码中唯一引用 _xlBook 的其他地方是:
1)
private Excel.Workbook _xlBook;
Run Code Online (Sandbox Code Playgroud)
2)
_xlBook = _xlApp.Workbooks.Add(Type.Missing);
Run Code Online (Sandbox Code Playgroud)
3)
_xlSheets = _xlBook.Worksheets;
_xlSheet = (Excel.Worksheet)_xlSheets.Item[1];
Run Code Online (Sandbox Code Playgroud)
4)
_xlBook.Close(false);
Marshal.ReleaseComObject(_xlBook);
Run Code Online (Sandbox Code Playgroud)
_xlBook 被处理的最后一部分是从表单的 Deactivate 事件调用的,它是:
private void FormMain_Deactivate(object sender, EventArgs e)
{
DeinitializeExcelObjects();
}
Run Code Online (Sandbox Code Playgroud)
问题是(我在所有引用 _xlBook 的地方放置断点后发现的)FormMain_Deactivate() 在 _xlBook.SaveAs() 被调用之前被调用,当点击“运行”按钮时调用。
一旦我在 FormMain_Deactivate() 中注释掉对 DeinitializeExcelObjects() 的调用,并在调用 _xlBook.SaveAs() 之后立即调用它,它就可以正常工作 - …
c# ×8
asp.net-mvc ×1
async-await ×1
collections ×1
combobox ×1
dictionary ×1
excel ×1
exception ×1
fractions ×1
generics ×1
itext ×1
itextsharp ×1
linq ×1
list ×1
meteor ×1
resharper ×1
sms ×1
spreadsheet ×1
subreport ×1
twilio ×1
uwp ×1
winforms ×1