Неправильная ширина таблиц при создании файла с помощью Google DriveService - PullRequest
0 голосов
/ 24 февраля 2019

Я использую c # и Google.Apis.Drive.V3 DriveService для создания документа в документах Google из шаблона HTML Razorview.Когда я создаю файл в Google Docs, файл создается успешно, но с определенным неправильным форматом.Я исправил почти все эти ошибки, но есть одна, которая поражает меня.У меня есть таблицы, которые помещаются во весь документ или HTML-страницу, даже если я указал размер этих таблиц в дюймах, сантиметрах или точках, все работает хорошо.при загрузке документа таблицы имеют неправильный размер и не покрывают 100% ширины.На следующем рисунке показано, как создается файл:

enter image description here

Обратите внимание, что даже когда я включаю прозрачный пиксель 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>

И вот как я загружаю его с помощью службы Google Drive в C #:

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 использует какую-то максимальную ширину для содержимого на этой странице, но влияет только на таблицы или, возможно, устанавливает максимальную ширину для таблиц, загруженных с помощью Drive API, и выравнивает содержимое по левому краю документа.

...