Drodzy Forumowicze, potrzebuję pomocy z nietypowym drukiem.
Mam kontrolkę RichTextBox i w niej tekst (jakośtam sformatowany itd, ale to nie problem) w jednej bardzo długiej linii i dosyć dużym (175-225pt) fontem. Muszę to wydrukować na jednym pasku na nietypowej drukarce (wydruki mają 200-1000cm i 1-8cm szerokości). Problemem jest to, że nie wiem jak dobrać wielkość papieru, do tego co mam na RichTextBox. Z uwagi na to, że jest to jeden z kilku drukowanych elementów, muszę bardzo dokładnie określić jak długa będzie taśma na której drukuję.
I teraz tak:
Printing.PaperSize przyjmuje długość w 1/100 cala (nie wiem ile podać tej właśnie długości i o to się rozbija cały problem, jak oszacuję długość wydruku to problemu nie będzie)
Testowałem rozwiązania:
RichTextBox1.PreferredSize.Width - padaje jakąś ilość pixeli, ale nie jest to ilość jaka miałaby sens jako parametr dla PaperSize
g.MeasureString(RichTextBox1.Text, RichTextBox1.Font).Width - podaje niby długość w pixelach, ale też nie działa jako PaperSize
rozwiązanie oparte o MeasureCharacterRanges też coś podaje, ale to wciąż za mała wartość
Jeżeli próbuję podać któreś z rozwiązań jako parametr dla PaperSize, wydruk jest minimalnie za krótki - gdzieś w okolicach 3-4 metrów błąd wynosi kilkanaście milimetrów - nie zauwazyłem jednak jaka jest zależność, zwłaszcza, że sytuacji nie ułatwiają różne kroje fontów.
Przebiłem się przez różne rzeczy - na przykład marginesy, które robi mi złośliwie ta drukarka, pomimo ustawienia Margin(0,0,0,0), ale przeliczenie tego co wychodzi z podanych przeze mnie funkcji na długość taśmy wychodzącej z drukarki - jest dla mnie niepojęte. Może po prostu źle patrzę na problem.
Sytuacji nie ułatwia to, że w zasadzie jeżeli chodzi o projekty w VisualStudio jestem w zasadzie początkujący. Będę wdzięczny za każdą podpowiedź, zwłaszcza, że obawiam się, że problem jest dosyć nietypowy - nigdzie nie znalazłem podobnego problemu.
Projekt w zasadzie piszę w vb, ale to chyba nie za za bardzo znaczenia obecnie - podpowiedzi do C# będą dla mnie tak samo przydatne.