最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過C#調(diào)取打印機(jī)打印文本和圖片的多種方法

 更新時(shí)間:2026年01月18日 11:29:11   作者:齊魯大蝦  
本文介紹了C#中五種常用的打印方法:使用.NET內(nèi)置類、WPF打印功能、RDLC報(bào)表、第三方庫iTextSharp和PDFsharp,以及如何處理異常和異步打印,需要的朋友可以參考下

在C#中調(diào)用打印機(jī)打印文本和圖片有多種方法,以下是最常用的幾種方式:

一、使用.NET內(nèi)置的打印類(最常用)

1.基本打印流程

using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;

public class PrinterHelper
{
    private PrintDocument printDoc = new PrintDocument();
    private string textToPrint;
    private Image imageToPrint;
    
    public PrinterHelper()
    {
        // 訂閱打印事件
        printDoc.PrintPage += new PrintPageEventHandler(PrintPageHandler);
    }
    
    // 打印文本
    public void PrintText(string text)
    {
        textToPrint = text;
        imageToPrint = null;
        
        // 顯示打印對(duì)話框
        PrintDialog printDialog = new PrintDialog();
        printDialog.Document = printDoc;
        
        if (printDialog.ShowDialog() == DialogResult.OK)
        {
            printDoc.Print();
        }
    }
    
    // 打印圖片
    public void PrintImage(Image image)
    {
        imageToPrint = image;
        textToPrint = null;
        
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += (sender, e) =>
        {
            // 居中打印圖片
            Rectangle rect = e.MarginBounds;
            e.Graphics.DrawImage(imageToPrint, rect);
        };
        
        pd.Print();
    }
    
    // 同時(shí)打印文本和圖片
    private void PrintPageHandler(object sender, PrintPageEventArgs e)
    {
        // 獲取打印圖形對(duì)象
        Graphics g = e.Graphics;
        
        // 設(shè)置字體
        Font font = new Font("宋體", 12);
        Brush brush = Brushes.Black;
        
        // 如果有文本,打印文本
        if (!string.IsNullOrEmpty(textToPrint))
        {
            // 計(jì)算文本區(qū)域
            RectangleF textRect = new RectangleF(
                e.MarginBounds.Left,
                e.MarginBounds.Top,
                e.MarginBounds.Width,
                e.MarginBounds.Height / 2);
                
            // 打印文本(支持換行)
            g.DrawString(textToPrint, font, brush, textRect);
        }
        
        // 如果有圖片,打印圖片
        if (imageToPrint != null)
        {
            // 計(jì)算圖片區(qū)域(文本下方)
            RectangleF imageRect = new RectangleF(
                e.MarginBounds.Left,
                e.MarginBounds.Top + e.MarginBounds.Height / 2 + 20,
                e.MarginBounds.Width,
                e.MarginBounds.Height / 2 - 20);
                
            // 保持圖片縱橫比
            float ratio = Math.Min(
                imageRect.Width / imageToPrint.Width,
                imageRect.Height / imageToPrint.Height);
                
            float width = imageToPrint.Width * ratio;
            float height = imageToPrint.Height * ratio;
            
            // 居中顯示
            float x = imageRect.Left + (imageRect.Width - width) / 2;
            float y = imageRect.Top + (imageRect.Height - height) / 2;
            
            g.DrawImage(imageToPrint, x, y, width, height);
        }
    }
}

2.打印預(yù)覽功能

using System.Drawing.Printing;
using System.Windows.Forms;

public class PrintPreviewHelper
{
    public void ShowPrintPreview(string text, Image image = null)
    {
        PrintDocument printDoc = new PrintDocument();
        printDoc.PrintPage += (sender, e) =>
        {
            // 打印內(nèi)容
            PrintContent(e.Graphics, e.MarginBounds, text, image);
        };
        
        // 顯示打印預(yù)覽對(duì)話框
        PrintPreviewDialog previewDlg = new PrintPreviewDialog();
        previewDlg.Document = printDoc;
        previewDlg.ShowDialog();
    }
    
    private void PrintContent(Graphics g, Rectangle marginBounds, string text, Image image)
    {
        // 打印文本
        if (!string.IsNullOrEmpty(text))
        {
            Font font = new Font("宋體", 11);
            RectangleF textArea = new RectangleF(
                marginBounds.Left,
                marginBounds.Top,
                marginBounds.Width,
                marginBounds.Height * 0.6f);
                
            StringFormat format = new StringFormat();
            format.Alignment = StringAlignment.Near;
            format.LineAlignment = StringAlignment.Near;
            
            g.DrawString(text, font, Brushes.Black, textArea, format);
        }
        
        // 打印圖片
        if (image != null)
        {
            RectangleF imageArea = new RectangleF(
                marginBounds.Left,
                marginBounds.Top + marginBounds.Height * 0.6f + 10,
                marginBounds.Width,
                marginBounds.Height * 0.4f - 10);
                
            // 保持縱橫比
            DrawImageCentered(g, image, imageArea);
        }
    }
    
    private void DrawImageCentered(Graphics g, Image image, RectangleF area)
    {
        float ratio = Math.Min(area.Width / image.Width, area.Height / image.Height);
        float width = image.Width * ratio;
        float height = image.Height * ratio;
        float x = area.Left + (area.Width - width) / 2;
        float y = area.Top + (area.Height - height) / 2;
        
        g.DrawImage(image, x, y, width, height);
    }
}

3.高級(jí)打印功能

using System.Drawing.Printing;
using System.Collections.Generic;

public class AdvancedPrinter
{
    // 獲取所有打印機(jī)
    public List<string> GetAvailablePrinters()
    {
        List<string> printers = new List<string>();
        foreach (string printer in PrinterSettings.InstalledPrinters)
        {
            printers.Add(printer);
        }
        return printers;
    }
    
    // 設(shè)置默認(rèn)打印機(jī)
    public void SetDefaultPrinter(string printerName)
    {
        PrinterSettings settings = new PrinterSettings();
        settings.PrinterName = printerName;
    }
    
    // 打印多頁文檔
    public void PrintMultiPageDocument(List<string> pages, string printerName = null)
    {
        PrintDocument printDoc = new PrintDocument();
        
        if (!string.IsNullOrEmpty(printerName))
        {
            printDoc.PrinterSettings.PrinterName = printerName;
        }
        
        int currentPage = 0;
        
        printDoc.PrintPage += (sender, e) =>
        {
            if (currentPage < pages.Count)
            {
                // 打印當(dāng)前頁
                PrintSinglePage(e.Graphics, e.MarginBounds, pages[currentPage]);
                currentPage++;
                
                // 如果還有更多頁,繼續(xù)打印
                e.HasMorePages = currentPage < pages.Count;
            }
        };
        
        printDoc.Print();
    }
    
    private void PrintSinglePage(Graphics g, Rectangle bounds, string content)
    {
        Font font = new Font("Arial", 10);
        g.DrawString(content, font, Brushes.Black, bounds);
    }
}

二、使用WPF的打印功能

1.WPF打印基礎(chǔ)

using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Media.Imaging;

public class WPFPrinter
{
    // 打印文本
    public void PrintTextWPF(string text)
    {
        FlowDocument doc = new FlowDocument();
        Paragraph paragraph = new Paragraph();
        paragraph.Inlines.Add(text);
        doc.Blocks.Add(paragraph);
        
        PrintDialog printDialog = new PrintDialog();
        if (printDialog.ShowDialog() == true)
        {
            doc.PageHeight = printDialog.PrintableAreaHeight;
            doc.PageWidth = printDialog.PrintableAreaWidth;
            printDialog.PrintDocument(
                ((IDocumentPaginatorSource)doc).DocumentPaginator, 
                "打印文檔");
        }
    }
    
    // 打印圖片
    public void PrintImageWPF(string imagePath)
    {
        PrintDialog printDialog = new PrintDialog();
        if (printDialog.ShowDialog() == true)
        {
            Image image = new Image();
            BitmapImage bitmap = new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));
            image.Source = bitmap;
            image.Stretch = Stretch.Uniform;
            
            // 調(diào)整大小以適應(yīng)頁面
            image.Width = printDialog.PrintableAreaWidth - 100;
            image.Height = printDialog.PrintableAreaHeight - 100;
            
            printDialog.PrintVisual(image, "打印圖片");
        }
    }
}

2.WPF打印自定義內(nèi)容

using System.Windows.Media;

public class CustomWPFPrinter
{
    public void PrintCustomContent()
    {
        PrintDialog printDialog = new PrintDialog();
        if (printDialog.ShowDialog() == true)
        {
            // 創(chuàng)建要打印的可視化對(duì)象
            DrawingVisual visual = new DrawingVisual();
            
            using (DrawingContext context = visual.RenderOpen())
            {
                // 繪制文本
                FormattedText text = new FormattedText(
                    "打印測(cè)試",
                    System.Globalization.CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight,
                    new Typeface("Arial"),
                    32,
                    Brushes.Black);
                    
                context.DrawText(text, new Point(100, 100));
                
                // 繪制矩形
                context.DrawRectangle(
                    Brushes.LightGray,
                    new Pen(Brushes.Black, 2),
                    new Rect(50, 50, 200, 100));
            }
            
            printDialog.PrintVisual(visual, "自定義打印");
        }
    }
}

三、打印報(bào)表(使用RDLC報(bào)表)

1.安裝必要的NuGet包

<!-- 在.csproj文件中添加 -->
<PackageReference Include="Microsoft.ReportingServices.ReportViewerControl.WinForms" Version="150.1480.0" />

2.創(chuàng)建和打印RDLC報(bào)表

using Microsoft.Reporting.WinForms;
using System.Data;

public class ReportPrinter
{
    public void PrintReport(DataTable data, string imagePath = null)
    {
        // 創(chuàng)建報(bào)表
        LocalReport report = new LocalReport();
        report.ReportPath = @"Report.rdlc"; // RDLC文件路徑
        
        // 添加數(shù)據(jù)源
        ReportDataSource dataSource = new ReportDataSource("DataSet1", data);
        report.DataSources.Add(dataSource);
        
        // 如果有圖片,添加參數(shù)
        if (!string.IsNullOrEmpty(imagePath))
        {
            ReportParameter param = new ReportParameter("ImagePath", imagePath);
            report.SetParameters(param);
        }
        
        // 渲染報(bào)表
        byte[] pdfBytes = report.Render("PDF");
        
        // 打印PDF(需要PDF打印支持)
        // 或者使用ReportViewer控件預(yù)覽
        PrintReportDirectly(report);
    }
    
    private void PrintReportDirectly(LocalReport report)
    {
        PrintDialog printDialog = new PrintDialog();
        
        if (printDialog.ShowDialog() == DialogResult.OK)
        {
            // 創(chuàng)建打印文檔
            PrintDocument printDoc = new PrintDocument();
            printDoc.PrinterSettings = printDialog.PrinterSettings;
            
            // 打印報(bào)表
            report.PrintToPrinter(printDialog.PrinterSettings,
                                 printDialog.PageSettings,
                                 false);
        }
    }
}

四、使用第三方庫(推薦用于復(fù)雜打?。?/h2>

1.使用iTextSharp打印PDF

using iTextSharp.text;
using iTextSharp.text.pdf;

public class PdfPrinter
{
    public void CreateAndPrintPdf(string text, string imagePath)
    {
        // 創(chuàng)建PDF文檔
        Document document = new Document();
        
        // 保存PDF文件
        PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
        document.Open();
        
        // 添加文本
        Paragraph paragraph = new Paragraph(text);
        document.Add(paragraph);
        
        // 添加圖片
        if (!string.IsNullOrEmpty(imagePath))
        {
            Image image = Image.GetInstance(imagePath);
            image.ScaleToFit(400, 400);
            document.Add(image);
        }
        
        document.Close();
        
        // 打印PDF
        PrintPdf("output.pdf");
    }
    
    private void PrintPdf(string pdfPath)
    {
        Process process = new Process();
        process.StartInfo.FileName = pdfPath;
        process.StartInfo.Verb = "print";
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.Start();
    }
}

2.使用PDFsharp

using PdfSharp.Drawing;
using PdfSharp.Pdf;
using PdfSharp.Pdf.Printing;

public class PdfSharpPrinter
{
    public void PrintWithPdfSharp(string text, XImage image)
    {
        // 創(chuàng)建PDF文檔
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);
        
        // 繪制文本
        gfx.DrawString(text, font, XBrushes.Black,
                      new XRect(50, 50, page.Width - 100, page.Height - 100),
                      XStringFormats.TopLeft);
        
        // 繪制圖片
        if (image != null)
        {
            gfx.DrawImage(image, 50, 150, 200, 200);
        }
        
        // 保存臨時(shí)文件并打印
        string tempFile = Path.GetTempFileName() + ".pdf";
        document.Save(tempFile);
        
        // 使用PDF查看器打印
        PdfFilePrinter printer = new PdfFilePrinter(tempFile);
        printer.Print();
        
        // 清理臨時(shí)文件
        File.Delete(tempFile);
    }
}

五、實(shí)用擴(kuò)展方法

using System.Drawing;
using System.Drawing.Printing;

public static class PrintingExtensions
{
    // 擴(kuò)展方法:直接打印字符串
    public static void Print(this string text, Font font = null)
    {
        font = font ?? new Font("宋體", 12);
        
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += (sender, e) =>
        {
            e.Graphics.DrawString(text, font, Brushes.Black, 
                                 e.MarginBounds.Left, 
                                 e.MarginBounds.Top);
        };
        
        pd.Print();
    }
    
    // 擴(kuò)展方法:直接打印圖片
    public static void Print(this Image image, bool fitToPage = true)
    {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += (sender, e) =>
        {
            Rectangle rect = fitToPage ? e.MarginBounds : 
                new Rectangle(100, 100, image.Width, image.Height);
            e.Graphics.DrawImage(image, rect);
        };
        
        pd.Print();
    }
    
    // 批量打印
    public static void BatchPrint(this List<PrintJob> jobs, string printerName)
    {
        foreach (var job in jobs)
        {
            PrintDocument pd = new PrintDocument();
            pd.PrinterSettings.PrinterName = printerName;
            
            pd.PrintPage += (sender, e) =>
            {
                if (job.Text != null)
                    e.Graphics.DrawString(job.Text, job.Font, Brushes.Black, 100, 100);
                
                if (job.Image != null)
                    e.Graphics.DrawImage(job.Image, 100, 200);
            };
            
            pd.Print();
        }
    }
}

public class PrintJob
{
    public string Text { get; set; }
    public Image Image { get; set; }
    public Font Font { get; set; } = new Font("Arial", 12);
}

六、完整示例程序

using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;

namespace PrintDemo
{
    public partial class MainForm : Form
    {
        private PrintDocument printDoc;
        private string currentText;
        private Image currentImage;
        
        public MainForm()
        {
            InitializeComponent();
            
            printDoc = new PrintDocument();
            printDoc.PrintPage += PrintDoc_PrintPage;
        }
        
        private void btnPrintText_Click(object sender, EventArgs e)
        {
            currentText = txtContent.Text;
            currentImage = null;
            
            PrintDialog dlg = new PrintDialog();
            dlg.Document = printDoc;
            
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                printDoc.Print();
            }
        }
        
        private void btnPrintImage_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog dlg = new OpenFileDialog())
            {
                dlg.Filter = "圖片文件|*.jpg;*.png;*.bmp";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    currentImage = Image.FromFile(dlg.FileName);
                    currentText = null;
                    printDoc.Print();
                }
            }
        }
        
        private void btnPreview_Click(object sender, EventArgs e)
        {
            PrintPreviewDialog previewDlg = new PrintPreviewDialog();
            previewDlg.Document = printDoc;
            previewDlg.ShowDialog();
        }
        
        private void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            Graphics g = e.Graphics;
            Rectangle margins = e.MarginBounds;
            
            // 設(shè)置高質(zhì)量
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
            
            float yPos = margins.Top;
            
            // 打印文本
            if (!string.IsNullOrEmpty(currentText))
            {
                Font textFont = new Font("宋體", 11);
                SizeF textSize = g.MeasureString(currentText, textFont, margins.Width);
                
                g.DrawString(currentText, textFont, Brushes.Black, 
                           new RectangleF(margins.Left, yPos, margins.Width, textSize.Height));
                
                yPos += textSize.Height + 20;
            }
            
            // 打印圖片
            if (currentImage != null)
            {
                float availableHeight = margins.Bottom - yPos;
                float ratio = Math.Min(
                    (float)margins.Width / currentImage.Width,
                    availableHeight / currentImage.Height);
                    
                float width = currentImage.Width * ratio;
                float height = currentImage.Height * ratio;
                float x = margins.Left + (margins.Width - width) / 2;
                
                g.DrawImage(currentImage, x, yPos, width, height);
            }
        }
    }
}

七、最佳實(shí)踐建議

  1. 異常處理
try
{
    printDoc.Print();
}
catch (InvalidPrinterException ex)
{
    MessageBox.Show($"打印機(jī)錯(cuò)誤: {ex.Message}");
}
catch (Exception ex)
{
    MessageBox.Show($"打印錯(cuò)誤: {ex.Message}");
}
  1. 異步打印
public async Task PrintAsync(string content)
{
    await Task.Run(() =>
    {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += (sender, e) =>
        {
            e.Graphics.DrawString(content, new Font("Arial", 12), 
                                 Brushes.Black, 100, 100);
        };
        pd.Print();
    });
}
  1. 打印設(shè)置保存
public class PrintSettings
{
    public string PrinterName { get; set; }
    public bool Landscape { get; set; }
    public PaperSize PaperSize { get; set; }
    
    public void ApplyTo(PrintDocument doc)
    {
        doc.PrinterSettings.PrinterName = PrinterName;
        doc.DefaultPageSettings.Landscape = Landscape;
        if (PaperSize != null)
            doc.DefaultPageSettings.PaperSize = PaperSize;
    }
}

總結(jié)

選擇打印方法:

  1. 簡(jiǎn)單需求:使用PrintDocument
  2. WPF應(yīng)用:使用PrintDialog.PrintVisual()PrintDialog.PrintDocument()
  3. 復(fù)雜報(bào)表:使用RDLC或第三方庫(如iTextSharp)
  4. 批量打印:使用擴(kuò)展方法和隊(duì)列

注意事項(xiàng):

  • 始終處理打印異常
  • 大型圖片先調(diào)整大小再打印
  • 考慮使用異步打印避免UI阻塞
  • 提供打印預(yù)覽功能改善用戶體驗(yàn)

以上就是通過C#調(diào)取打印機(jī)打印文本和圖片的多種方法的詳細(xì)內(nèi)容,更多關(guān)于C#打印機(jī)打印文本和圖片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實(shí)現(xiàn)批量下載圖片到本地示例代碼

    C#實(shí)現(xiàn)批量下載圖片到本地示例代碼

    這篇文章主要給大家介紹了關(guān)于C#如何實(shí)現(xiàn)批量下載圖片到本地的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • C#中SortedSet的具體使用

    C#中SortedSet的具體使用

    SortedSet是 .NET Framework 4.0引入的一個(gè)泛型集合類,它實(shí)現(xiàn)了一個(gè)自動(dòng)排序的集合,內(nèi)部使用紅黑樹數(shù)據(jù)結(jié)構(gòu)來維護(hù)元素的有序性,下面就來介紹一下如何使用
    2025-08-08
  • C# 字符串按 ASCII碼 排序的方法

    C# 字符串按 ASCII碼 排序的方法

    這篇文章主要介紹了C# 字符串按 ASCII碼 排序的方法,需要的朋友可以參考下
    2017-04-04
  • C#調(diào)用QQ_Mail發(fā)送郵件實(shí)例代碼兩例

    C#調(diào)用QQ_Mail發(fā)送郵件實(shí)例代碼兩例

    這篇文章介紹了C#調(diào)用QQ_Mail發(fā)送郵件的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#創(chuàng)建及訪問網(wǎng)絡(luò)硬盤的實(shí)現(xiàn)

    C#創(chuàng)建及訪問網(wǎng)絡(luò)硬盤的實(shí)現(xiàn)

    本文主要介紹了C#創(chuàng)建及訪問網(wǎng)絡(luò)硬盤的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c#中的泛型委托詳解

    c#中的泛型委托詳解

    本文主要介紹了c#中的泛型委托。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • C#實(shí)現(xiàn)FTP文件下載及超時(shí)控制詳解

    C#實(shí)現(xiàn)FTP文件下載及超時(shí)控制詳解

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)FTP文件下載及超時(shí)控制的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • C#中累加器函數(shù)Aggregate用法實(shí)例

    C#中累加器函數(shù)Aggregate用法實(shí)例

    這篇文章主要介紹了C#中累加器函數(shù)Aggregate用法,實(shí)例分析了C#中累加器的實(shí)現(xiàn)與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#中協(xié)變逆變的實(shí)現(xiàn)

    C#中協(xié)變逆變的實(shí)現(xiàn)

    本文詳細(xì)介紹了C#中協(xié)變逆變,通過示例展示了協(xié)變和逆變?cè)诜盒徒涌诤臀兄械膽?yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • C#代碼實(shí)現(xiàn)PDF文檔操作類

    C#代碼實(shí)現(xiàn)PDF文檔操作類

    本篇文章給大家介紹使用pdf文檔操作C#代碼,本文代碼非常簡(jiǎn)單,代碼附有注釋,需要注意的是:需要添加itextsharp.dll引用才可以正常通過編譯,感興趣的朋友可以參考下
    2015-10-10

最新評(píng)論

彩票| 平潭县| 佛教| 克拉玛依市| 白河县| 灵山县| 陈巴尔虎旗| 沧州市| 蕲春县| 巴马| 凯里市| 威远县| 庄河市| 类乌齐县| 越西县| 五大连池市| 文山县| 临武县| 呼玛县| 昌邑市| 子长县| 原平市| 泊头市| 司法| 洱源县| 永川市| 浦县| 水富县| 准格尔旗| 册亨县| 筠连县| 阳东县| 二连浩特市| 房山区| 沙田区| 资阳市| 左权县| 叙永县| 阿拉善盟| 锡林浩特市| 两当县|