У меня был заполненный PDF-документ (всего 2 страницы), состоящий из разных размеров страницы; первая страница - 8,5 * 11 дюймов (612 * 792), содержащая заполняемые поля; вторая страница - 9,5 * 12 дюймов (684 * 864), не содержащая заполняемых полей. Несмотря на то, что вторая страница больше, ее можно игнорировать. Другими словами, если вторая страница напечатана как A4, контент не будет разрезан.Получить PDF можно в центре страницы itextsharp
Однако, когда я выполняю конкатенацию документа (используя 612 * 792), все остальные страницы будут выстроены в левом нижнем углу страницы, делая частичное содержимое потерянным на верхнем и правом краях страницы. Несмотря на то, что полный контент может быть использован, когда применяется (684 * 864), все первые страницы выстраиваются в левом нижнем углу страницы, делая его широким пустым полям сверху и справа от страницы.
Есть ли в любом случае, что я могу писать страницы в центре страницы все время, так что я могу использовать размер 612 * 792 без потери содержимого на вторых страницах?
Ниже приведен метод конкатенации:
private static byte[] ConcatContents(List<byte[]> pdf)
{
byte[] all;
using (MemoryStream ms = new MemoryStream())
{
Document doc = new Document(new Rectangle(612, 792));
PdfWriter writer = PdfWriter.GetInstance(doc, ms);
doc.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page;
PdfReader reader;
foreach (byte[] p in pdf)
{
reader = new PdfReader(p);
int pages = reader.NumberOfPages;
// loop over document pages
for (int i = 1; i <= pages; i++)
{
doc.NewPage();
page = writer.GetImportedPage(reader, i);
cb.AddTemplate(page, 0, 0);
}
}
doc.Close();
all = ms.ToArray();
ms.Flush();
ms.Dispose();
}
return all;
}
[UPDATE]
Оригинал разница Размер страницы в PDF
После Page конкатенации, некоторые из содержания потеряли, потому что кажется, как PDF был создан из левого нижнего угла вверх. Разница в размере страницы вызывает потерю содержимого страницы. Как вы можете видеть на рисунке, то первая строка содержания второй страницы
«BECUASE Эта форма используется различными государственными ...»
был отрезан, а также некоторое содержание вправо.
Можете ли вы объяснить более о том, что вы имеете в виду под «выстраиваться». Как страницы отображаются по отношению друг к другу, имеет больше общего с приложением просмотра, а не с содержанием страницы. Для того, что это стоит, это было только после Acrobat 2, когда была поддержка непрерывного отображения страницы туалетной бумаги. – plinth
@plinth Пожалуйста, дайте мне знать, если часть «обновления» имеет для вас какой-либо смысл – Marlock
OK - так вы пытаетесь штамповать содержимое любой произвольной страницы на новую страницу заданного размера. Это означает, что вам нужно знать границы старой страницы и установить преобразование, которое помещает его содержимое в другое место на новой странице. Это в основном перевод, который будет (.5dx, .5dy), где dx и dy - это дельта из старой ширины/высоты страницы и новой ширины/высоты страницы, но это не гарантирует, что все содержимое будет соответствовать. – plinth