我正在使用c#和Google.Apis.Drive.V3 DriveService从HTML Razorview模板在google文档上创建文档。当我创建文件到google docs时,文件创建成功,但是格式错误。我几乎解决了所有这些错误,但是有一个错误让我震惊。我有适合整个文档或HTML页面的表格,即使我以英寸,厘米或磅为单位指定了这些表格的大小,也可以正常工作。上载文件时表格大小错误,无法覆盖100%的宽度。这是文件创建方式的图片:
请注意,即使在第一行包含透明像素png时,表格也比我预期的要小。
这是我正在使用的模板代码:
<html>
<head>
<style type="text/css">
@@import url('https://themes.googleusercontent.com/fonts/css?kit=fpjTOVmNbO4Lz34iLyptLSsvxyIpIjyXbTpruCFAaFx6IoWp0s0DOH-yFNIUq8XG');
@@page {
size: 8.5in 11in;
margin: 1.5cm;
}
table, td, tr, th {
border: none;
}
.body-table {
border-spacing: 0;
border-collapse: collapse;
font-family: Lato, sans-serif;
border: none;
table-layout: fixed;
}
.v-align {
vertical-align: middle;
}
.h-center {
text-align: center;
}
.p {
padding-top: 0;
padding-bottom: 0;
line-height: 1.0;
orphans: 2;
widows: 2;
}
.prev-address {
color: #505759;
font-size: 9pt;
text-align: right;
width: 158.4pt;
}
.main-logo {
width: 158.4pt;
}
.prev-title {
font-size: 14pt;
text-align: center;
width: 230.4pt;
}
.width-30 {
width: 30%;
}
</style>
</head>
<body style="min-width: 21.59cm; padding: 1cm 1cm 1cm 1cm">
<table class="body-table" style="min-width: 19cm;">
<tbody>
<tr>
<td colspan="3"><img style="width: 19cm" src="mypixel.png"></td>
</tr>
<tr style="width: 19cm;">
<td class="main-logo width-30 v-align">Content 1</td>
<td class="prev-title width-30 v-align h-center">Content 2</td>
<td class="prev-address width-30">Content 3</td>
</tr>
</tbody>
</table>
</body>
</html>
这就是我在c#中使用Google Drive服务上传的方式:
var fileContent = await
_viewRenderService.RenderToStringAsync("Quotes/PreviewTemplate", model);
var request = _driveService.Files.Create(new File
{
CreatedTime = DateTime.UtcNow,
MimeType = "application/vnd.google-apps.document",
Name = $"{fileName}.html"
}, fileContent.ToStream(), "text/html; charset=utf-8");
await request.UploadAsync();
我有做错什么事情来得到这种奇怪的行为吗?
更新: 我意识到此问题与页面的填充有关,请注意图像中的填充/边距如何配置为0.5厘米。因此,似乎Google对该页面中的内容使用了某种最大宽度,但仅影响表格,或者可能为通过驱动器API上传的表格设置了最大宽度,并将内容对齐到文档的左侧。