2013-06-05 11 views
3

Мы используем Версию 8.1 из ABCPDF для создания каких-либо хороших PDF-документов из html.тонкая граница при печати pdf

Теперь мы обнаружили, что печать изнутри Adobe Reader приведет к добавлению тонких границ вверху и внизу страницы, которые не видны при отображении документа. Также при печати на XPS эти строки не видны.

Я думаю, мы, должно быть, пропустили некоторые настройки, которые позволяют избежать этого?

В настоящее время у нас печать страниц так:

 using (var doc = new WebSupergoo.ABCpdf8.Doc()) 
     { 
      doc.HtmlOptions.DoMarkup = false; 
      doc.HtmlOptions.AddLinks = false; 
      doc.HtmlOptions.FontEmbed = true; 
      doc.HtmlOptions.Engine = EngineType.Gecko; 

      //in case that we need to create more than 1 page, we need go get the PageId and use it 
      int pdfPageId = doc.AddImageHtml(html); 
      while (true) 
      { 
       doc.FrameRect(); 
       if (!doc.Chainable(pdfPageId)) 
        break; 
       doc.Page = doc.AddPage(); 
       pdfPageId = doc.AddImageToChain(pdfPageId); 
      } 

      for (int i = 1; i <= doc.PageCount; i++) 
      { 
       doc.PageNumber = i; 
       doc.Flatten(); 
      } 

      doc.Save(pathToSave); 
     } 

Я знаю, что websupergoo ребята очень дружелюбные и отвечать быстро. Но я думаю, что это может помочь и другим людям, поэтому я пишу здесь, а не отправляю им электронное письмо.

Update:

Я пытался избавиться от Линекс, изменяя размер печатного документа. Я на самом деле пытаюсь напечатать для A4 Papersize. Я добавил строку кода, чтобы изменить настройку для MediaBox (документация предположил, что это должно быть возможно «doc.MediaBox =„A4“», но это не непосредственно назначаемый):

  //set the printed area to A4 
      doc.MediaBox.String = "A4"; 

Результат: Линии стал толще и теперь можно увидеть даже перед печатью как в AdobeReader, так и в Foxit Reader. это еще не решение.

Update2:

Мне нужно установить Rect документа, а также:

  //set the printed area to A4 
      doc.Rect.String ="A4"; 
      doc.MediaBox.String = "A4"; 

Результат: линии теперь нарисованы на сторонах и их можно увидеть только при печати. Это еще не полное решение.

ответ

4

Хорошо, скопируйте код вставки из Интернета, если у вас есть опасности!

Эта строка добавляет рамку вокруг содержимого:

doc.FrameRect(); 

все, что я должен был сделать это удалить .. и не отображаются более строк.

Я полностью забыл об этом до сих пор.

Прежде чем я также попытался следующие, которые не работают, как ожидалось:

//set the width to 0, so Rectancles have no width 
    doc.Width = 0; 
    // set the color to white, so borders of Rectangles should not be black 
    doc.Color.String = "255 255 255"; //Edited based on the comments. 
Смежные вопросы